Springen naar inhoud

Compressie methoden


  • Log in om te kunnen reageren

#1

Evert

    Evert


  • >100 berichten
  • 142 berichten
  • Ervaren gebruiker

Geplaatst op 11 februari 2008 - 18:22

De reden dat ik dit bij wiskunde zet en niet bij programmeren is omdat ik het hier niet over een programmeertaal heb en omdat je compressie vaak (in ieder geval hier) wiskundig kan benaderen. Wel zal ik wat computertermen gebruiken, dus als dat niet mag moet dit topic toch verplaatst worden. :D

Nu verder met mijn verhaal...

Ik ben de laatste tijd ineens heel erg ge´nteresseerd geraakt in compressie. Maar ik ben er eigenlijk heel slecht in. ;) Ik probeer lossless te comprimeren, dus dat je geen informatie kwijt raakt, en op dit moment probeer ik het nog uit op tekst.
Ik heb al geprobeerd om bijvoorbeeld in een tabel alle mogelijke combinaties te maken van 5 letters van het alfabet. De bedoeling was dan dat je alleen een verwijzing hoefde te gebruiken die naar het goede veld in de tabel verwees. Het probleem daarvan is dat je dan zoveel mogelijkheden in de tabel hebt dat je verwijzing ongeveer even veel bytes lang is dan als je die 5 letters zelf zou typen, soms nog wel langer.
Daarna dacht ik dat het misschien met een formule zou kunnen met een aantal parameters, maar dan heb je evenveel parameters nodig als het aantal getallen dat je terug wilt (de letters van het alfabet kan je ook als getallen schrijven), en die parameters zijn vaak breuken dus dat zijn nog meer bytes.

Ik zit nog steeds in mijn hoofd met dat je alle informatie in het programma zet en in het bestand alleen verwijzingen zodat die de goede informatie bij elkaar zoekt, maar tot nu toe komt er steeds uit dat de verwijzingen evenveel bytes kosten als de info zelf. Ik kom er niet uit, ik denk waarschijnlijk te simpel. Maar weet iemand een lossless compressie-methode die wel werkt? pi.gif

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 11 februari 2008 - 18:41

http://zlib.net

Is ideaal voor tekst
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

#3

*_gast_PeterPan_*

  • Gast

Geplaatst op 12 februari 2008 - 09:08

Informatietheorie houdt zich bezig met dit soort problemen.
Bekijk jouw probleem met die letterparen.
Niet elk paar komt met de zelfde frequentie in een tekst voor.
Sorteer de paren naar frequentie, zodat de veel voorkomende eenvoudig benaderd worden
Dan mogen de zeldzame gevallen extra duur kosten.

#4

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 12 februari 2008 - 09:34

Zie bijvoorbeeld Huffmancodering.

#5

da_doc

    da_doc


  • >250 berichten
  • 308 berichten
  • Ervaren gebruiker

Geplaatst op 12 februari 2008 - 10:30

http://datacompression.info/

#6

Evert

    Evert


  • >100 berichten
  • 142 berichten
  • Ervaren gebruiker

Geplaatst op 12 februari 2008 - 20:33

Zie bijvoorbeeld Huffmancodering.

Volgens mij is de compressie die daar staat voor het alfabet lang niet optimaal. nog steeds krijgen letters meer bits dan nodig is, dan is dit beter:

E = 0
N = 1
A = 10
T = 11
I = 100
R = 101
O = 110
D = 111
S = 1000
L = 1001
G = 1010
V = 1011
H = 1100
K = 1101
M = 1110
U = 1111
B = 10000
P = 10001
W = 10010
J = 10011
Z = 10100
C = 10101
F = 10110
X = 10111
Y = 11000
Q = 11001

#7

TD

    TD


  • >5k berichten
  • 24049 berichten
  • VIP

Geplaatst op 12 februari 2008 - 20:40

Het probleem hierbij is dat als je "11" binnenkrijgt, je niet weet of dit "NN" of "T" is.
Dit probleem heb je niet met Huffmancodering werkt, omdat dit een "prefixcode" is.
Dat wil zeggen: geen enkele code is gelijk aan het begin ("de prefix") van een andere code.
"Malgré moi, l'infini me tourmente." (Alfred de Musset)

#8

Evert

    Evert


  • >100 berichten
  • 142 berichten
  • Ervaren gebruiker

Geplaatst op 12 februari 2008 - 20:55

Ohja, had ik niet aan gedacht. XD
Jemig ik moet toch eens wat beter gaan nadenken. XD





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures