Een eenvoudig compressie-algoritme bereikt misschien niet de hoogste compressieverhoudingen, maar richt zich op implementatiegemak en lage rekenkundige overhead. De belangrijkste kenmerken van dergelijke algoritmen zijn onder meer:
* Eenvoud: Het kernalgoritme is gemakkelijk te begrijpen en in code te implementeren. Dit betekent vaak het gebruik van basisbewerkingen en datastructuren.
* Snelheid: Compressie en decompressie zijn relatief snel, waardoor de tijd die nodig is om gegevens te verwerken tot een minimum wordt beperkt. Dit is cruciaal voor real-time of near-real-time toepassingen.
* Lage geheugenvoetafdruk: Het algoritme heeft geen grote hoeveelheden geheugen nodig om te werken. Dit is belangrijk voor embedded systemen of omgevingen met beperkte bronnen.
* Minimale overhead: De hoeveelheid metagegevens of headerinformatie die aan de gecomprimeerde gegevens wordt toegevoegd, is klein. Grote headers kunnen de voordelen van compressie teniet doen, vooral bij kleine invoerbestanden.
* Vaste of beperkte complexiteit: De complexiteit van het algoritme (zowel in tijd als in ruimte) moet voorspelbaar zijn en bij voorkeur lineair of bijna lineair met de invoergrootte. Dit voorkomt onverwachte prestatieknelpunten.
* Verliesloos (vaak): Eenvoudigere algoritmen zijn vaak gericht op verliesvrije compressie, waardoor de originele gegevens perfect kunnen worden gereconstrueerd. Compressietechnieken met verlies zijn doorgaans complexer.
Veel voorkomende voorbeelden van eenvoudige compressie-algoritmen en -technieken die deze kenmerken demonstreren, zijn onder meer:
* Run-Length Encoding (RLE): Vervangt reeksen identieke tekens door een telling en het teken. Zeer eenvoudig te implementeren en snel, maar alleen effectief als er lange runs met identieke karakters zijn.
* Woordenboekcodering (eenvoudig): Creëert een klein, statisch woordenboek van veel voorkomende woorden of zinsdelen en vervangt deze door korte codes. Een statisch woordenboek houdt de overhead minimaal.
* Huffman-codering (statisch): Wijst kortere codes toe aan vaker voorkomende tekens op basis van een vooraf berekende frequentietabel. Het gebruik van een statische tabel vermindert de complexiteit in vergelijking met adaptieve Huffman-codering.
* Deltacodering: Registreert gegevens als verschillen (delta's) tussen opeenvolgende gegevens in plaats van volledige records. Effectief wanneer gegevens geleidelijk veranderen.
* Basisbitverpakking: Verpakt meerdere waarden in één byte wanneer de waarden minder bits vereisen dan een volledige byte.
Complexere compressie-algoritmen zoals LZ77, LZ78, Deflate (gebruikt in zip-bestanden) en JPEG (lossy) geven daarentegen prioriteit aan hogere compressieverhoudingen, maar dit gaat ten koste van de toegenomen rekencomplexiteit, geheugengebruik en implementatieproblemen. Eenvoudige algoritmen maken afwegingen in compressieprestaties omwille van de bruikbaarheid in bepaalde scenario's. |