LZP: Różnice pomiędzy wersjami

[wersja nieprzejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
Linia 18:
 
Algorytm przebiega następująco:
# Inicjalizacja:
# '''N''' := długość kontekstu
#* '''sN''' := kodowanydługość tekstkontekstu
#* '''is''' := 0kodowany - bieżąca pozycjatekst
#* '''i''' := 0 - bieżąca pozycja
#* Wyzeruj tablicę '''L''' przechowującą ostatnie wystąpienia kontekstu
# Wypisz '''N''' pierwszych liter
# '''i''' := '''N''' - przesuń okno o '''N''' pozycji w lewo
Linia 29 ⟶ 30:
#* Jeśli '''P''' nie istnieje (nie było jeszcze takiego kontekstu) wypisz na wyjście pierwszy niezakodowany znak i przesuń okno w lewo o jedną pozycję; '''i''' := '''i''' + 1.
#* Jeśli '''P''' istnieje znajdź najdłuższy podciąg, tzn. '''s'''['''P''', '''P''' + '''k'''] = '''s'''['''i''', '''i''' + '''k'''], gdzie '''k''' to długość dopasowania:
#**# Jeśli '''k = 0''' (brak dopasowania), wypisz literę '''s'''['''i'''], przesuń okno w lewo o jedną pozycję; '''i''' := '''i''' + 1;
#**# Jeśli '''k > 0''' (dopasowanie istnieje), wypisz liczbę '''k''', przesuń okno o tyle pozycji w lewo; '''i''' := '''i''' + '''k''';
 
===Przykładowy krok kompresji - przypadek znalezienie prefiksu===