Reduced Offset Lempel Ziv, (ROLZ) ist ein Datenkompressionsalgorithmus, der von Ross Williams entwickelt wurde. Es handelt sich um ein Wörterbuchverfahren, das auf LZ77 aufbaut, jedoch im Unterschied zu diesem kontextbezogene Methoden nutzt. Softwaretechnisch wurde das Konzept erstmals von Malcolm Taylor in dessen Datenkompressionsprogramm RK (beziehungsweise WinRK) umgesetzt. Mit dem QUAD-Kompressor[1] von Ilia Muraviev existiert eine freie Implementierung (unter LGPL).
Versionen des Algorithmus
Der Versuch, die möglichen Werte der Offsets zu reduzieren, wurde von vielen Autoren unternommen. Bemerkenswert sind hier:
LZFG-C2 (Edward R. Fiala, Daniel H. Greene, 1989)
Übereinstimmungen werden nicht als Paare aus Länge und Offset gespeichert, sondern durch eine spezielle Marke, die zu einer bestimmten Zeile im Wörterbuch gehören.
LZRW4 (Ross Williams, 1991)
Der LZRW4-Algorithmus von Ross Williams entspricht dem ROLZ. Obwohl der Autor keine brauchbare Implementation vornahm, verwirklicht sein Beispielkompressor in groben Zügen den ROLZ-Algorithmus.
LZP1–LZP4 (Charles Bloom, 1995)
LZP ist ein Wörterbuchkompressor, dessen Codierung der Übereinstimmungen vollständig ohne Offsets arbeitet. Dazu wird die Länge der Übereinstimmung mit der auf das letzte Auftreten des vorausgehenden Kontexts folgenden Zeichenkette in einer Liste gespeichert.
LZ77-PM (Dzung T. Hoang, Philip M. Long, Jeffrey Scott Vitter, 1995)
Dieser Algorithmus unterscheidet sich von ROLZ nur dadurch, dass der einer Übereinstimmung vorausgehende Kontext von variabler Länge sein darf, anstatt eines Kontextes festgelegten Grades.
ROLZ2–ROLZ3 (Malcolm Taylor, 2005)
Diese Algorithmen sind Weiterentwicklungen des ursprünglichen ROLZ:
- ROLZ2 soll maximale Entpackgeschwindigkeiten sicherstellen
- ROLZ3 zielt auf maximale Packraten mit vernachlässigbaren Geschwindigkeitsverlusten beim Entpacken
Weblinks
- msoftware.co.nz – Website von RK und WinRK
- quad.sourceforge.net – Datenkompressionsprogramm mit quelloffener Implementierung (unter LGPL)
- ross.net/compression – Beschreibungen und Implementierungen von LZRW1–LZRW4. Der Artikel zu LZRW4 enthält eine theoretische Abhandlung über die Vorteile von ROLZ.
- cbloom.com/src/index_lz.html – Beschreibungen und Implementationen diverser Varianten von LZP und LZCB
- arturocampos.com/ac_lzp.html – sehr nützliche Beschreibung des LZP-Algorithmus von Arturo Campos