Lempel-Ziv-Markov-Algorithmus

Lempel-Ziv-Markov-Algorithmus

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-Ketten-Algorithmus — 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… …   Deutsch Wikipedia

  • 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… …   Deutsch Wikipedia

  • Ziv — Jacob Ziv (hebräisch ‏יעקב זיו‎, auch Yaakov Ziv; * 27. November 1931 in Tiberias, Palästina) ist ein israelische Elektroingenieur und hat im Bereich der Informationstheorie bedeutende Grundlagenforschung geleistet. Zusammen mit Abraham Lempel… …   Deutsch Wikipedia

  • Jacob Ziv — (hebräisch ‏יעקב זיו‎, auch Yaakov Ziv; * 27. November 1931 in Tiberias, Palästina) ist ein israelischer Elektroingenieur und hat im Bereich der Informationstheorie bed …   Deutsch Wikipedia

Share the article and excerpts

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