|
|
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, уважаемые форумчане. Давно интересует тема поиска любых повторяющихся последовательностей внутри какого либо потока данных. Вот например у нас есть строка в которой повторяются слова Hello, Fitness, World. Код: c# 1. Любой человек эти слова там найдет. Причем повторяющиеся последовательности могут быть любыми. Слова даны чтобы было нагляднее. А какие существуют алгоритмы нахождения повторяющихся последовательностей. Может кто сталкивался или слышал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 00:38 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
HomosumА какие существуют алгоритмы нахождения повторяющихся последовательностей. Может кто сталкивался или слышал?Подобное используется в алгоритмах сжатия данных без потерь . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 01:08 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
HomosumЛюбой человек эти слова там найдет. Причем повторяющиеся последовательности могут быть любыми. Слова даны чтобы было нагляднее. Не знаю какие методы используют архиваторы. Но данная постановка немного отличается от архивации. Я бы предложил для начала завернуть массив A в кольцо. И несколько раз поворачивать на 1 символ. Получим множество колец {B}. При каждом повороте отмечать количество совпадений A и {Bi}. в виде метрики {W}. В конце ранжируем кольца по метрикам и дальше - как фантазия подскажет. Это так... типа мозговой штурм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 02:50 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 09:20 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
maytonHomosumЛюбой человек эти слова там найдет. Причем повторяющиеся последовательности могут быть любыми. Слова даны чтобы было нагляднее. Не знаю какие методы используют архиваторы. Но данная постановка немного отличается от архивации.Там тоже выполняют поисх в исходном тексте повторяющиеся последовательности бит/символов и заменяет их на более короткие в зависимост от частоты повторения найденой последовательности. В обощенном виде... maytonЭто так... типа мозговой штурм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 10:07 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
Спасибо всем кто откликнулся! Но вот не совсем понятен подход некотрых алогримтов например этого Кодирование длин серий Пример со строкой (пример на php) Код: c# 1. дает результат Код: c# 1. Может для сжатия он и подходит, но меня интересует выделение повторяющихся последовательностей, а именно у нас есть ярковыраженная последовательность "fa". Может сам алгоритм не совсем правильно подобран под задачу или это особенность всех алгоритмов сжатия данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 16:23 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
Homosum, исходя из тестового примера который ты привел тебе run-length-encoding не нужен. Он тебе ничем не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 16:26 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
HomosumПример со строкой (пример на php) Код: sql 1. дает результат Код: sql 1. Может для сжатия он и подходит, но меня интересует выделение повторяющихся последовательностей, а именно у нас есть ярковыраженная последовательность "fa". Может сам алгоритм не совсем правильно подобран под задачу или это особенность всех алгоритмов сжатия данных? Лемпель и Зив в помощь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 16:42 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
В задаче не хватает начальных условий. После поиска повторов Hello, Fitness, World оставшиеся последовательности можно объявить цепочкой последовательностей из 1 символа и тоже смерджить. Отсюда следующий вопрос. А почему вообще нельзя было смерджить по 1 букве и объявить задачу решённой? Должен быть какой-то лимит на минимальную длину последовательности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 16:46 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
maytonВ задаче не хватает начальных условий. После поиска повторов Hello, Fitness, World оставшиеся последовательности можно объявить цепочкой последовательностей из 1 символа и тоже смерджить. Отсюда следующий вопрос. А почему вообще нельзя было смерджить по 1 букве и объявить задачу решённой? Должен быть какой-то лимит на минимальную длину последовательности. Согласен, извините. Вы правы. Даже в представленной последовательности есть сочетания символов, которые повторяются более двух раз. В данном случае подразумевается, что последовательность состоит минимум из 2-х символов, но при этом в контексте одной последовательности отдается предпочтение более длинной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 18:22 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
sphinx_mvHomosumПример со строкой (пример на php) Код: sql 1. дает результат Код: sql 1. Может для сжатия он и подходит, но меня интересует выделение повторяющихся последовательностей, а именно у нас есть ярковыраженная последовательность "fa". Может сам алгоритм не совсем правильно подобран под задачу или это особенность всех алгоритмов сжатия данных? Лемпель и Зив в помощь... Спасибо! Посмотрю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 18:23 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
Ахо-корасик - алгоритм Регексп вообще курить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 20:22 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
Да нет. Регексп ему тут не особо нужен. Тут с некоторой натяжкой можно пожонглировать расстоянием Левинштейна. Если-бы это было сравнение двух разных слов. Но здесь идёт тупое выкуривание справочника из потока символов. Кст. процесс поиска зависимостей внутри текста - дело увлекательное и ... бесконечное (!). В хорошем тексте помимо шенноновских эффектов есть еще и грамматика, морфология. Смысл. Стиль. Это всё можно использовать в разработке архиваторов и авто-генерации словарей как здесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 20:26 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
maytonДа нет. Регексп ему тут не особо нужен. Тут с некоторой натяжкой можно пожонглировать расстоянием Левинштейна. Если-бы это было сравнение двух разных слов. Но здесь идёт тупое выкуривание справочника из потока символов. Кст. процесс поиска зависимостей внутри текста - дело увлекательное и ... бесконечное (!). В хорошем тексте помимо шенноновских эффектов есть еще и грамматика, морфология. Смысл. Стиль. Это всё можно использовать в разработке архиваторов и авто-генерации словарей как здесь. Супер! Сколько умных слов! Надо будет почитать. Насчет выкуривания справочника из потока может быть это и есть самое емкое описание данной задачи. Текст и слова даны для наглядности, а смысл извлекать последовательности из любого потока данных. Хотя анализ текста тоже очень интересует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 23:45 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
Homosum, почитай здесь http://compression.ru/?linksurl= вот где ребята поднаторели в анализе текста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2013, 00:39 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
может я не прав, но разве тут не всё просто? индексируем каждый символ/байт (далее предполагается что символ равен байту). Таким образом получаем до 255 массивов с номерами элементов в тексте. потом : 1. берём элемент из списка 2. плюсуем к его индексам 1 (просто запоминаем, индексы не меняем) 3. Ищем символ у которого сойдутся хотя бы 2 индекса с полученными. 4. Если нашли - идём на пункт 2. иначе считаем количество закончившихся на этом символе комбинаций. если больше одной - запоминаем позицию начала комбинации (точнее позиции) 5. получившиеся комбинации сортируем по длине по убыванию. 6. проходим по каждой и смотрим не является ли она частью предыдущих (лучше сравнивать по позациям, если начинается позже, а заканчивается раньше - значит часть). Отсеиваем все такие совпадения... и вроде как готово 7. думаем что делать с пересечениями комбинаций. Если что не учёл, прошу не ругать сильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2013, 02:13 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
автор"fafaaaaaaaaaaaaa"; а именно у нас есть ярковыраженная последовательность "fa". хм, задача точно требует осмысления. на мой взгляд, ярковыраженная последовательность "аa". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2013, 11:39 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
Дмитавтор"fafaaaaaaaaaaaaa"; а именно у нас есть ярковыраженная последовательность "fa". хм, задача точно требует осмысления. на мой взгляд, ярковыраженная последовательность "аa". Там есть много чего ярко выраженного. В т.ч. нелинейная гистограмма появления символов. И, развивая идею неограниченного словаря я могу напомнить о существовании гипотетического архиватора который любое добавляемое слово тут-же объявляет словарным. Такой архиватор даёт бешеный рост архива на начальном этапе но на некой точке (не доходя до бесконечности) внезапно обнаруживает неплохой profit в виде ratio. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2013, 12:52 |
|
||
|
Поиск повторяющихся последовательностей
|
|||
|---|---|---|---|
|
#18+
maytonмогу напомнить о существовании гипотетического архиватора который любое добавляемое слово тут-же объявляет словарным.Почему гипотетического? В 1989-м я лично написал нечто подобное - надстройку на Форт-83, для хранения больших текстов. При этом особенности самого языка Форт таковы, что в нем это реализуется на раз-два, включая встроенные словари... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2013, 13:27 |
|
||
|
|

start [/forum/topic.php?fid=16&gotonew=1&tid=1341967]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
188ms |
get topic data: |
8ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 530ms |

| 0 / 0 |
