Задача об оптимальном префиксном коде с сохранением порядка. Монотонность точки разреза — различия между версиями
м |
м |
||
Строка 31: | Строка 31: | ||
Функция a удовлетворяет '''неравенству четырехугольника(quadrangle inequation)''', если | Функция a удовлетворяет '''неравенству четырехугольника(quadrangle inequation)''', если | ||
: <tex>\forall i \le i' \le j \le j' : a[i][j] + a[i'][j'] \le a[i'][j] + a[i][j']</tex> | : <tex>\forall i \le i' \le j \le j' : a[i][j] + a[i'][j'] \le a[i'][j] + a[i][j']</tex> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
}} | }} | ||
Строка 52: | Строка 46: | ||
{{Лемма | {{Лемма | ||
| statement= | | statement= | ||
− | Если w удовлетворяет неравенству четырехугольника | + | Если w удовлетворяет неравенству четырехугольника, то D также удовлетворяет неравенству четырехугольника, то есть: |
<tex>\forall i \le i' \le j \le j' : D[i][j] + D[i'][j'] \le D[i'][j] + D[i][j'] </tex> | <tex>\forall i \le i' \le j \le j' : D[i][j] + D[i'][j'] \le D[i'][j] + D[i][j'] </tex> | ||
| proof= | | proof= | ||
− | + | База индукции: при <tex> i = i' </tex> или <tex> j = j' </tex>, очевидно, неравенство выполняется. | |
Рассмотрим два случая: | Рассмотрим два случая: | ||
Строка 65: | Строка 59: | ||
## <tex> k \le j </tex> | ## <tex> k \le j </tex> | ||
##: <tex> D[i][j] + D[j][j'] \le w[i][j] + D[i][k-1] + D[k][j] + D[j][j'] </tex> - по определению <tex> D[i][j] </tex> | ##: <tex> D[i][j] + D[j][j'] \le w[i][j] + D[i][k-1] + D[k][j] + D[j][j'] </tex> - по определению <tex> D[i][j] </tex> | ||
− | ##: <tex> \le w[i][j'] + D[i][k-1] + D[k][j] + D[j][j'] </tex> - | + | ##: <tex> \le w[i][j'] + D[i][k-1] + D[k][j] + D[j][j'] </tex> - так как <tex> w[i][j'] >= w[i][j] </tex> |
##: <tex> \le w[i][j'] + D[i][k-1] + D[k][j'] </tex> - по индукционному предположению для D | ##: <tex> \le w[i][j'] + D[i][k-1] + D[k][j'] </tex> - по индукционному предположению для D | ||
##: <tex> \le D[i][j'] </tex> - по определению <tex> D[i][j'] </tex> | ##: <tex> \le D[i][j'] </tex> - по определению <tex> D[i][j'] </tex> | ||
Строка 86: | Строка 80: | ||
Монотонность точки разреза | Монотонность точки разреза | ||
| statement= | | statement= | ||
− | Если w удовлетворяет неравенству четырехугольника | + | Если w удовлетворяет неравенству четырехугольника, то: |
<tex> \forall i \le j : R[i][j] \le R[i][j+1] \le R[i+1][j+1] </tex> | <tex> \forall i \le j : R[i][j] \le R[i][j+1] \le R[i+1][j+1] </tex> | ||
| proof= | | proof= | ||
− | В случае i = j неравенство, очевидно, выполняется. Рассматриваем случай i < j и только случай R[i][j] \le R[i][j+1](вторая часть доказывается аналогично): | + | В случае <tex> i = j </tex> неравенство, очевидно, выполняется. Рассматриваем случай <tex> i < j </tex> и только случай <tex> R[i][j] \le R[i][j+1] </tex>(вторая часть доказывается аналогично): |
− | Так как R[i][j] - максимальный индекс, в котором достигается минимум, достаточно показать, что: | + | Так как <tex> R[i][j] </tex> - максимальный индекс, в котором достигается минимум, достаточно показать, что: |
− | : <tex> \forall i < k \le k' \le j: [D_{k'}[i][j] \le D_k[i][j]] \Rightarrow [D_{k'}[i][j+1] \le D_k[i][j+1]] </tex> | + | : <tex> \forall i < k \le k' \le j: [D_{k'}[i][j] \le D_k[i][j]] \Rightarrow [D_{k'}[i][j+1] \le D_k[i][j+1]] </tex> - фактически, это означает что если на отрезке <tex> i..j </tex> разрез оптимальнее по <tex> k' </tex>, чем по <tex> k </tex>, то он также будет оптимальнее и на отрезке <tex> i..j+1 </tex>. |
Докажем более сильное неравенство: | Докажем более сильное неравенство: | ||
: <tex> \forall i < k \le k' \le j: D_k[i][j] - D_{k'}[i][j] \le D_k[i][j+1] - D_{k'}[i][j+1] </tex> | : <tex> \forall i < k \le k' \le j: D_k[i][j] - D_{k'}[i][j] \le D_k[i][j+1] - D_{k'}[i][j+1] </tex> | ||
Строка 101: | Строка 95: | ||
: <tex> (w[i][j] + D[i][k-1] + D[h][j]) + (w[i][j+1] + D[i][k'-1] + D[k][j+1]) \le (w[i][j+1] + D[i][k-1] + D[k][j+1]) + (w[i][j] + D[i][k'-1] + D[k'][j]) </tex> - по определению D | : <tex> (w[i][j] + D[i][k-1] + D[h][j]) + (w[i][j+1] + D[i][k'-1] + D[k][j+1]) \le (w[i][j+1] + D[i][k-1] + D[k][j+1]) + (w[i][j] + D[i][k'-1] + D[k'][j]) </tex> - по определению D | ||
− | : <tex> D[k][j] + D[k'][j+1] \ | + | : <tex> D[k][j] + D[k'][j+1] \le D[k][j+1] + D[k'][j] </tex> - получили неравенство четырехугольника для <tex> k \le k' \le j \le j+1 </tex>, что является верным из предыдущей леммы. Теорема доказана. |
}} | }} |
Версия 21:50, 20 декабря 2010
Содержание
Определение
Определение: |
Оптимальный префиксный код с сохранением порядка(англ. order-preserving code, alphabetic code).
Пусть у нас есть алфавит . Каждому символу сопоставим его код . Кодирование называется оптимальным префиксным с сохранением порядка, если соблюдаются:
|
Алгоритм
Алгоритм нахождения оптимального префиксного кода с сохранением порядка. Решим задачу, используя ДП на подотрезках. Пусть в ячейке
хранится минимальная стоимость кодового дерева для отрезка алфавита от i до j.Тогда пересчет
будет происходить так:
Базой динамики будет
Добавочный член
возникает от того что каждым объединением двух подотрезков мы увеличиваем высоту дерева на 1, а значит, и длины всех кодов символов также увеличиваются на 1.Тогда такое наибольшее k, на котором достигается этот минимум, называется точкой разреза для отрезка
. Пусть в ячейке хранится точка разреза на отрезке .Монотонность точки разреза
Для доказательства этого сперва докажем несколько лемм.
Определение: |
Функция a удовлетворяет неравенству четырехугольника(quadrangle inequation), если
|
Лемма: |
w удовлетворяет неравенству четырехугольника. |
Доказательство: |
Заметим, что , так как - простая арифметическая сумма. Тогда: |
Лемма: |
Если w удовлетворяет неравенству четырехугольника, то D также удовлетворяет неравенству четырехугольника, то есть:
|
Доказательство: |
База индукции: при или , очевидно, неравенство выполняется.Рассмотрим два случая:
|
Теорема (Монотонность точки разреза): |
Если w удовлетворяет неравенству четырехугольника, то:
|
Доказательство: |
В случае неравенство, очевидно, выполняется. Рассматриваем случай и только случай (вторая часть доказывается аналогично):Так как - максимальный индекс, в котором достигается минимум, достаточно показать, что:
Докажем более сильное неравенство:
|