Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::


Создать новую тему Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.01.2011, 18:51
Новичок

Отправить личное сообщение для NixonKNR Посмотреть профиль Найти все сообщения от NixonKNR
 
Регистрация: 29.01.2011
Сообщений: 4

Поиск общих подстрок двух текстов(||строк)
Всем привет!
Я нашел 2 алгоритма решающих эту задачу:
1. Алгоритм Шинглов - http://www.codeisart.ru/python-shingles-algorithm/
2. Наивный алгоритм - http://ru.wikipedia.org/wiki/%D0%9D%...BE%D0%BA%D0%B0
Для полного счастья мне нужен еще один)
Замечание: Общая подпоследовательность не то же самое что общая подстрока. Общие элементы должны идти подряд.
Если кто знает, подскажите, пожалуйста. Заранее спасибо!
Ответить с цитированием
  #2  
Старый 30.01.2011, 04:13
гocть

 
Сообщений: n/a

через суффиксные деревья можно.
пусть s, t - строки. строишь дерево для строки s$t#, где $, # - спецсимволы, не встречающиеся в исходных строках. обходишь дерево, помечаешь в поддеревье каких вершин есть $ или #, потом выбираешь самую глубокую из вершин, содержащих и $ и #, это и есть ответ.
Ответить с цитированием
  #3  
Старый 30.01.2011, 17:03
Новичок

Отправить личное сообщение для NixonKNR Посмотреть профиль Найти все сообщения от NixonKNR
 
Регистрация: 29.01.2011
Сообщений: 4

спс за идею!
Суфиксные деревья - интересное предложение. Скорее всего мне подойдет. Сейчас начну изучать эту область. Правда вконце думаю будут проблемы с выделением(подчеркиванием) совпавшего текста...ну и хрен с ним)
Ответить с цитированием
  #4  
Старый 30.01.2011, 17:26
Новичок

Отправить личное сообщение для NixonKNR Посмотреть профиль Найти все сообщения от NixonKNR
 
Регистрация: 29.01.2011
Сообщений: 4

Сообщение от NixonKNR
Правда вконце думаю будут проблемы с выделением(подчеркиванием) совпавшего текста...ну и хрен с ним)
а не, сор. "Номер суффикса является индексом его начала в тексте"
Короче, кому надо, вот подробное и графическое описание алгоритма, предложенного человеком, который способен трезво мыслить в начале четвертого
http://yury.name/internet/01ianote.pdf 3 стр.

Последний раз редактировалось NixonKNR, 30.01.2011 в 17:48.
Ответить с цитированием
  #5  
Старый 31.01.2011, 16:37
Новичок

Отправить личное сообщение для cat_baxter Посмотреть профиль Найти все сообщения от cat_baxter
 
Регистрация: 16.11.2010
Сообщений: 6

Вот это не подойдет?

http://code.google.com/p/google-diff-match-patch/
Ответить с цитированием
  #6  
Старый 31.01.2011, 21:33
гocть

 
Сообщений: n/a

и где там решение озвученной задачи?

для diff'ов всяких вообще нужна наибольшая общая *подпоследовательность*, а не подстрока, и ТС ясно сказал, что нужна подстрока, а не наоборот.
Ответить с цитированием
  #7  
Старый 05.02.2011, 18:52
Новичок

Отправить личное сообщение для NixonKNR Посмотреть профиль Найти все сообщения от NixonKNR
 
Регистрация: 29.01.2011
Сообщений: 4

что значит mach и path я особо не разбирался, а вот diff, судя по "Demo diff", решает поставленную задачу. Осталось его запустить...
Ответить с цитированием
Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
пересечение двух плоскостей roman Вычислительная геометрия 5 17.12.2010 20:44
Поиск зависимости двух наборов данных Гость Вычислительная геометрия 2 16.02.2009 18:34
Поиск различий в двух деревьях RAPTORGrrr Математические алгоритмы 1 14.09.2008 00:18
Поиск различий в двух деревьях RAPTORGrrr Графы 0 15.08.2008 22:15
Пересечение двух отрезков в 3d. незарегистрированный Математические алгоритмы 1 25.01.2007 11:17