Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужен самый быстрый алгоритм поиска 
:(
    Опции темы
dimon444
Дата 25.7.2011, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 25.7.2011

Репутация: нет
Всего: нет



Назовите самые  быстрые алгоритмы поиска подтекста в большом объеме текста. Например : дано 12 000 000 писем , нужно чтобы максимум за 0.5 сек 60 юзеров могли получить результат поиска ?????????????????????
PM MAIL   Вверх
gahcep
Дата 15.8.2011, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 26.1.2009

Репутация: нет
Всего: нет



Алгоритмов на самом деле огромное количество, поэтому стоит просто поискать...

Но интерес лично у меня вызвало дерево ван Эмде Боаса. 

Скорее всего вам такое не подойдет, но тем не менее ...

Дерево ван Эмде Боаса - это ассоциативный массив, который позволяет хранить целые числа в диапазоне [0; U), где U = 2k, или, числа, состоящие не более чем из k бит. Главная особенность этой структуры — выполнение всех операций за время O(log(log(U))) независимо от количества хранящихся в ней элементов. Список поддерживающихся операций: insert, remove, getmin, getmax, find, findnext, findprevious.

Естественно, раз такая скорость, в жертву приносится память... 

Кстати, с числами легко можно связать любую информацию, хоть и текстовую.

В вашем случае можно изучить каким образом реализован алгоритм и на его основе сделать свой, хтя на мой взгляд, лучше посмотреть Кнута smile



Это сообщение отредактировал(а) gahcep - 15.8.2011, 07:35
PM MAIL   Вверх
esperanto
Дата 15.8.2011, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 31.5.2003

Репутация: 2
Всего: 4



Зачем смотреть Кнута?
--------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET
PM MAIL   Вверх
gahcep
Дата 16.8.2011, 08:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 26.1.2009

Репутация: нет
Всего: нет



Зачем читать Кнута? Хм... даже затрудняюсь ответить... Может быть потому, что там есть почти все ответы на то, какие алгоритмы есть, как они используются и приведены примеры. А если посмотреть содержимое томов с номерком более чем 3, то еще можно подчерпнуть что-нибудь интересное. 

Алгоритм поиска подтекста в тексте = алгоритм поиска подстроки в строке, не, а?

Добавлено через 3 минуты и 48 секунд
dimon444, у вас в вопросе две проблемы. 

Первая - это алгоритм поиска строки в подстроке - одна задача, давно решенная. 

Вторая - в скорости работы с жестким диском (или что у вас там используется), а точнее в оптимизации чтения с него, ибо 12 000 000 писем перед тем, как обработать еще открыть надо...


PM MAIL   Вверх
esperanto
Дата 16.8.2011, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 31.5.2003

Репутация: 2
Всего: 4



Цитата(gahcep @ 15.8.2011,  07:33)
Алгоритмов на самом деле огромное количество, поэтому стоит просто поискать...

Но интерес лично у меня вызвало дерево ван Эмде Боаса. 

Скорее всего вам такое не подойдет, но тем не менее ...

Дерево ван Эмде Боаса - это ассоциативный массив, который позволяет хранить целые числа в диапазоне [0; U), где U = 2k, или, числа, состоящие не более чем из k бит. Главная особенность этой структуры — выполнение всех операций за время O(log(log(U))) независимо от количества хранящихся в ней элементов. Список поддерживающихся операций: insert, remove, getmin, getmax, find, findnext, findprevious.

Естественно, раз такая скорость, в жертву приносится память... 

Кстати, с числами легко можно связать любую информацию, хоть и текстовую.

В вашем случае можно изучить каким образом реализован алгоритм и на его основе сделать свой, хтя на мой взгляд, лучше посмотреть Кнута smile

Кстати, с числами легко можно связать любую информацию, хоть и текстовую
"

Конечно, текст размером в х, кодируется числом размером тетта(х) ваш алгоритм, обеспечит поиск за время 
тета(лог лог( 10 в степени х) что посути лог(х) и не надо никакого асоциатавного поиска.


-----------
Кнут здесь не подойдет, он достаточно давно и тяжело написан. Есть современные и более понятные учебники.
--------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET
PM MAIL   Вверх
volatile
Дата 16.8.2011, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 2
Всего: 85



Цитата(esperanto @  16.8.2011,  09:42 Найти цитируемый пост)
Кнут здесь не подойдет, он достаточно давно и тяжело написан.

Дядька до сих пор пишет, и исправляет уже изданные тома.
5-й том он планирует закончить только к 2015 году.
На домашней страничке у него, есть исправления ошибок и дополнительные главы для первых 3-ех томов, не вошедшие в издание.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0953 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.