Я пытаюсь использовать алгоритм минимальной суммы Viterbi, который пытается найти путь через кучу узлов, который минимизирует общее расстояние Хэмминга (причудливый термин для «xor two numbers и count the result bits») против некоторого фиксированного ввода.При использовании динамического программирования, фиксируя весь путь для минимальной суммы?
Я понимаю, как использовать DP для вычисления минимального расстояния в целом, но у меня возникли проблемы с его использованием также захватить соответствующий путь, соответствующий минимальному расстоянию.
Кажется, что memoizing путь на каждом узле будет действительно интенсивным в памяти. Существует ли стандартный способ решения этих проблем?
Edit:
http://i.imgur.com/EugiEWG.jpg
Вот пример шпалеры с тем, что я говорю. Общая идея состоит в том, чтобы найти путь через решетку, которая наиболее точно эмулирует входную битовую строку с минимальной ошибкой (измеренной путем минимизации общего расстояния Хэмминга или количества несогласованных бит).
Как вы можете видеть, первый фрагмент моей строки ввода - 01, и я могу пересечь его в столбце 1 решетки. Следующий кусок - 10, и я могу перемещаться туда в колонке 2. Следующий фрагмент - 11. До сих пор. Следующий фрагмент - 10, что является проблемой, потому что я не могу дойти до этого состояния, откуда я сейчас, поэтому я должен перейти к следующей лучшей вещи (00), а остальное можно заполнить отлично.
Но это может усложниться. Мне нужно было бы как-то получить соответствующий путь к минимальному расстоянию Хэмминга.
(Пункт этого упражнения состоит в том, что решетка представляет собой ACTUALLY действительные переходы, тогда как входная строка - это то, что вы получаете через телекоммуникационную связь и можете получить искаженное и иметь неправильные биты здесь и там. Эта программа пытается выяснить, что входная строка ДОЛЖНА быть минимизирована).
Это как раз техника «следовать по пути назад», которая считается во многих полях непомерно дорогой. Вместо того, чтобы хранить границу DP, она требует хранения всех прошлых, что является пространственным квадратичным относительно того, что вам нужно только для численного решения. Существуют способы, которые не меняют асимптотической сложности времени. –
Я добавил картинку для ясности. –
@JonathanRyder, каков реальный масштаб вашей проблемы? – harold