Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Теория - Какой алгоритм поиска максимальной общей подстроки выбрать для коротких строк?

Ответить
Настройки темы
Теория - Какой алгоритм поиска максимальной общей подстроки выбрать для коротких строк?

Аватара для seriych

Старожил


Сообщения: 182
Благодарности: 42


Конфигурация

Профиль | Отправить PM | Цитировать


Я так понял продвинутые алгоритмы дают преимущество на длинных строках, у меня же строки короткие. Я программирую от случая к случаю, поэтому реализация любого алгоритма затянется и могу потратить впустую кучу времени на реализацию неподходящего. Может кто сталкивался и сразу подскажет, какой оптимальнее в моем случае.

Есть массив M из нескольких тысяч строк, каждая длиной в среднем около 10-15 символов (сильно длинных нет, максимум около 30 символов). Берем какую-то другую строку s (длина тоже в среднем 10-15, максимум 30). Нужно найти элемент M[i], в котором достигается максимальная общая подстрока с s. Данную операцию повторить для массива S из ~100000 разных строк s.
Пробовал для каждой M[i] искать максимальную с s подстроку по алгоритму с википедии - оно вроде работает, но слишком долго. Читал про другие алгоритмы- везде вроде пишут, что выгода достигается при длинных строках. У меня же строки короткие, просто задача много раз повторяется, вот и думаю, что напрямую эти алгоритмы нет смысла применять.
Или можно объединить все строки из M в одну, уставив какой-то символ-разделитель между каждой строкой и уже тогда применять другой алгоритм? Имеет ли это смысл, если строки в S всё равно короткие и найти надо для каждой?

-------
* Книгой можно не только стаканчик с лапшой накрывать. ©


Отправлено: 21:40, 31-03-2014

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


seriych, у Кнута смотрели — что он говорит по этому поводу?

Отправлено: 03:52, 01-04-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Цитата seriych:
Или можно объединить все строки из M в одну, уставив какой-то символ-разделитель между каждой строкой и уже тогда применять другой алгоритм? Имеет ли это смысл, если строки в S всё равно короткие и найти надо для каждой? »
Если string::find, то сложность Unspecified, but generally up to linear in length()-pos times the length of the sequence to match (worst case).

Если у вас много памяти, то можно попробовать разбить все строки из M на подстроки и в map, потом уже по нему искать. Это только идея

Отправлено: 10:34, 01-04-2014 | #3


Аватара для seriych

Старожил


Сообщения: 182
Благодарности: 42

Профиль | Отправить PM | Цитировать


Цитата Iska:
у Кнута смотрели — что он говорит по этому поводу? »
Нет, не советовался с ним

-------
* Книгой можно не только стаканчик с лапшой накрывать. ©


Отправлено: 18:38, 01-04-2014 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Попробуйте. Найдёте полезное — нам расскажете.

Отправлено: 20:27, 01-04-2014 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Теория - Какой алгоритм поиска максимальной общей подстроки выбрать для коротких строк?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Алгоритм поиска драйвера GuitarFan Поиск драйверов, прошивок и руководств 1 14-12-2013 20:04
VBS/WSH/JS - [решено] Поиск подстроки в файле с последующей заменой подстроки (многопользовательский досту) pogo Скриптовые языки администрирования Windows 12 06-12-2013 17:59
Руль для компьютера - какой выбрать? Rinaldo Игры 11 31-10-2011 12:55
Сервис коротких урлов, каков алгоритм? Igor_I Вебмастеру 24 24-07-2009 18:44
Какой движек выбрать для интранета ? krec Вебмастеру 3 01-04-2008 12:15




 
Переход