Finden des Abstands zwischen zwei Polynomen (dargestellt als Bäume)


20

Ein Kollege, der an der genetischen Programmierung arbeitet, hat mir die folgende Frage gestellt. Ich habe zuerst versucht, es auf der Grundlage eines gierigen Ansatzes zu lösen, aber bei einem zweiten Gedanken fand ich ein Gegenbeispiel zum gierigen Algorithmus. Also, ich dachte, es lohnt sich hier zu erwähnen.


Betrachten Sie zwei Polynome, die durch ihre Ausdrucksbäume dargestellt werden. Zum Beispiel sind unten x3-2x+1 und x2+4 dargestellt:

Regeln:

  1. Jeder Knoten ist entweder ein Variablenname ( x,y,z, ), eine Zahl oder eine Operation (+, -, ×).
  2. Das Durchlaufen des Baums in der richtigen Reihenfolge sollte zu einem gültigen Polynom führen.
  3. Operationsknoten haben In-Grad 2. Andere Knoten haben In-Grad 0. Alle Knoten haben Out-Grad 1 (außer Root, dessen Out-Grad 0 ist).

Definieren Sie auf einem Knoten N des Baums die Grundoperation wie folgt:

  1. Eine grundlegende Operation kann die Bezeichnung des Knotens ändern. Beispielsweise kann x in 3 geändert werden, oder + kann in × geändert werden .
  2. Eine grundlegende Operation kann einen Ausdrucksbaum über N erstellen (siehe das folgende Beispiel).

Die Kosten für die Grundoperation vom Typ 1 betragen 1. Die Kosten für Typ 2 entsprechen der Anzahl von {+, -, ×} Operationen im neu erstellten Ausdrucksbaum.

Beispiel für Typ 2: Die Kosten der folgenden Grundoperation betragen 2, da der Ausdrucksbaum, der auf Knoten N aufgebaut ist, zwei Operationen (- und ×) verwendet.

Sei T1 und T2 zwei Ausdrucksbäume, die Polynome darstellen. Definieren Sie den Abstand von T1 und T2 wie folgt: Die Mindestkosten für grundlegende Operationen zur Konvertierung von T1 in T2. Beachten Sie, dass der konvertierte Baum nicht dieselbe Struktur wie T2 haben muss. Wir wollen nur, dass es dasselbe Polynom wie T2 berechnet. (Siehe die Kommentare für ein Beispiel.)

Das Problem: Geben Sie für T1 und T2 einen Algorithmus an, der ihre Entfernung berechnet.

Beispiel 1: T1 und T2 seien die beiden am Anfang dieses Beitrags abgebildeten Bäume. Um den rechten Baum in den linken Baum umzuwandeln, kann man einen Baum mit den Kosten 3 über × erstellen und 4 in 1 ändern (die Gesamtkosten betragen 4).

x4x4+4x3+6x2+4x+1x(x+1)4x4x36x24x


2
Wenn die Operation "Löschen" nicht zulässig ist, ist die Entfernung keine Entfernung. Zum Beispiel: Ein Baum T1 = (x * x) +4 kann nicht in T2 = x transformiert werden, aber T2 kann in T1 transformiert werden, indem (* x) und dann (+4) auf x hinzugefügt werden. Ist es o.k ? Oder Sie sollten den Abstand als die Mindestoperationen definieren, die erforderlich sind, um T1 in T2 oder T2 in T1 zu konvertieren.
Marzio De Biasi

4
Die Kosten sind genau dann gleich 0, wenn die beiden angegebenen (teilungsfreien) arithmetischen Formeln dasselbe Polynom darstellen. Wenn ich mich richtig erinnere, ist dies ein typisches Problem in coRP (durch zufällige Zuordnung), von dem nicht bekannt ist, dass es in P.
Tsuyoshi Ito

4
@ Tsuyoshi: Oh, ich verstehe. Sie zeigen auf das Problem des Polynomidentitätstests . (Gute Referenzen: [1 ] und [2 ]). Ich muss darüber nachdenken. In der Zwischenzeit ist jeder Vorschlag willkommen.
MS Dousti

4
Ja das ist es. Es scheint, dass in der typischen Version des Polynomidentitätstestproblems zwei Eingabepolynome als Schaltkreise und nicht als Formeln angegeben werden. Daher war meine Formulierung, dass die Formelversion „typisch“ ist, wahrscheinlich ungenau. Trotzdem scheint es ein offenes Problem zu sein, auch die Formelversion in P zu setzen.
Tsuyoshi Ito

2
@Vor: In der aktuellen Formulierung ist die Eingabe T1 tatsächlich ein Baum und die Eingabe T2 ein Polynom, das im folgenden Sinne zufällig nur als Baum angegeben wird. Das Ändern von T1 in einen anderen Baum, der dasselbe Polynom darstellt, kann die Antwort im Allgemeinen ändern, während das Ändern von T2 in ähnlicher Weise dies nicht tut.
Tsuyoshi Ito

Antworten:


10

Die Baumbearbeitungsentfernung ist eine Verallgemeinerung der Zeichenfolgenbearbeitungsentfernung. Der Abstand zwischen zwei Bäumen ist die minimale Anzahl von Knoteneinfügungen, -löschungen und -neuetiketten, die erforderlich sind, um einen Baum in den anderen zu verwandeln. (Wenn wir Knoten v löschen, werden die Kinder von v zu Kindern von Eltern (v)). Das Problem ist NP-schwer, wenn die Bäume ungeordnet sind, aber wenn sie geordnet sind (dh es gibt eine Reihenfolge von links nach rechts unter den Geschwistern), ist das Problem in O (n ^ 3) Zeit lösbar (wie in dem Papier darüber) Sadeq erwähnt). Eine gute Umfrage, die dies beschreibt: http://portal.acm.org/citation.cfm?id=1085283


1
Vielen Dank, Aviv. Es ist großartig, wenn Sie Ihre Antworten zusammenführen (ich glaube, Sie haben Probleme mit Ihrem vorherigen Konto). Sie können die Hinweise in diesem Beitrag verwenden (insbesondere diesen Link ).
MS Dousti

Wie würde dieser Ansatz verschiedene Bäume mit äquivalenten Polynomen
bedecken
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.