Kody Huffmana: przykłady, aplikacje
W tej chwili niewiele osób myśli o tym fakcie,jak działa kompresja. W porównaniu do przeszłości, korzystanie z komputera stało się znacznie łatwiejsze. I praktycznie każda osoba pracująca z systemem plików używa archiwów. Ale niewiele osób myśli o tym, jak działają i na jakiej zasadzie jest kompresja plików. Pierwszą wersją tego procesu były kody Huffmana i nadal są używane w różnych popularnych archiwach. Wielu użytkowników nie myśli nawet, jak łatwo skompresować plik i zgodnie z którym systemem działa. W tym artykule przyjrzymy się, jak kompresja jest wykonywana, jakie niuanse pomagają przyspieszyć i uprościć proces kodowania, a my odkryjemy, na czym polega zasada konstruowania drzewa kodującego.
Historia algorytmu
Pierwszy algorytm skutecznykodowanie informacji elektronicznych było kodem zaproponowanym przez Huffmana w połowie XX wieku, a mianowicie w 1952 roku. Jest to obecnie główny podstawowy element większości programów stworzonych do kompresowania informacji. Obecnie jednym z najpopularniejszych źródeł wykorzystujących ten kod są archiwa ZIP, ARJ, RAR i wiele innych.
Zasada wydajnego kodowania
Podstawą algorytmu Huffmana jest schemat,Pozwala na zastąpienie najbardziej prawdopodobnych, najczęściej spotykanych symboli z kodami systemu binarnego. A te, które są mniej powszechne, są zastępowane dłuższymi kodami. Przejście na długie kody Huffmana następuje dopiero po wykorzystaniu przez system wszystkich minimalnych wartości. Ta technika pozwala zminimalizować długość kodu każdego znaku oryginalnej wiadomości jako całości.
Kod Huffmana, przykład
Aby zilustrować algorytm, weźmygraficzna wersja konstrukcji drzewa kodu. Aby ta metoda była skuteczna, warto wyjaśnić definicję niektórych wartości niezbędnych dla koncepcji tej metody. Zestaw łuków i węzłów, które są kierowane z węzła do węzła, jest zwykle nazywany wykresem. Samo drzewo jest wykresem z zestawem określonych właściwości:
- każdy węzeł może zawierać nie więcej niż jeden łuk;
- jeden z węzłów musi być korzeniem drzewa, to znaczy, żadne łuki nie powinny w ogóle wchodzić;
- jeśli zaczniesz poruszać się od rdzenia wzdłuż łuków, ten proces powinien pozwolić ci całkowicie wpaść do któregokolwiek z węzłów.
Algorytm konstrukcji drzewa Huffmana
Budowanie kodu Huffmana odbywa się z literalfabet wejściowy. Tworzona jest lista tych węzłów, które są wolne w przyszłym drzewie kodu. Waga każdego węzła na tej liście powinna być taka sama, jak prawdopodobieństwo wystąpienia litery wiadomości odpowiadającej temu węzłowi. W tym samym czasie, spośród kilku wolnych węzłów przyszłego drzewa, wybiera się ten, który waży najmniej. Co więcej, jeśli minimalne wskaźniki są obserwowane w kilku węzłach, możesz dowolnie wybrać dowolną z par.
Poprawiona wydajność kompresji
Aby zwiększyć wydajność kompresji, musiszczas na zbudowanie drzewa kodu, aby wykorzystać wszystkie dane dotyczące prawdopodobieństwa liter w konkretnym pliku dołączonym do drzewa i zapobiec ich rozproszeniu w dużej liczbie dokumentów tekstowych. Jeśli najpierw przejdziesz przez ten plik, możesz natychmiast obliczyć statystyki określające, jak często znajdują się litery z obiektu, który ma być skompresowany.
Przyspieszenie procesu kompresji
Aby przyspieszyć algorytm, definicję literPowinien być przeprowadzany nie w zależności od prawdopodobieństwa wystąpienia litery, ale według częstotliwości jej występowania. Dzięki temu algorytm staje się łatwiejszy, a praca z nim jest znacznie przyspieszona. Pozwala to również uniknąć operacji związanych z zmiennymi przecinkami i podziałami.
Wniosek
Kody Huffmana - proste i ugruntowanealgorytm, który jest nadal używany przez wiele znanych programów i firm. Jego prostota i klarowność umożliwiają uzyskanie efektywnych wyników kompresji plików o dowolnej wielkości i znaczne zmniejszenie zajmowanej przestrzeni dyskowej. Innymi słowy, algorytm Huffmana jest długo studiowanym i dobrze opracowanym schematem, którego znaczenie nie zmniejsza się do dnia dzisiejszego.