Ich habe 13 Zahlen aus einem Satz mit 13 Arten von Daten zeichnen, jede Art hat 4 Artikel so insgesamt 52 Artikel. Wir können den Gegenstand als 1,2,3,4,5,6,7,8,9,10,11,12,13 nummerieren, also wird es 4 "1", 4 "2", ... 4 geben "13" im Set. Die 13 Zahlen, die aus dem Set stammen, sind zufällig. Der ganze Vorgang wiederholt sich millionenfach oder noch mehr, also brauche ich eine effiziente Möglichkeit, die 13 Zahlen zu speichern. Ich dachte daran, eine Art von Codierungsmethode zu verwenden, um die 13 ganzen Zahlen in Bits zu komprimieren. Zum Beispiel zähle ich, wie viele "1", "2" ... zuerst die Zählung für jedes Element mit 2 Bits codieren und 1 weiteres Bit verwenden, um anzuzeigen, ob das Element gezeichnet wurde oder nicht. Für jeden Gegenstand benötigen wir also 3 Bits, insgesamt kosten 13 Gegenstände 39 Bits. Es benötigt definitiv 8 Bytes, um dies zu tun. Aber es ist immer noch zu viel, da ich über paar Millionen oder Milliarden von Berechnungen spreche und jeder Satz muss später in der Datei gespeichert werden. Also, wenn ich 8 Bytes benutze, werde ich immer noch ungefähr 80 GB für meine Daten fragen. Aber wenn ich das um die Hälfte reduzieren kann, werde ich 40 GB sparen. Irgendeine Idee, wie man diese Struktur effizienter komprimiert? Ich denke auch, 5 Bytes stattdessen zu verwenden, aber als ich mich um den unterschiedlichen Typ der Nummer kümmern muss (ein int + ein Zeichen), gibt es irgendeine Bibliothek in C++ kann das Kodieren/das Komprimieren für mich leicht tun?die Suche nach einer besseren Art und Weise Zahlen zu kodieren und komprimieren
Danke.
Der Versuch, herauszufinden, wie das Casino zu schlagen, nicht wahr? :-) – paxdiablo
Ist die Reihenfolge der Zahlen wichtig? Sonst scheint es, als könnten Sie Ihre Objekte leicht als Bits speichern, wobei jedes Bit repräsentiert, wenn ein bestimmtes Objekt gezeichnet wird oder nicht. Für 1 Million von denen brauchen Sie 8MB Speicher. Um Milliarden, bohnen Sie 100 Millionen oder 1 Million Millionen? Für den ersten brauchen Sie nur 8 GB Speicherplatz. Dies könnte um 12,5% reduziert werden, indem 7 Bytes anstelle von 8 Bytes verwendet werden. Gibt es für die weitere Komprimierung eine Struktur zu den Daten oder ist sie rein zufällig? –
Ist das Hausaufgaben? –