Алгоритм поиска оличий

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Алгоритм поиска оличий

Re: Алгоритм поиска оличий

Albor » 07 апр 2008, 18:18

Если кому интересно, то полностью удовлетворяет данную тему алгоритм, называемый "Расстояние Левенштейна". Почитать о нём можно в Википедии, там и исходники есть на разных языках программирования. Снимаю шляпу перед математиками. Решение просто и гениально.

Re: Алгоритм поиска оличий

Albor » 17 мар 2008, 16:48

Собственно, к подобному я и пришёл: поиск самой длинной совпадающей подстроки, а после - рекурсивный вызов для двух подстрок до и после найденной. Спасибо.

Re: Алгоритм поиска оличий

Хыиуду » 17 мар 2008, 11:43

Ну, вариант может быть такой: рекурсивно разбивать строку на токены, каждый из которых присутствует в исходной строке, и то, что находится вне их.
Например, исходная строка - "алгоритм", проверяемая - "алгобитм". Первый токен будет "алго", второй "б", третий "итм". Потом уже смотрим взаимное расположение, определяем, что за ошибка была допущена: если два токена слиты вместе - пропущена буква и т.д.

Re: Алгоритм поиска оличий

Albor » 13 мар 2008, 15:27

Алгоритм должен определить все позиции в которых нет совпадения текста, естественно слова должны анализироваться на порядок следования. Если слово полностью не совпадает это ошибка одного типа, если пропущена буква, то другого и т.д. Нужно найти ошибки. Вопрос не стоит в том чтобы выдать готовый алгоритм. Больше нужны идеи как это решить.

Re: Алгоритм поиска оличий

Хыиуду » 13 мар 2008, 11:09

Тогда напишите, что должно быть выходными данными.

Re: Алгоритм поиска оличий

Albor » 12 мар 2008, 14:35

Нет, реакция на столь хорошее знание языка будет считаться как ошибка и данное слово будет зачёркнуто. Пончалу, мне эта задача казалась довольно простой, но именно пример со словом ЕЩЁ, почему-то тоже влез в голову и ослажнил жизнь. Кстати, это слово некоторые пишут как ЕСЧЁ.

Re: Алгоритм поиска отличий

Uphiander » 12 мар 2008, 13:19

Albor писал(а):Встала проблема сранения двух строк, но не просто нужно их сравнить, а найти отличия. Входные данные: эталонная строка и строка вводимая пользователем. В строке введённой пользователем нужно найти ошибки. Как подойти к решению? Нужно учесть что строки могут отличаться и по длине и по содержанию (от пользователя можно всего ожидать), возможны и "механические" ошибки при вводе, например, пропущен пробел между словами. Да, пользователю даётся возможность полностью ввести и, если нужно, отредактировать текст, проверка должна производиться только тогда, когда пользователь решил, что можно проверять. То есть, я хочу сказать, что ошибки не должны отлавливаться в процессе ввода. STL-вский алгоритм mistmatch, может быть и можно применить, но в контексте другого алгоритма.
Э-э... нужно создавать полный список ошибок? Скажем, тстовая строка "Ещё", пользователь ввел "Исчо" - что должно быть на выходе?

Алгоритм поиска отличий

Albor » 11 мар 2008, 16:10

Встала проблема сранения двух строк, но не просто нужно их сравнить, а найти отличия. Входные данные: эталонная строка и строка вводимая пользователем. В строке введённой пользователем нужно найти ошибки. Как подойти к решению? Нужно учесть что строки могут отличаться и по длине и по содержанию (от пользователя можно всего ожидать), возможны и "механические" ошибки при вводе, например, пропущен пробел между словами. Да, пользователю даётся возможность полностью ввести и, если нужно, отредактировать текст, проверка должна производиться только тогда, когда пользователь решил, что можно проверять. То есть, я хочу сказать, что ошибки не должны отлавливаться в процессе ввода. STL-вский алгоритм mistmatch, может быть и можно применить, но в контексте другого алгоритма.

Вернуться к началу