X-Algorithmus Knuth

Der Algorithmus X von Donald Knuth ist ein nicht-determinis rekursiven Algorithmus, eingehende Platz und Backtracking. Es erlaubt, Lösungen für das Problem der exakten Überdeckung, die in Form einer Matrix, 0 und 1. Das Ziel ist dargestellt zu finden, um eine Untergruppe von Zeilen als die Anzahl zu ermitteln 1 erscheint in jedem und sobald eine Spalte.

Prinzip

Der Algorithmus X unter Verwendung der Matrix-Darstellung des genauen Abdeckung. Es wird angenommen, dass die Matrix vorher bestimmt wurde, und aus dieser Matrix, funktioniert der Algorithmus wie folgt:

Die nicht-Determinismus des Algorithmus geht von der Leitung 3. In der Tat ist es nicht bekannt, ob eine Linie L führt zu einer genauen Lösung des Problems. Es erstellt dann eine Reihe von Sub-Algorithmen, die alle fahren von der Matrix A, aber reduzieren sie mit Bezug auf die Linien L anders. Dies entspricht einem Suchbaum mit dem ursprünglichen Problem an der Wurzel und jedem Zweig entsprechend einem Sub-Algorithmus mit einer anderen Leitung zu bilden.
In der Praxis, berechnen wir die ersten Zweig und Unterzweigen, wenn sie vorhanden sind. Bei Ausfall des Algorithmus auf einem Ast, eine Ebene zurück zu gehen Sie und berechnen Sie den nächsten Zweig, dh, man nimmt die L Linie in der Liste der Möglichkeiten, und s 'stoppt, wenn der Erfolg von einem Ast, ist es das Prinzip der Backtracking. Es ist auch möglich, die Berechnungen für alle Zweige weiterhin alle Lösungen des Problems zu erhalten.

Für die Wahl der Spalte C, angewendet wird jegliche Regel systematisch zu arbeiten, aber einige sind erfolgreicher als andere. Um die Anzahl der Iterationen zu reduzieren, Knuth schlägt vor, eine Säule, die mit einem Minimum von 1, wie in der Operation des Algorithmus oben gezeigt. Darüber hinaus erneut, um die Berechnungen zu reduzieren, ist es klar, dass, wenn die Spalte C besteht nur aus 0, können Sie keine Unterzweig zu schaffen, in dem Algorithmus, so dass die Matrix A nicht leer ist, und deshalb der Ausfall der Algorithmus auf der aktuellen Zweig.

Beispiel

Betrachten Sie eine genaue Abdeckung Problem im Universum, mit der Sammlung von Sätzen, so dass:

  • ;
  • ;
  • ;
  • ;
  •  und
  • .

Oder, in Matrixform:

Wir sind jetzt an der Wurzel der Lösung Suchbaum. Wir beginnen die Auflösung.

Stufe 0
Schritt 1 Die Matrix ist nicht leer, wird es nicht zu einer Lösung kam.
Im Schritt 2 der ersten Spalte mit einem Minimum von 1 ist die Säule 1, die ausgewählt ist.

Schritt 3 Die Linien A und B der 1 in Spalte 1, startet er einen Unteralgorithmus für jede dieser zwei Linien.

Es ist nicht mehr ein Zweig auf dieser Ebene, endet der Algorithmus.

Schließlich fanden wir eine Lösung, um die genaue Abdeckung Problem zuvor in dem Artikel festgelegt.

Implementierungen

Die tanzenden Links, mehr als DLX bekannt, ist eine Technik, die von Knuth vorgeschlagen, um eine wirksame Umsetzung der Y-Algorithmus mit Hilfe eines Computers. Sie benutzen doppelt verkettete Listen. 1 gibt es eine Liste für jede Spalte und eine Liste für jede Zeile. Jeder der Matrix festgestellt wird in den oben, unterhalb verknüpft ist, links und rechts.

(0)
(0)
Kommentare - 0
Keine Kommentare

Fügen Sie einen Kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Zeichen übrig: 3000
captcha