Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.129.247.196] |
|
Сообщ.
#1
,
|
|
|
Привет всем.
Как можно реализовать программу по вычислению расстояния Левенштейна с линейным требованием памяти? Т.е. само вычисление - понятно, что за счёт использования всего двух строк таблицы, можно сделать линейным по требованию к памяти, а вот нахождение самих действий над словом, которое ищется при помощи бэктрэкинга, я не могу понять, можно ли сделать линейным по требованию к памяти. Даже если использовать 2 строки и хранить сам путь в каждой ячейке вместе с расстоянием, то всё равно получается квадратичное требование к памяти на последнем шаге, что печально. Спасибо заранее за соображения. |
Сообщ.
#2
,
|
|
|
На http://algolist.manual.ru есть алгоритм Машека и Патерсона, который, если я правильно понял, можно применить для нахождения расстояния Левенштейна с асимптотической вычислительной сложностью O(n) и асимпотическими требованиями по памяти O(n2 / log n)...
|
Сообщ.
#3
,
|
|
|
Спасибо! Надо глянуть.
Добавлено Цитата experimenter @ Спасибо! Надо глянуть. Да, алгоритм чуть посложнее будет, чем у Левенштейна... |
Сообщ.
#4
,
|
|
|
Ух! Мясо! Ничерта не понял. Если ещё часа два помучаюсь, может до меня начнёт конечно доходить смысл. Я даже написал свою версию функции Левенштейна, причем она даже работала, но Алгоритм Машека и Патерсона, до меня пока не доходит.
Посоветуйте пожалуйста что почитать, в инете на русском можно, на эту тему?! Лучше с азов. Я имею в виду математическую лингвистику. |