Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #35008

Alg. kompresji LZW

From 🇵🇱Jacek Marcin Jaworski🇵🇱 <jaworski1978@adres.pl>
Newsgroups pl.comp.programming
Subject Alg. kompresji LZW
Date 2025-02-08 20:05 +0100
Organization Energo Kod
Message-ID <m0po80Fo9ctU1@mid.individual.net> (permalink)

Show all headers | View raw


Czołem!

W ks. pt. "Alg., Struktury Danych i Techniki Prog." aut. Piotra 
Wróblewskiego, wyd. 6, przez Helion, w 2019r., na s. 349 podaje, cytat:

"Kodowanie w metodzie LZW można opisać algorytmem w pseudokodzie:

z = NULL;
while(czytaj znak k) // aż strumień wejściowy się wyczerpie
    if (zk ∈ SLOWNIK)
       // zk jest ciągiem złożonym z konkatenacji z i k
       z = zk;
    else{
       dodaj zk do S’OWNIKA
       wypisz kod dla z;
       z = k; // ostatni znak jest początkiem nowego ciągu
    }"

Mi się wydaje, że w przypadku spełnienia
if (zk ∈ SLOWNIK)
nie jest wypisywany kod dla z. Tak samo podaje 
https://pl.wikipedia.org/wiki/LZW .
Uzasadnienie moich wątpliwości:
W trakcie działania alg. buduje słownik i skompresowany strumień 
wynikowy (jest to "wypisz kod dla z;"). Wynikiem działania alg. jest ta 
para. Słownik bez strumienia ani strumień bez słownika są bez użyteczne. 
Ja widzę, że niektóre dane w strumieniu wynikowym są pominięte (gdy "zk 
∈ SLOWNIK").

Co o tym myślicie?
Jacek Marcin Jaworski

Back to pl.comp.programming | Previous | Next | Find similar


Thread

Alg. kompresji LZW 🇵🇱Jacek Marcin Jaworski🇵🇱 <jaworski1978@adres.pl> - 2025-02-08 20:05 +0100

csiph-web