Изменения

Перейти к: навигация, поиск

Алгоритмы LZ77 и LZ78

4 байта добавлено, 19:05, 4 сентября 2022
м
rollbackEdits.php mass rollback
| <tex>\fbox{$ab$}acabacabadaca</tex> || <tex>a</tex> || <tex>\langle 2, 1, c \rangle</tex> ||
|-
| <tex>\fbox{$abac$}abacabadaca</tex> || <tex>abacaba</tex> || <tex>\langle 4, 7, d \rangle</tex> || Здесь выгодно сделать так, что <tex>offset > < length</tex>
|-
| <tex>abacaba\fbox{$cabad$}aca</tex> || <tex>a</tex> || <tex>\langle 2, 1, c \rangle</tex> || Последовательность <tex>aca</tex> уже встречалась, но она находится за пределами окна, и <tex>\mathrm{LZ77}</tex> её не находит
dict[buffer + s[i]] = dict.length + 1 <font color=green>// добавляем слово в словарь</font>
buffer = "" <font color=green>// сбрасываем буфер</font>
'''if''' not (buffer != ""is empty): <font color=green>// если буффер не пуст - этот код уже был, нужно его добавить в конец словаря</font> last_ch = buffer[-1] .peek() <font color=green>// берем последний символ буффера, как "новый" символ</font> buffer = buffer[:-1] .pop() <font color=green>// удаляем последний символ из буфера</font>
ans.push({dict[buffer], last_ch}) <font color=green>// добавляем пару в ответ</font>
'''return''' ans
1632
правки

Навигация