Я искал алгоритм Виттера, который позволяет кодировать и декодировать символы. Реализация динамического алгоритма кодирования Хаффмана. Вот это набросок из Википедии:Может кто-нибудь объяснить алгоритм Виттера?
Для каждого символа, переданного как передатчик и приемник выполнить процедуру обновления:
- Если текущий символ Нью-Йорк Таймс, добавьте два дочерних узлов в Нью-Йорк Таймс узла. Один из них будет новым узлом NYT, другой - листовым узлом для нашего символа. Увеличьте вес для нового листового узла и старого NYT и перейдите к шагу 4. Если текущий символ не NYT, перейдите к листовому узлу символа.
- Если этот узел не имеет наибольшее число в блоке, замените его с узлом, имеющим наибольшее число, за исключением, если этот узел является его родителем
- Увеличение веса для текущего узла
- Если это не корень узел перейдите к родительскому узлу, затем перейдите к шагу 2. Если это корень, завершите.
Есть некоторые необъяснимые вещи, например, что является самым большим числом в блоке? Когда менять и что менять? когда увеличить вес узлов и узлов? а также этот алгоритм описан в «goto's», как включить его в if else и loop statement?
Читали [оригинальная бумага Уиттера в] (http://www.ittc.ku.edu/~jsv/Papers/Vit89.algojournalACMversion.pdf)? Если да, то что именно необъяснимо? –
@ LiorKogan hmmm –