Konstruieren Sie einen DAG aus den jeweils mehrfach topologischen Bestellen
-
29-09-2020 - |
Frage
Ich muss einen DAG erstellen, von seinen gegebenen topologischen Reihenfolge (d. H. In der Grafik
Die folgenden Einschränkungen sollten erfüllt sein:
- .
- Der maximale Überwachung jedes Knotens sollte 1
- Die Anzahl der Knoten mit einem Indeye 0 sollte minimal sein.
Es kann mehrere Lösungen geben, deren von ihnen funktionieren sollte.
was ich versucht habe. ( Annäherung 1 was falsch ist, da es ein Beispiel fehlschlägt, das in der Antwort angegeben ist. Bitte blättern Sie zum zweiten Ansatz, den ich immer noch keinen Fehler finden kann.)
Annäherung 1
Erstellen Sie zunächst aus allen gegebenen Bestellungen ein entsprechendes Diagramm, indem er eine gerichtete Kante von jedem Knoten an seinen nächsten Knoten erstellt. Dies bedeutet, wenn die Bestellungen sind:
Ich erstellte einen gerichteten Diagramm mit einer gerichteten Kante von $ 1 $ bis 3, 3 $ bis $ 2, 2 $ bis $ 5 $ und so weiter.
Dies stellt sicher, dass die Anzahl der Knoten mit Indeygrale 0 minimal bleibt. Nun, ich werde alle Zyklen entfernen und sicherstellen, dass alle Bestellungen gültig sind und schließlich alle zusätzlichen Kanten beseitigen, die jeder Knoten hat. Ich werde dabei sicherstellen, dass, wenn es zwei Knoten gibt, deren Kante von demselben Knoten kommt, den Kanten vom Knoten mit einem höheren Indeye entfernen, so dass der Zustand 2 erfüllt ist.
Die damals konstruierte Grafik sollte aussehen:
Diese DAG ergab, folgt sowohl den Einschränkungen, und IMO hat die Mindestanzahl von Indexknoten als 0, obwohl es nicht bewiesen ist.
Ich habe den Ansatz codiert und ergibt erwartete Ergebnisse für die Anwendungsfälle, die ich lieferte, aber ich weiß, dass es falsch ist. Was vermisse ich hier? Kann jemand einen alternativen Anwendungsfall bereitstellen, der den obigen Ansatz fehlschlägt?
Annäherung 2
Ich erstellte eine gerichtete Grafik $ g $ , indem Sie eine Kante von $ A_I $ bis $ a_j $ für alle $ j> i $ in allen angegebenen Bestellungen.
Also für die Bestellungen:
Ich werde die folgende Grafik erstellen:
Der erste Schritt danach ist es, alle Bestellungen zu bestätigen. Die Entfernung von Zyklen ist separat nicht erforderlich, da sie von diesem Schritt selbst entfernt werden.
Für jede Bestellung
Dabei gibt es die folgende Grafik:
Der letzte Schritt besteht darin, zusätzliche Kanten von allen Knoten zu entfernen, da ein maximaler Überwachung von einem beliebigen Knoten
Der letzte Diagramm $ g $ wird aussehen:
Dieses Graph erfüllt beide Einschränkungen. Aber ich weiß, dass dieser Ansatz falsch ist! Kann jemand helfen, zu finden, warum ist das falsch?
Lösung
Annäherung 1
Betrachten Sie beispielsweise die beiden Ordnungen: 1, 2, 3, 4, 5 und 2, 4, 1, 5, 3.Nach Ihrem Ansatz erhalten wir einen Zyklus 1-> 2-> 3-> 4-> 1. Dann entfernen wir 3-> 4 und 4-> 1 und erhalten einen Graphen:
generasacodicetagpre.jetzt 5-> 3 und 1-> 2 verstoßen jeweils den ersten und den zweiten Bestellungen, also entfernen wir sie und erhalten
generasacodicetagpre.Now NOW NODE 2 verfügt über 2 ausgehende Kanten. Entfernen von entweder eines macht eine endgültige Grafik, in der 3 Knoten (1, 2, 3 oder 1, 2, 4) in Grad 0 aufweisen.
Es gibt jedoch ein Diagramm
generasacodicetagpre.wenn beide Bestellungen erfüllt sind, aber nur 2 Knoten haben in Grad 0.
, also ist Annäherung 1 falsch.
Annäherung 2
Betrachten Sie eine optimale Lösung. Jede Kante in dieser optimalen Lösung muss das Formular $ (A_I, A_J) $ sein, wo $ i
Ihr Ansatz, der versucht, die Anzahl der Knoten mit einem Minimum von 0 von 0 zu erstellen, ist jedoch falsch.
Sehen Sie sich beispielsweise die drei Bestellungen an:
Zuerst können wir das folgende Zwischengraph erhalten:
generasacodicetagpre.Wenn Sie Ihren Ansatz anwenden, entfernen wir 1-> 4, 2-> 4 und 3-> 4 (oder 3-> 8), und es gibt 5 Knoten mit 0: 1, 2, 3, 4 in Grad (oder 8), 5. Die optimale Lösung wäre jedoch
generasacodicetagpre.wo nur 4 Knoten in Grad 0: 1, 2, 3, 5 aufweisen.