En enkel kompressionsalgoritm, även om den kanske inte uppnår de högsta komprimeringsförhållandena, fokuserar på enkel implementering och låg beräkningsomvänt. Viktiga funktioner i sådana algoritmer inkluderar:
* enkelhet: Kärnalgoritmen är lätt att förstå och implementera i kod. Detta innebär ofta att använda grundläggande operationer och datastrukturer.
* hastighet: Komprimering och dekomprimering är relativt snabba, vilket minimerar den tid som krävs för att bearbeta data. Detta är avgörande för realtid eller nästan realtidsapplikationer.
* lågminnesavtryck: Algoritmen kräver inte stora mängder minne för att fungera. Detta är viktigt för inbäddade system eller resursbegränsade miljöer.
* Minimal overhead: Mängden metadata- eller rubrikinformation som läggs till i komprimerad data är liten. Stora rubriker kan kompensera fördelarna med komprimering, särskilt för små ingångsfiler.
* Fast eller begränsad komplexitet: Algoritmens komplexitet (både tid och rum) bör vara förutsägbar och helst linjär eller nära linjär med ingångsstorleken. Detta undviker oväntade flaskhalsar för prestanda.
* Förlustfri (ofta): Enklare algoritmer fokuserar ofta på förlustfri komprimering, vilket säkerställer att originaldata kan rekonstrueras perfekt. Förlust av kompressionstekniker tenderar att vara mer komplexa.
Vanliga exempel på enkla kompressionsalgoritmer och tekniker som visar dessa funktioner inkluderar:
* körlängd kodning (RLE): Ersätter sekvenser av identiska tecken med en räkning och karaktären. Mycket enkelt att implementera och snabbt, men bara effektivt när det finns långa körningar med identiska karaktärer.
* ordbokskodning (enkel): Skapar en liten, statisk ordbok med ofta förekommande ord eller fraser och ersätter dem med korta koder. En statisk ordbok håller över huvudet minimal.
* huffman -kodning (statisk): Tilldelar kortare koder till mer frekventa tecken baserat på en förkalkad frekvenstabell. Att använda en statisk tabell minskar komplexiteten jämfört med adaptiv Huffman -kodning.
* delta -kodning: Registrera data som skillnader (deltas) mellan sekventiella data snarare än kompletta poster. Effektivt när data ändras gradvis.
* grundläggande bitförpackning: Förpackar flera värden i en enda byte när värdena kräver färre bitar än en full byte.
Däremot tömmer mer komplexa kompressionsalgoritmer som LZ77, LZ78, (används i ZIP -filer) och JPEG (Lossy) högre kompressionsförhållanden men på bekostnad av ökad beräkningskomplexitet, minnesanvändning och implementeringssvårigheter. Enkla algoritmer gör avvägningar i komprimeringsprestanda för praktikens skull i vissa scenarier.