Book contents
- Frontmatter
- Introduction
- Dedication
- Contents
- I Classroom-tested Projects
- The Game of “Take Away”
- Pile Splitting Problem: Introducing Strong Induction
- Generalizing Pascal: The Euler Triangles
- Coloring and Counting Rectangles on the Board
- Fun and Games with Squares and Planes
- Exploring Recursion with the Josephus Problem: (Or how to play “One Potato, Two Potato” for keeps)
- Using Trains to Model Recurrence Relations
- Codon Classes
- How to change coins, M&M's, or chicken nuggets: The linear Diophantine problem of Frobenius
- Calculator Activities for a Discrete Mathematics Course
- Bulgarian solitaire
- Can you make the geodesic dome?
- Exploring Polyhedra and Discovering Euler's Formula
- Further Explorations with the Towers of Hanoi
- The Two Color Theorem
- Counting Perfect Matchings and Benzenoids
- Exploring Data Compression via Binary Trees
- A Problem in Typography
- Graph Complexity
- II Historical Projects in Discrete Mathematics and Computer Science
- III Articles Extending Discrete Mathematics Content
- IV Articles on Discrete Mathematics Pedagogy
- About the Editor
Exploring Data Compression via Binary Trees
from I - Classroom-tested Projects
- Frontmatter
- Introduction
- Dedication
- Contents
- I Classroom-tested Projects
- The Game of “Take Away”
- Pile Splitting Problem: Introducing Strong Induction
- Generalizing Pascal: The Euler Triangles
- Coloring and Counting Rectangles on the Board
- Fun and Games with Squares and Planes
- Exploring Recursion with the Josephus Problem: (Or how to play “One Potato, Two Potato” for keeps)
- Using Trains to Model Recurrence Relations
- Codon Classes
- How to change coins, M&M's, or chicken nuggets: The linear Diophantine problem of Frobenius
- Calculator Activities for a Discrete Mathematics Course
- Bulgarian solitaire
- Can you make the geodesic dome?
- Exploring Polyhedra and Discovering Euler's Formula
- Further Explorations with the Towers of Hanoi
- The Two Color Theorem
- Counting Perfect Matchings and Benzenoids
- Exploring Data Compression via Binary Trees
- A Problem in Typography
- Graph Complexity
- II Historical Projects in Discrete Mathematics and Computer Science
- III Articles Extending Discrete Mathematics Content
- IV Articles on Discrete Mathematics Pedagogy
- About the Editor
Summary
Summary
We investigate the Lempel-Ziv '77 data compression algorithm by considering an analogous algorithm for efficiently embedding strings in binary trees. This project includes a discussion of this comparison with two optional addenda on error correction and decompression, followed by exercises and solutions.
Notes for the instructor
Students in discrete mathematics often have a dual interest in computer science. This project succinctly combines these two areas. Data compression can be viewed as a discrete mathematics topic with many ramifications for computer scientists. Students who have completed one or two semesters of computer science (in particular, who are familiar with trees) may be eager to implement the algorithms discussed in C++, Java, or another object-oriented programming language.
The Lempel-Ziv '77 data compression algorithm was introduced in [1]. Analysis of the multiplicity matching parameter of suffix trees was presented in the present author's Ph.D. thesis; an abridged journal version with many more references to the literature can be found in [3]. An error correcting version of LZ'77 is outlined in [2].
Bibliography
[1] Lempel, A. and J. Ziv. “A universal algorithm for sequential data compression,” IEEE Transactions on Information Theory 23 (1977) 337–343.
[2] Lonardi, S., W. Szpankowski, and M. D. Ward. “Error resilient LZ'77 data compression: algorithms, analysis, and experiments,” IEEE Transactions on Information Theory 53 (2007) 1799–1813.
- Type
- Chapter
- Information
- Resources for Teaching Discrete MathematicsClassroom Projects, History Modules, and Articles, pp. 143 - 150Publisher: Mathematical Association of AmericaPrint publication year: 2009