Rekonstruktion eines Baums aus Trennzeichenabfragen


18

Angenommen, ist ein Baum konstanten Grades, dessen Struktur wir nicht kennen. Das Problem besteht darin, den Baum durch Fragen des Formulars auszugeben : "Liegt der Knoten auf dem Pfad von Knoten zu Knoten ?". Angenommen, jede Abfrage kann von einem Orakel in konstanter Zeit beantwortet werden. Wir kennen den Wert von , die Anzahl der Knoten im Baum. Ziel ist es, den Zeitaufwand für die Ausgabe des Baums in zu minimieren .TTxeinbnn

Gibt es einen -Algorithmus für das obige Problem?O(n2)

Angenommen, der Grad eines Knotens in beträgt höchstens 3.T


Was ich weiß

Das Gehäuse mit begrenztem Durchmesser ist einfach . Wenn der Durchmesser des Baumes , können wir einen Divide-and-Conquer-Algorithmus erhalten:D

Jeder binäre Baum hat ein gutes Trennzeichen, das den Baum in Komponenten mit einer Größe von nicht weniger als 1 / 3n unterteilt.

  1. Wählen Sie einen beliebigen Scheitelpunkt x. Wenn es ein gutes Trennzeichen ist, beschriften Sie das und wiederholen Sie den Vorgang.
  2. Finde alle 3 Nachbarn von x.
  3. Bewegen Sie sich in Richtung des Nachbarn mit der größten Anzahl von Knoten. Wiederholen Sie Schritt 2 mit dem Nachbarn.

Da das Finden des Trennzeichens höchstens Schritte dauert , erhalten wir einen -Algorithmus.DO(nDLogn)

Ein randomisierter AlgorithmusO(nLog2n) . (verschoben von den Kommentaren unten)

Wähle zwei Ecken x und y nach dem Zufallsprinzip. Mit einer Wahrscheinlichkeit von 1/9 liegen sie auf den gegenüberliegenden Seiten eines Trennzeichens. Wählen Sie den mittleren Knoten des Pfades von nach . Überprüfen Sie, ob es sich um ein Trennzeichen handelt, oder führen Sie eine binäre Suche durch.xy

Es dauert , bis das Trennzeichen gefunden ist. Wir erhalten also einen zufälligen -Algorithmus.O(nLogn)O(nLog2n)


Hintergrund. Ich habe dieses Problem von einem Freund erfahren, der mit probabilistischen grafischen Modellen arbeitet. Das obige Problem entspricht ungefähr dem Erlernen der Struktur eines Verbindungsbaums unter Verwendung eines Orakels, das bei drei Zufallsvariablen X, Y und Z den Wert der gegenseitigen Information zwischen X und Y bei dem Wert von Z angeben kann. Wenn der Wert nahe ist bis Null können wir annehmen, dass Z auf dem Weg von X nach Y liegt.


7
Teilen Sie uns bitte mit, was Sie bereits über das Problem wissen, damit wir keine Zeit damit verschwenden, das Rad neu zu erfinden.
Jeffs

@ Jɛ ɛ E Ich habe meine Frage bearbeitet.
Jagadish

Antworten:


5

Nein. Die folgende einfache Gegnerstrategie impliziert, dass jeder Algorithmus zum Rekonstruieren eines Knoten-Baums mindestens "zwischen" Abfragen erfordert .n(n-12)=n(n-1)/2

Beschriften Sie die Knoten . Der Gegner beantwortet alle Fragen so, als wäre der Baum ein Stern mit dem Scheitelpunkt in der Mitte. Stellen Sie sich als Root und die anderen Knoten als untergeordnete Knoten vor.0 00,1,2,,n-100

Between?(a,x,b)
    if x=0 return TRUE else return FALSE

Angenommen, der Algorithmus wird angehalten, nachdem weniger als Abfragen ausgeführt wurden. Dann müssen zwei Eckpunkte und , wobei keiner gleich Null ist, so dass der Algorithmus keine Permutation des Tripels abgefragt hat . Wenn der Algorithmus behauptet, dass der Baum kein Stern mit der Mitte , deckt der Gegner seine Eingabe auf und beweist, dass der Algorithmus falsch ist. Der Gegner enthüllt dann, dass tatsächlich das einzige Kind von , was beweist, dass der Algorithmus erneut falsch ist.y z ( 0 , y , z ) 0 x yn(n-1)/2yz(0,y,z)0xy

Update: Hoppla, habe gerade die Gradbeschränkung bemerkt. Zum Glück ist dies keine große Hürde. Ersetzen Sie Knoten durch Ihren bevorzugten Binärbaum, wobei die anderen Knoten in einer unbekannten Reihenfolge als Blätter angezeigt werden, und legen Sie diesen Teilbaum dem Rekonstruktionsalgorithmus offen. Die Rekonstruktion des resultierenden -Knoten-Binärbaums erfordert immer noch mindestens Abfragen. Entsprechend erfordert die Rekonstruktion eines Binärbaums mit Knoten mindestens Abfragen. (Ich bin sicher, eine subtilere Konstruktion würde die Konstante verbessern.)n - 1 ( 2 n - 3 ) n ( n - 1 ) / 2 m ( m + 3 ) ( m + 2 ) / 80n-1(2n-3)n(n-1)/2m(m+3)(m+2)/8 Wie Jagadish betont, funktioniert diese Verallgemeinerung nicht. Abfragen über interne Knoten im Baum erlegen den Blättern eine Reihenfolge auf, wodurch die Anzahl der erforderlichen Abfragen verringert wurde.


Meine Frage betrifft Bäume mit konstantem Grad. In diesem Fall funktioniert dieses Argument nicht, oder?
Jagadish

2
@Jagadish: (1) Ich glaube nicht, dass dieser Nachweis einer Untergrenze für randomisierte Algorithmen funktioniert. Der Gegner kann immer noch ein fehlerhaftes Beispiel konstruieren, was jedoch nicht der Hypothese widerspricht, dass der randomisierte Algorithmus mit hoher Wahrscheinlichkeit korrekt funktioniert. (2) Übrigens scheinen Sie die Frage gestellt zu haben und die Antwort zu kennen. Warum hast du das getan?
Tsuyoshi Ito

2
Aha. Vielen Dank für die Erklärung und auch für die Bearbeitung der Frage!
Tsuyoshi Ito

4
Wenn Sie einen zufälligen Algorithmus haben, dann haben Sie einen Algorithmus. Determinismus wird überbewertet.
Jeffs

1
O(nLogn)O(nLogn)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.