Задача об оптимальном префиксном коде с сохранением порядка. Монотонность точки разреза — различия между версиями
м |
м |
||
Строка 12: | Строка 12: | ||
== Алгоритм == | == Алгоритм == | ||
Алгоритм нахождения оптимального префиксного кода с сохранением порядка. | Алгоритм нахождения оптимального префиксного кода с сохранением порядка. | ||
− | Решим задачу, используя ДП на подотрезках. Пусть в ячейке D[i][j] хранится минимальная стоимость кодового дерева для отрезка алфавита от i до j. | + | Решим задачу, используя ДП на подотрезках. Пусть в ячейке <tex> D[i][j] </tex> хранится минимальная стоимость кодового дерева для отрезка алфавита от i до j. |
− | Тогда пересчет D[i][j] будет происходить так: | + | Тогда пересчет <tex> D[i][j] </tex> будет происходить так: |
<tex> D[i][j] = \min\limits_{k = i}^{j - 1} \left ( D[i][k] + D[k + 1][j] \right ) + \sum\limits_{t = i}^{j} f_t </tex> | <tex> D[i][j] = \min\limits_{k = i}^{j - 1} \left ( D[i][k] + D[k + 1][j] \right ) + \sum\limits_{t = i}^{j} f_t </tex> | ||
− | Добавочный член <tex> \sum\limits_{t = i}^{j} f_t </tex> возникает от того что каждым объединением двух подотрезков мы увеличиваем высоту дерева на 1, а значит, и длины всех кодов символов <tex> c_i | + | Добавочный член <tex> \sum\limits_{t = i}^{j} f_t </tex> возникает от того что каждым объединением двух подотрезков мы увеличиваем высоту дерева на 1, а значит, и длины всех кодов символов <tex> c_i .. c_j </tex> также увеличиваются на 1. |
− | Тогда такое k, на котором достигается этот минимум, называется точкой разреза для отрезка [i, j]. Пусть в ячейке R[i][j] хранится точка разреза на отрезке [i, j]. | + | Тогда такое k, на котором достигается этот минимум, называется точкой разреза для отрезка <tex> [i, j] </tex>. Пусть в ячейке <tex> R[i][j] </tex> хранится точка разреза на отрезке <tex> [i, j] </tex>. |
== Монотонность точки разреза == | == Монотонность точки разреза == |
Версия 17:22, 16 декабря 2010
Содержание
Определение
Определение: |
Оптимальный префиксный код с сохранением порядка(англ. order-preserving code, alphabetic code).
Пусть у нас есть алфавит . Каждому символу сопоставим его код . Кодирование называется оптимальным префиксным с сохранением порядка, если соблюдаются:
|
Алгоритм
Алгоритм нахождения оптимального префиксного кода с сохранением порядка. Решим задачу, используя ДП на подотрезках. Пусть в ячейке
хранится минимальная стоимость кодового дерева для отрезка алфавита от i до j.Тогда пересчет
будет происходить так:
Добавочный член
возникает от того что каждым объединением двух подотрезков мы увеличиваем высоту дерева на 1, а значит, и длины всех кодов символов также увеличиваются на 1.Тогда такое k, на котором достигается этот минимум, называется точкой разреза для отрезка
. Пусть в ячейке хранится точка разреза на отрезке .Монотонность точки разреза
Теорема (Монотонность точки разреза): |
Доказательство: |
???? |