ArticleslgStudy

computer science

Lempel–Ziv–Oberhumer

Lempel–Ziv–Oberhumer is a computer science topic covered in the lgStudy science library. This page brings together a partial reference excerpt, illustrations, worked examples, real-world applications and a short study plan, so you can understand Lempel–Ziv–Oberhumer rather than just read about it. In short: Lempel–Ziv–Oberhumer (LZO) is a lossless data compression algorithm that is focused on decompression speed. Design The original "lzop" implementation, released in 1996, was developed by Markus Franz Xaver Johannes Oberhumer, based on earlier algorithms by Abraham Lempel and Jacob Ziv.

Key takeaways

  • Lempel–Ziv–Oberhumer belongs to computer science; place it in that map before memorising details.
  • Learn the definition first, then one example that makes the definition concrete.
  • Connect Lempel–Ziv–Oberhumer to a quantity you can measure, compute or draw — that is where exam questions come from.
  • Reproduce the core statement of Lempel–Ziv–Oberhumer from memory before moving on to harder problems.

Reference excerpt

Lempel–Ziv–Oberhumer (LZO) is a lossless data compression algorithm that is focused on decompression speed.

Design The original "lzop" implementation, released in 1996, was developed by Markus Franz Xaver Johannes Oberhumer, based on earlier algorithms by Abraham Lempel and Jacob Ziv. The LZO library implements a number of algorithms with the following characteristics:

Higher compression speed compared to DEFLATE compression Very fast decompression Requires an additional buffer during compression (of size 8 kB or 64 kB, depending on compression level) Requires no additional memory for decompression other than the source and destination buffers Allows the user to adjust the balance between compression ratio and compression speed, without affecting the speed of decompression LZO supports overlapping compression and in-place decompression. As a block compression algorithm, it compresses and decompresses blocks of data. Block size must be the same for compression and decompression. LZO compresses a block of data into matches (a sliding dictionary) and runs of non-matching literals to produce good results on highly redundant data and deals acceptably with non-compressible data, only expanding incompressible data by a maximum of 1/64 of the original size when measured over a block size of at least 1 kB.

Implementations The reference implementation is written in ANSI C, and it has been made available as free software under the GNU General Public License. The copyright for the code is owned by Markus F. X. J. Oberhumer. It was originally published in 1996. Oberhumer has also written a command-line frontend called lzop. Versions of LZO are available for the Perl, Python and Java languages. Various LZO implementations are reported to work under AIX, Atari TOS (Atari ST), ConvexOS, IRIX, Linux, Mac OS, Nintendo 64, Palm OS, PlayStation, Solaris, SunOS, VxWorks, Wii, and Win32. FFmpeg's libavutil library includes its own implementation of LZO as a possible method for lossless video compression. FFmpeg's implementation of the decompressor is also used in OpenConnect in order to support LZO-compressed ESP packets sent by Juniper Networks and Pulse Secure VPN servers. The Linux kernel uses its LZO implementation in some of its features:

btrfs uses LZO as a possible compression method for file system compression. initrd and initramfs use LZO as a possible compression method for initial RAM drive compression. SquashFS uses LZO as a possible compression method for file system compression. zram uses LZO with run-length encoding called LZO-RLE as the default compression method for RAM drive compression. zswap uses LZO as the default compression method for virtual memory compression

References

External links LZO/LZOP Fanpage at the Wayback Machine (archived June 25, 2012) lzo-java on GitHub - Pure Java implementation of the liblzo2 LZO compression algorithm

Worked examples

Example 1 — a first encounter with Lempel–Ziv–Oberhumer

Start with the simplest possible case. Write down what Lempel–Ziv–Oberhumer claims or describes in one sentence, then invent the smallest concrete situation in which that sentence is true. In computer science, the smallest case is usually a single object, a single equation or a single measurement. Check that every symbol or term in your sentence has a meaning in that case.

Example 2 — changing one variable

Take the situation from Example 1 and change exactly one quantity: double it, halve it, or set it to zero. Predict what should happen to Lempel–Ziv–Oberhumer before you calculate. Comparing your prediction with the result is the fastest way to find out whether you understand the idea or only the words.

Example 3 — an exam-style question

Typical questions about Lempel–Ziv–Oberhumer ask you to (a) state it precisely, (b) apply it to given data, and (c) explain a limitation. Practise writing all three answers in under five minutes; the third part is what separates a full-mark answer from an average one.

Applications of Lempel–Ziv–Oberhumer

In research
Lempel–Ziv–Oberhumer appears in computer science research whenever the underlying quantities have to be modelled precisely. Papers usually cite it as a starting assumption and then explore where it breaks down.
In technology and industry
Engineering practice reuses Lempel–Ziv–Oberhumer in design rules, simulations and safety margins. Knowing the idea lets you read a specification sheet and understand why the numbers look the way they do.
In the classroom
Lempel–Ziv–Oberhumer is common in secondary-school and first-year university syllabi. It links to neighbouring topics C (programming language) libraries, Data compression, Free data compression software, so understanding it makes those chapters shorter.
In everyday life
Look for Lempel–Ziv–Oberhumer outside the textbook — in sport, cooking, traffic, electronics or the sky above you. An example you found yourself is remembered far longer than one you were given.
Ask Teacher Smith questions about this articleOpens your AI tutor with a question about “Lempel–Ziv–Oberhumer” →

Affiliate

Preply — study more efficiently by working with a personal tutor. 50% off.

How to study Lempel–Ziv–Oberhumer in 20 minutes

  1. Read the reference excerpt below once, without taking notes.
  2. Close the page and write down what Lempel–Ziv–Oberhumer means in your own words.
  3. Compare your version with the excerpt and mark what you missed.
  4. Work through the three examples above with pen and paper.
  5. Explain Lempel–Ziv–Oberhumer out loud to somebody else — or to Teacher Smith in the lgStudy chat.

Frequently asked questions

What is Lempel–Ziv–Oberhumer in simple terms?

Lempel–Ziv–Oberhumer (LZO) is a lossless data compression algorithm that is focused on decompression speed. Design The original "lzop" implementation, released in 1996, was developed by Markus Franz Xaver Johannes Oberhumer, based on earlier algorithms by Abraham Lempel and Jacob Ziv.

Why does Lempel–Ziv–Oberhumer matter?

Because it connects several computer science ideas at once: it gives you a definition you can apply, a quantity you can calculate, and a way to check whether a result is plausible.

How should I study Lempel–Ziv–Oberhumer?

Read the excerpt, restate it from memory, then work through the examples and applications listed on this page. The five-step study plan above takes about twenty minutes.

What does this page cover?

It gives you a compact reference excerpt plus original lgStudy explanations, examples, applications and study material on Lempel–Ziv–Oberhumer.

Tags

  • C (programming language) libraries
  • Data compression
  • Free data compression software
  • Lossless compression algorithms

Keep exploring