Lempel-Ziv-Markov chain-Algorithm

Lempel-Ziv-Markov chain-Algorithm

Lempel-Ziv-Markow-Algorithmus (LZMA) ist ein freier Datenkompressionsalgorithmus, der von Igor Pavlov seit 1998 entwickelt wird und vergleichsweise gute Kompressionsraten und eine hohe Geschwindigkeit beim Entpacken erreicht. Er ist benannt nach Abraham Lempel und Jacob Ziv, die den LZ77-Algorithmus entwickelt haben, und nach Andrei Andrejewitsch Markow, nach dem die Markow-Ketten benannt wurden.

Der Algorithmus arbeitet mit einem Wörterbuchverfahren ähnlich LZ77 und kann damit im Prinzip als Weiterentwicklung von Deflate gesehen werden.

Inhaltsverzeichnis

Merkmale

  • Sehr gute Kompression (durchschnittlich besser als bzip2)
  • Schnelle Dekompression – etwa 10 bis 20-Mal schneller als das Komprimieren (etwa zweimal schneller als bzip2)
  • Es werden sehr große Wörterbücher unterstützt (bis zu einem Gigabyte)
  • Der Bedarf an Arbeitsspeicher beim Packen beträgt ein Mehrfaches der Wörterbuchgröße
  • Für die Dekompression wird nur ein Bruchteil des zur Kompression verwendeten Arbeitsspeichers benötigt (unter Windows etwa 2 MB + Wörterbuchgröße)

Technik

LZMA nutzt eine verbesserte Variante des LZ77-Algorithmus, Markow-Ketten und einen Bereichskodierer (eine Umsetzung arithmetischen Kodierens) zur Entropiekodierung.

Der Code zum Entpacken von LZMA belegt in kompilierter Form üblicherweise nur etwa 5 KB. Die beim Entpacken benötigte Menge Arbeitsspeicher hängt von der Größe des beim Packen verwendeten Wörterbuchs ab. Durch die geringe Entpackergröße und den recht geringen Speicherbedarf (besonders mit kleineren Wörterbüchern) eignet sich das Verfahren besonders gut für eingebettete Anwendungen.

In der 7-Zip-Umsetzung werden verschiedene Varianten von Hash-Knoten, Binärbäumen und Patricia-Tries für die Wörterbuch-Suche genutzt.

Referenzimplementation

Die Referenzimplementation von LZMA ist als Teil des 7z-Formates in den 7-Zip-Programmen und dem LZMA-SDK erfolgt. Deren Quellcode ist als urheberrechtsfrei (public domain) veröffentlicht.

Die quelloffene Referenzbibliothek zur LZMA-Kompression wurde in C++ geschrieben und unterstützt Multithreading.

Portabilität der Referenzimplementation

Im Quelltext wird ausgedehnter Gebrauch Windows-spezifischer Eigenschaften gemacht, sodass bis zum Erscheinen einer Unix-kompatiblen Version einige Zeit verging, obwohl es sich um ein freies Programm handelt.

Zur Zeit gibt es zwei funktionierende Übertragungen auf Unix-ähnliche Plattformen:

  • p7zip ist eine aktuelle Portierung des Kommandozeilenwerkzeugs 7z, bietet also vollständige Unterstützung des 7z-Archivformates und dient oft als Unterbau für die 7z-Funktionen graphischer Werkzeuge mit 7z-Unterstützung wie beispielsweise Karchiver und WinRAR.
  • LZMA Utils sind eine Portierung des LZMA-Codes von 7-Zip, die unter Linux für die LZMA-Packmethode eine weitgehend gleiche Handhabung wie die etablierten gzip und bzip2 bieten, welche keine 7z-Archive unterstützen. LZMA Utils verwendet aber im Gegensatz zu p7zip meist eine ältere Version des LZMA-Codes.

Einsatz

Neben dem 7z-Archivformat wird LZMA von folgenden Programmen genutzt oder unterstützt:

  • Nullsoft Scriptable Install System
  • Inno Setup
  • CramFS und SquashFS – mit eingespielten Patches
  • Upack
  • UPX unterstützt seit Version 2.92 (beta) optional LZMA-Kompression
  • GRUB2 verwendet seit Juli 2008 standardmäßig nicht mehr LZO, sondern LZMA (vorerst aber nur für i386-pc).
  • WinZip unterstützt seit Version 12.0 LZMA als Kompressionsmethode für Zip-Archive
  • 7-Zip unterstützt seit Version 4.61 (beta) LZMA als Kompressionsmethode für Zip-Archive
  • Gentoo Linux verwendet LZMA-Packages in welchen der SourceCode der Metadistribution enthalten ist
  • Karchiver mit p7zip als Unterbau

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Lempel-Ziv-Markov chain algorithm — The Lempel Ziv Markov chain Algorithm (LZMA) is an algorithm used to perform data compression. It has been under development since 1998 [The SDK history file states that it was in development from 1996, and first used in 7 zip 2001 08 30. Aside… …   Wikipedia

  • Algoritmo de cadena Lempel-Ziv-Markov — Saltar a navegación, búsqueda El algoritmo de cadena Lempel Ziv Markov (Lempel Ziv Markov chain Algorithm LZMA) es un algoritmo para la compresión de datos. Obtenido de Algoritmo de cadena Lempel Ziv Markov Categorías: Wikipedia:Infraesbozos |… …   Wikipedia Español

  • Abraham Lempel — Infobox Scientist name = Abraham Lempel imagesize = 400 caption = Abraham Lempel in 2007 birth date = birth place = Lvov, Poland residence = flag|Israel work institution = Technion Israel Institute of Technology field = Information theory known… …   Wikipedia

  • Lossless data compression — is a class of data compression algorithms that allows the exact original data to be reconstructed from the compressed data. The term lossless is in contrast to lossy data compression, which only allows an approximation of the original data to be… …   Wikipedia

  • List of algorithms — The following is a list of the algorithms described in Wikipedia. See also the list of data structures, list of algorithm general topics and list of terms relating to algorithms and data structures.If you intend to describe a new algorithm,… …   Wikipedia

  • Dynamic Markov compression — (DMC) is a lossless data compression algorithm developed by Gordon Cormack and Nigel Horspool [1]. It uses predictive arithmetic coding similar to prediction by partial matching (PPM), except that the input is predicted one bit at a time (rather… …   Wikipedia

  • Список алгоритмов — Эта страница информационный список. Основная статья: Алгоритм Ниже приводится список алгоритмов, группированный по категориям. Более детальные сведения приводятся в списке структур данных и …   Википедия

  • Программируемые алгоритмы —       Служебный список статей, созданный для координации работ по развитию темы.   Данное предупреждение не устанавл …   Википедия

  • LZMA — LZMA, pour Lempel Ziv Markov chain Algorithm, est un algorithme de compression de données en développement jusqu à 2001 et utilisé dans le format 7z du programme 7 Zip et par StuffitX. Il utilise une compression avec dictionnaire assez similaire… …   Wikipédia en Français

  • LZMA2 — LZMA LZMA, pour Lempel Ziv Markov chain Algorithm, est un algorithme de compression de données en développement jusqu à 2001 et utilisé dans le format 7z du programme 7 Zip et par StuffitX. Il utilise une compression avec dictionnaire assez… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”