Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: =?UTF-8?B?8J+HtfCfh7FKYWNlayBNYXJjaW4gSmF3b3Jza2nwn4e18J+HsQ==?= Newsgroups: pl.comp.programming Subject: Alg. kompresji LZW Date: Sat, 8 Feb 2025 20:05:36 +0100 Organization: Energo Kod Lines: 31 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: individual.net PLH1ZSALrEPg9/L+fUEY6gUl+ROyW2LZWN80RuMpI/IvNyATbL Cancel-Lock: sha1:zA5MA/BJKspH+62CVaUuQ+8tYDA= sha256:MIGFEBUUeLuBfQus2kz/S1OElNcokkeXSB6V8vf0gII= User-Agent: Mozilla Thunderbird Content-Language: pl-PL Xref: csiph.com pl.comp.programming:35008 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