Ich suche nach einem One-Pass-Algorithmus, der die Parität einer Permutation berechnet. Ich gehe davon aus, dass eine Eingabepermutation durch stream . Die Ausgabe sollte die Parität der Permutation sein. Die Frage, die mich interessiert, wie viel Speicher ein deterministischer Algorithmus verwenden sollte. Gibt es einen zufälligen Algorithmus für das Problem?
Ich weiß, dass die Berechnung der Anzahl der Inversionen in einem Durchgang -Speicher verwendet. Die Obergrenze kann leicht mit jedem BST erhalten werden. Die Untergrenze wird hier dargestellt: http://citeseerx.ist.psu.edu/viewdoc/versions?doi=10.1.1.112.5622
Leider kann der Nachweis der Untergrenze im Papier nicht auf den Paritätsfall ausgedehnt werden (oder es ist für mich nicht so offensichtlich).
Ich weiß auch, dass die Berechnung der Parität auf kleinem Raum mit wahlfreiem Zugriff auf eine Permutation in Zeit und Speicher durch deterministischen Algorithmus oder in Zeit und Speicher nach dem Zufallsprinzip. Siehe http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.2256O ( log 2 n ) O ( n log n ) O ( log n )
Die Hauptidee ist, dass die Parität einer Permutation durch die Formel berechnet werden kann , wobei die Anzahl der Zyklen und die Größe ist. Die Autoren machen die Zykluszerlegung einer Permutation. So kann man leicht die Anzahl der Zyklen berechnen. c n
Kennt jemand einen effektiven Algorithmus oder eine niedrigere Speichergrenze für die Berechnung der Parität im Streaming-Modell? Randomisierte Algorithmen, die besser sind als zufällige Münzen, interessieren mich auch.
quelle
Antworten:
Ich möchte alle bitten, dies nicht zu befürworten, da dies keine Antwort, sondern ein ausführlicher Kommentar ist, in dem ich darlegen möchte, warum diese Frage keine Antworten erhalten hat. Mein Hauptpunkt ist, dass eine untere Grenze der Kommunikationskomplexität nicht funktioniert. Damit meine ich, dass, egal wie wir die Eingabe in zwei Teile teilen und an zwei Spieler, A und B, weitergeben, A ein einzelnes Bit nach B übertragen kann, aus dem er die Parität der Permutation berechnen kann. (Dies folgt einfach durch Berücksichtigung von Inversionen.)
Beweise, die eine andere Grenze verwenden, sind schwer. Siehe diesen Kommentar hier von Noam Nisan (für die nicht deterministische Version): Schranke der Größe der kleinsten NFA für L_k-distinct ,
diese Frage im Zusammenhang von mir beantwortet von Hermann Gruber , die zeigt , dass die Kommunikationskomplexität geringer kann sehr weit von der Wahrheit (in der nicht-deterministischen Version wieder) gebunden seine Untere Grenze Sprache für NFA akzeptieren 3 Buchstaben .
Auch darauf bezogen, dass die Entscheidung, ob die Permutation ein einzelner Zyklus ist, schwierig zu sein scheint, siehe dieses FOCS-Papier von Ran Raz und Boris Spieker: http://www.computer.org/csdl/proceedings/focs/1993/4370/00 /0366870-abs.html .
Daher bin ich auch sehr daran interessiert, die Antwort auf diese Frage zu erfahren.
quelle