Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Алгоритм поиска общих частей строк

Автор myst, апреля 14, 2009, 19:59

0 Пользователи и 1 гость просматривают эту тему.

myst

Как я понял, у нас на форуме есть действующие программисты. :)
Ищу сабж. Пока безрезультатно. Где рыть?



GaLL

Цитата: myst от апреля 14, 2009, 19:59
Как я понял, у нас на форуме есть действующие программисты. :)
Ищу сабж. Пока безрезультатно. Где рыть?

В смысле, наибольшую общую подстроку двух строк?


myst

Объясняю. :)
Есть, значит, у нас список строк: предприниматель, законодатель, предстать, верстать, устать.
Нужна функция, выдающая список общих частей, а также информацию, у скольких строк данная общая часть встречается. В нашем случае это будут: пред (2), атель (2), стать (3).
Примерно так. :)

злой

Entre los individuos, como entre las naciones, el respeto al derecho ajeno es la paz.   - Benito Juárez

Алексей Гринь

Если массивы данных не большие - всё просто, почарово сравнивать, не вижу проблемы.
Если массивы гигабайтные, то там да, без мудрёного алгоритма не обойтись :)
肏! Τίς πέπορδε;

O

Цитата: Алексей Гринь от апреля 14, 2009, 20:37
почарово сравнивать

Настоящие лингвисты не работают с однобайтными кодировками!  8)   ::)
gdy padła granica, pękły więzień bramy,
w ten dzień wyzwolenia: siedemnasty września

Алексей Гринь

Цитата: "O" от
Настоящие лингвисты не работают с однобайтными кодировками!  8)   ::)
У настоящих лингвистов чар определён в 2-4 байта 8)
В C# например так.
肏! Τίς πέπορδε;

O

Цитата: Алексей Гринь от апреля 14, 2009, 21:13
В C# например так.
Но ведь писателю на С# не нужно искать никаких алгоритмов. Пользуются теми, которые зашиты в библиотеку, а другими — не положено!  :green:
gdy padła granica, pękły więzień bramy,
w ten dzień wyzwolenia: siedemnasty września

Алексей Гринь

Цитата: "O" от
Но ведь писателю на С# не нужно искать никаких алгоритмов. Пользуются теми, которые зашиты в библиотеку, а другими — не положено!
С чего это вдруг? Что за бред?
肏! Τίς πέπορδε;

O

gdy padła granica, pękły więzień bramy,
w ten dzień wyzwolenia: siedemnasty września

Алексей Гринь

Цитата: "O" от
Ага, смайликов не замечаем, да?  :)
Не нужно искать алгоритмы, если во фреймворке нет даже класса Set, оный наличествует в большинстве библиотек общего назначения для "хацкерного" СиПоПа?
8)
肏! Τίς πέπορδε;

Алексей Гринь

Не очень просто понимаю юмор фразы. Практически у всех языков есть стандартные библиотеки с уже готовыми алгоритмами. СиШарп не исключение.
肏! Τίς πέπορδε;

myst


myst

Цитата: "Алексей Гринь" от
Если массивы данных не большие - всё просто, почарово сравнивать, не вижу проблемы.
Это ж не просто сравнение. Да и изобретать самокат тоже лень. Хочется готовенького. :)

GaLL

Цитата: myst от апреля 14, 2009, 20:20
Объясняю. :)
Есть, значит, у нас список строк: предприниматель, законодатель, предстать, верстать, устать.
Нужна функция, выдающая список общих частей, а также информацию, у скольких строк данная общая часть встречается. В нашем случае это будут: пред (2), атель (2), стать (3).
Примерно так. :)

Но ведь здесь есть много других подстрок, например, -пр-.

myst

Цитата: "GaLL" от
Но ведь здесь есть много других подстрок, например, -пр-.
Я же не робат — всё не углядел. :)
Длину кусочков я планирую задавать в параметрах.

GaLL

Просто постановка задачи неясна. :) И, как правильно заметил Алексей Гринь, важен объем обрабатываемой информации.

GaLL

Цитата: myst от апреля 14, 2009, 22:19
Длину кусочков я планирую задавать в параметрах.

Если, например, надо посчитать статистику для кусков конкретной длины k, то это можно эффективно сделать при помощи хэширования. Получится линейный относительно суммарной длины всех слов алгоритм.

myst

Цитата: "GaLL" от
Просто постановка задачи неясна. :)
Как?! Всё ещё не ясна?!

Цитата: "GaLL" от
И, как правильно заметил Алексей Гринь, важен объем обрабатываемой информации.
Размер входного списка около 70 000 слов.

myst

Цитата: "GaLL" от
Если, например, надо посчитать статистику для кусков конкретной длины k, то это можно эффективно сделать при помощи хэширования. Получится линейный относительно суммарной длины всех слов алгоритм.
Так-так! А подробнее? :)

Алексей Гринь

Цитата: "myst" от
Размер входного списка около 70 000 слов.
Это для себя нужно?
Если так, могу набросать быдлоалгоритм, который будет работать долго, но сделает своё дело :)
肏! Τίς πέπορδε;

myst

Цитата: "Алексей Гринь" от
Это для себя нужно?
Да.

Цитата: "Алексей Гринь" от
Если так, могу набросать быдлоалгоритм, который будет работать долго, но сделает своё дело :)
Я и сам могу набросать, была бы идея. :)

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр