Datakomprimering
Datakomprimering är en uppsättning steg för att packa in data i ett mindre utrymme, samtidigt som de ursprungliga uppgifterna kan ses igen. Komprimering är en dubbelriktad process: en komprimeringsalgoritm kan användas för att göra ett datapaket mindre, men den kan också köras åt andra hållet, för att dekomprimera paketet till dess ursprungliga form. Datakomprimering är användbar inom datateknik för att spara diskutrymme eller för att minska den bandbredd som används när data skickas (t.ex. över Internet).
Förlustfri komprimering
Förlustfri komprimering packar data på ett sådant sätt att det komprimerade paketet kan dekomprimeras och data kan tas ut exakt på samma sätt som när det kom in. Detta är mycket viktigt för datorprogram och arkiv, eftersom även en mycket liten förändring i ett datorprogram gör det oanvändbart.
Den här typen av komprimering fungerar genom att minska mängden spillutrymme i en datamängd. Om du till exempel får ett datapaket som innehåller "AAAAABBBB" kan du komprimera det till "5A4B", som har samma betydelse men tar mindre plats. Denna typ av komprimering kallas "run-length-kodning", eftersom du definierar hur lång "löptiden" för ett tecken är. I exemplet ovan finns det två löpningar: en löpning med 5 A och en annan med 4 B.
Problemet med run-length-kodning är att den endast fungerar på långa delar av samma datavärde. Om du får ett paket med "ABBAABABAABAB" inuti kan det komprimeras till "1A2B2A1B2A1B2A1B", men det är längre än originalet! I det här fallet finns det en annan metod som kan användas: att kontrollera hur ofta ett visst värde förekommer i hela datapaketet. Detta kallas ofta för frekvenskomprimering.
Den vanligaste typen av frekvenskomprimering kallas Huffman-kodning, efter forskaren som kom på idén. Den grundläggande planen är att ge varje distinkt värde i ett datamaterial en kod: värden som dyker upp hela tiden får kortare koder, och värden som bara dyker upp en eller två gånger får längre koder.
Exempel på förlustfri komprimering
- Arkiveringsformat: Zip, GZip, bZip2, 7-Zip osv.
- Bilder/diagram: GIF, PNG, PCX
- Ljud: FLAC, WavPack
- Video: FFV1, H.264/MPEG-4 AVC High Predictive Profile
- Programkompressorer: UPX
Komprimering med förlust
För vissa typer av data kan förlustkomprimering gå mycket längre, vilket oftast är fallet med mediefiler som musik och bilder. Vid förlustkomprimering förloras en del av datan så att det blir mindre att lagra. Beroende på vilken information som går förlorad märker människor inte att den saknas. Som ett resultat av detta kan den helt enkelt tas bort från data.
Detta fungerar naturligtvis inte för datorprogram och andra data där varje del är viktig; att kasta delar av ett datorprogram är i allmänhet inte bra för programmet.
Exempel på komprimering med förlust
- Bilder: JPEG
- Ljud: MP3, Windows Media
- Video: MPEG, DivX, Windows Video
Frågor och svar
F: Vad är datakomprimering?
S: Datakomprimering avser processen att packa data i ett mindre utrymme, samtidigt som det fortfarande är möjligt att komma åt originaldata igen.
F: Vad är syftet med datakomprimering inom databehandling?
S: Datakomprimering är användbart inom databehandling för att spara diskutrymme och för att minska den bandbredd som krävs för att skicka data över internet.
F: Är datakomprimering en enkelriktad process?
S: Nej, datakomprimering är en tvåvägsprocess. Den kan användas för att göra datapaket mindre, men den kan också köras i omvänd ordning för att dekomprimera paketet tillbaka till sin ursprungliga form.
F: Vilka fördelar ger datakomprimering när man skickar data över internet?
S: Genom att komprimera data kan den bandbredd som krävs för att skicka data minskas, vilket i sin tur minskar den tid det tar att skicka data.
F: Varför är det viktigt att originaldata kan visas efter komprimering?
S: Om det inte går att komma åt originaldata efter komprimeringen har den komprimerade datan begränsad användbarhet.
F: Kan datakomprimering hjälpa till att snabba upp överföringen av stora filer?
S: Ja, datakomprimering kan påskynda överföringen av stora filer eftersom mindre filer tar kortare tid att överföra.
F: Vad är en komprimeringsalgoritm?
S: En komprimeringsalgoritm är en uppsättning steg som används för att komprimera data till ett mindre utrymme samtidigt som originaldata kan visas igen.