В момента малко хора мислят за това,как работи компресията. В сравнение с миналото, използването на персонален компютър става много по-лесно. И на практика всеки, който работи с файловата система, използва архиви. Но малко хора мислят за това как работят и за какъв принцип е компресирането на файловете. Първата версия на този процес бяха кодовете Хъфман и те се използват днес в най-различни популярни архиватори. Много потребители дори не мислят колко е лесно компресиране на файлове се извършва и се работи по схема. В тази статия ще разгледаме как компресията е това, което нюанси допринесе за ускоряване и опростяване на процеса на кодиране, както и да видим какво принципа на кодиране на дърво.
История на алгоритъма
Първият алгоритъм за ефективенкодирането на електронната информация е кодът, предложен от Хуфман в средата на ХХ век, а именно през 1952 г. Понастоящем той е основният основен елемент на повечето програми, създадени за компресиране на информация. В момента един от най-популярните източници, използващи този код, са ZIP, ARJ, RAR архиви и много други.
Принципът на ефективно кодиране
Базата за алгоритъма Huffman е схема,Тя позволява да се заменят най-вероятните, най-често срещаните символи с кодовете на двоичната система. И тези, които са по-рядко срещани, се заменят с по-дълги кодове. Преходът към дълги Huffman кодове се извършва само след като системата използва всички минимални стойности. Тази техника ви позволява да сведете до минимум дължината на кода за всеки знак на оригиналното съобщение като цяло.
Кодът на Хуфман, пример
За да илюстрираме алгоритъма, нека вземемграфична версия на конструкцията на кодово дърво. За да се използва този метод, е полезно да се изясни определението на някои стойности, необходими за концепцията на този метод. Наборът от дъги и възли, които са насочени от възел към възел, обикновено се нарича графика. Самото дърво е графика с набор от определени свойства:
- във всеки възел не може да влиза повече от една от дъгите;
- един от възлите трябва да бъде коренът на дървото, т.е. никоя дъга не трябва да влезе в него;
- ако от корена започне да се движи по дъги, този процес трябва да позволи да се получи напълно в някой от възлите.
Алгоритъм за изграждане на дърво според Huffman
Изграждането на Huffman кода е направено от буквиот входната азбука. Ще бъде създаден списък с тези възли, които са свободни в бъдещото кодово дърво. Теглото на всеки възел в този списък трябва да бъде същото като вероятността за възникване на буквата на съобщението, съответстващо на тази възлова точка. В този случай сред няколкото свободни възли на бъдещото дърво се избира най-малкото, което тежи най-малко. В същото време, ако минималните индикатори се наблюдават в няколко възли, тогава е възможно да се избере свободно някоя от двойките.
Подобряване на ефективността на компресията
За да се увеличи ефективността на компресията, е необходимовремето за създаване на кодово дърво да използва всички данни относно вероятността от букви, които се появяват в даден файл, прикачен към дърво, и да не им позволява да бъдат разпръснати по голям брой текстови документи. Ако първо минавате през този файл, можете веднага да изчислите статистиката за това колко често се срещат букви от обект, който ще се компресира.
Ускоряване на процеса на компресия
За ускоряване на алгоритъма, определението на буквитеНеобходимо е да се направи не върху показателите за вероятност за възникване на това или онова писмо и за честотата на неговото възникване. Благодарение на това алгоритъмът става по-опростен и работата с него значително се ускорява. Това също така избягва операциите, свързани с плаващи запетаи и разделяне.
заключение
Кодовете на Хуфман - прости и отдавна установениалгоритъм, който все още се използва от много известни програми и компании. Нейната простота и яснота правят възможно постигането на ефективни резултати от компресията за файлове от всякакъв размер и значително намаляват пространството, което заемат на диска за съхранение. С други думи, алгоритъмът Huffman е дълго проучена и добре проектирана схема, чието значение не намалява до този момент.