| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Алгоритм поиска похожих слов |
| Автор: Dimich 7.10.2004, 09:49 |
| Подскажите пожалуйста алгоритм поиска похожих слов "МАЛИНА" = "КАЛИНА" = "МАЛИНКА" |
| Автор: Akina 7.10.2004, 10:35 | ||
|
| Автор: Dimich 7.10.2004, 10:46 |
| А как реализована CommonSubString () ? Что она делает и как? |
| Автор: Akina 7.10.2004, 11:01 |
| Ищет общую подстроку максимальной длины... http://algolist.manual.ru/search/index.php |
| Автор: maxim1000 7.10.2004, 11:37 |
| можно использовать динамическое программирование впрочем смайлик еще не означает, что это шутка как-то в институте меня попросили сделать программку, иллюстрирующую применение принципа динамического программирования, ну предполагалась какая-то абстрактная задача, а я сделал вот что: программа набирает словарь из некоторого количества слов, а потом при вводе одного из них пытается исправить такие ошибки: 1. пользователь промахнулся, попал по другой букве 2. пользователь слишком слабо нажал на кнопку (пропала буква) 3. пользователь попал по двум кнопкам одновременно (появилась лишняя буква) если под искажениями слов понимается описанная выше группа из трех случаев, то, возможно, пригодится следующая идея: при вводе слова оно по очереди сравнивается со всеми словами из словаря, выбирается наиболее близкое мера отличия строится следующим образом: 1. делаем двумерный массив, по вертикали пишем введенное слово, по горизонтали - слово из словаря 2. в каждую ячейку записываем меру отличия соответствующей буквы введенного слова от буквы из словарного словаря 3. ищем кратчайший путь от точки (1,1) к точке (n,N) с таким свойством: из каждой ячейки можно двигаться вправо, вверх и вправо-вверх (сооветственно: лишняя буква, пропущенная буква, искаженная буква) если взглянуть на этот рисунок, все становится понятно: ![]() и вот ссылочка по более полному описанию применения динамического программирования: http://www.dcs.shef.ac.uk/~stu/com326/ |