Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 23:17

  • Please register to post and access all features, it's quick, easy and FREE!

 

Große Zahlen komprimieren

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Nov 2010
Posts: 701
Received Thanks: 506
Question Große Zahlen komprimieren

Hallo Leute, ich bin gerade dabei ein kleines Programm am schreiben, das Problem ist das dabei große Zahlen anfallen und ich eine Möglichkeit suche diese zu komprimieren.
Als Ganze Zahl kann man das wahrscheinlich nicht sehen da sehr schnell Größen um die 30k Zeichen anfallen.

Kennt ihr rein zufällig eine Methode um solche Zahlen zu komprimieren, muss nicht schnell gehen sondern nur stark komprimieren.
Besonders oft kommt die Zahl 9 vor, falls das hilft.
Hier ist mal ein Ausschnitt aus einer Zahl:

In der Ganzen Zahl beträgt die 9 ca 50% und das wird in den anderen Zahlen ebenso sei, darum habe ich schon mal gedacht ob man die Ganze zahl umdreht (wusste keinen Fachausdruck xD) also eigentlich bei jeder Ziffer 10-x, also zb aus 9 wird 1.
Damit wären die Zahlen um einiges kleiner.

Nur die Frage diese zu komprimieren. Ich weis man kann es in Bytes umwandeln also zb. 122 = z und so das ganze komprimieren. Leider sind damit keine hohen Kompressionsraten möglich (soweit ich mir jetzt denken kann).

Habt ihr dazu eine kleine Anregung, wäre echt geil



supercracker13 is offline  
Old   #2
 
elite*gold: 1
The Black Market: 314/0/0
Join Date: Jun 2012
Posts: 5,764
Received Thanks: 3,124
GZIP


'Heaven. is offline  
Old   #3
 
elite*gold: 31
Join Date: Jan 2014
Posts: 310
Received Thanks: 55
Ich hab gelesen, das bzip2 besser komprimiert, aber länger zum komprimieren braucht. Da du ja eine stärkere Kompressionsrate willst solltest du vieleichtneher bzip2 nehmen.
strubelz is offline  
Old   #4

 
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
So weit ich das verstehe möchtest du die Kompression in-memory machen um die Zahl dann direkt wieder verwenden zu können? In dem Fall wäre eine Umcodierung mit Huffman sinnvoll. Dazu brauchst du einen Binary Stream, den du mit einer Lese- und Schreiblogik versiehst. Wie das ganze genau funzt, kannst du hier nachlesen. Den Code für jedes Zeichen musst du nicht jedes Mal neu berechnen, solltest es aber zumindest alle paar tausend Zeichen machen.


マルコ is offline  
Old   #5
 
elite*gold: 0
Join Date: Nov 2010
Posts: 701
Received Thanks: 506
Ok danke schonmal. Leider suche ich etwas zur dauerhaften Speicherung von Daten und nicht zur direkten wiederverwendung. Hätte ich besser dazu geschrieben.
Mit Huffman habe ich mich auch schon auseinandergesetzt nur leider basiert es darauf, das Zeichen die häufiger vorkommen kleinere Nummern bekommen und die die seltener Vorkommen größere Nummern. Leider gibt es nur einen Unterschied zu 9 und alle andere Zahlen sind ungefähr zur gleichen Zahl vorhanden. Darum glaub ich ist es nicht so effektiv wie ich es gerne hätte. (Wenn das nicht stimmt könnt ich mich gerne verbessern).
Ich versuche jetzt nochmal meinen eigenen Algorithmus zu verbessern.

Edit bitte Lesen ob das Funktioniere würde:
Angenommen ich würde mit Huffman meine Zahl encoden. Dann kommt man der minimalen Entropie ja schon mal ziemlich nah, sodass man es nicht, oder nur minimal noch komprimieren kann.
Würde ich jetzt mit einer bestimmen Funktion die Bytes erhöhen und vermindern, sodass eine neue Dateistruktur ensteht, müsste man es doch noch mal komprimieren können oder ?.
z.B Jedes 7 um 63 erhöhen, jedes 3 um 117 und jedes 13 um 19. Dann sollten doch eigentlich die Daten neue Werte erhalten, sodass man sie neu strukturieren kann. Man muss nur die Funktion wissen um das Ganze umzukehren.
Für mich hört sich das zwar logisch an, wird aber wahrscheinlich nicht wie gewollt funktionieren. Könnt ihr mir den Grund dafür sagen, falls es nicht funktionieren sollte ? (Wenn ich nicht selber drauf komme ^^)
supercracker13 is offline  
Old   #6
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,119
Received Thanks: 848
Woher kommen die Zahlen? Was hast du mit den Zahlen vor?
@Deine Idee: Es geht bei der Kodierung doch darum, die Information zu behalten und die Redundanz zu entfernen. Spinn das mal weiter und du solltest wissen warum (genaueres dazu kann dir sicher einer der Infostudenten erzählen).
Schlüsselbein is offline  
Old   #7
 
elite*gold: 104
Join Date: Jun 2010
Posts: 547
Received Thanks: 124
Ich studiere kein Informatik und habe auch all die anderen Alogirthem etc. noch nie gehört. Aber vllt. hilft es ja trotzdem

Ich habe ganz einfach daran gedacht, die Zahlen durch Division und Wurzelziehung zu verkleinern. So kann man ja auch große Zahlen stark verkleinern. Es würde dann vermutlich wirklich etwas länger dauern mit der Kompression, aber zumindest hättest du dann kleine Zahlen, die nur noch zusammengerechnet werden müssen.

War nur mal so mein kleiner Gedanke, keine Ahnung, ob das hilft
tayfe is offline  
Old   #8
 
elite*gold: 0
Join Date: Nov 2010
Posts: 701
Received Thanks: 506
Das könnte ich auch mal probieren mit bestimmten Rechenwegen die Zahlen zu verkleineren, dabei muss man nur beachten, das die Zahlen nachher einheitliche Stellenanzahlen bekommen, damit man die Daten auch wieder heraus bekommt.

@Schlüsselbein: Ich hatte das bei meinem Beispiel folgender Maßen gemeint:

PS: Habe dafür jetzt Onlinetools benutzt, also falls etwas falsch konvertiert ist wisst ihr wodran es liegt ^^
supercracker13 is offline  
Old   #9
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,119
Received Thanks: 848
Du hast uns immer noch nicht verraten, was du mit den Zahlen vor hast bzw. wo sie herkommen.

Zu Hufmann: Zu deinem Beispiel oben: Schreib dir mal ein kleines Beispielprogramm dazu und denke ans decoden. Du verschiebst den Informationsgehalt nur.


Schlüsselbein is offline  
Reply



« Previous Thread | Next Thread »

Similar Threads
Große Zahlen ausgeben
Hallo zusammen, ich habe nicht direkt ein Problem, sondern mich interessiert viel mehr wie ich etwas derartiges anstellen kann ohne vordefinierte...
1 Replies - General Coding
[Buying] [SUCHE] Große Monitor für mein Pc [Biete] Überweisung,Abholung,per Nachname zahlen
Hi, Ich bin auf der suche nach einem großen Monitor, sollte von BenQ,Asus,Acer sein wenn möglich kann auch andere Marke sein aber ich bin...
2 Replies - Trading
Zahlen für das Große Wochen event!
Heii ich verkaufe heute bzw hier Chancen bzw Mehr Zahlen für dieses Event ...
15 Replies - elite*gold Trading
Schnell komprimieren
hi ich muss in 20 min zum pc geschäft (win7 draufmachen lassen) habe eien p server mit virtual pc wie kannn ich schnell die festplatte komprieiren...
1 Replies - Main
Komprimieren??
Hey, hab da eine Frage. Ich wollte WoW 1.12.2 hochladen.... Naja und hab das Problem das ich die sachen von den 5 cd's ja runter zieh dann in nen...
3 Replies - Technical Support



All times are GMT +2. The time now is 23:17.


Powered by vBulletin®
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2017 elitepvpers All Rights Reserved.