Ich lese den Artikel NJ Larsson, A. Moffat: Offline Dictionary-Based Compression , der einen Komprimierungsalgorithmus beschreibt, der, wenn ich ihn richtig verstehe, der Bytepaar-Codierung ziemlich ähnlich ist .
Bei einer Zeichenfolge der Länge versuche ich zu verstehen, wie man sie mit dieser Komprimierungsmethode in linearer Zeit ( komprimieren kann. Wie genau wird das gemacht? Ich habe die Zeitung gelesen, aber ich verstehe immer noch nicht, wie sie eine lineare Zeit erreichen. Vielleicht würde ich sie auf eine andere Weise erklären.n O ( n )
Meine erste Verwirrung entsteht im ersten Schritt des Algorithmus, wo wir das häufigste Paar finden, z. B. wenn abcababcabc
das häufigste Paar ab
beispielsweise durch ein neues Symbol ersetzt wird XcXXcXc
. Ich verstehe nicht, wie wir das häufigste Paar schnell genug finden können. Mein naiver Ansatz wäre, zuerst das erste Paar zu betrachten ab
und dann die Anzahl der Vorkommen zu zählen, dann das nächste Paar zu betrachten bc
und die Anzahl der Vorkommen usw. zu zählen. Dies würde jedoch bereits nur für geben einmal das häufigste Paar finden .
Als nächstes, selbst wenn ich verstanden habe, wie man das häufigste Paar in Zeit findet. Mein nächstes Problem ist, dass wir nicht das häufigste Paar bis zu mal finden müssen? Und daher würde dies eine Gesamtzeit von ?O ( n ) O ( n 2 )