Übung 9 -Backtracking

barracuda317
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 187
Registriert: 12. Okt 2011 18:15

Übung 9 -Backtracking

Beitrag von barracuda317 »

Hallo,

leider ist mir folgender Hinweis noch nicht klar:

Für a(X,Y) -> b(X),!,c(Y)

steht in der Erklärung: im Gegensatz zu 1. kann letzte Regel generell erreicht werden (z.B. a(3,3), da Abbruch bei b(3))

Warum darf er für b(X) die Variable X mit etwas anderem als X=1 substiutieren. Eigentlich ist es doch so, dass er nach X=1 kein Backtracking zu X=2 und folglich auch nicht zu X=3 machen darf.

Oder heißt Backtracking in diesem Fall nur, er darf keine weiteren Lösungen finden, wenn er bereits eine Lösung (für X=1) gefunden hat? Er darf sehr wohl aber Backtracking machen, wenn alle bisherigen versuche zu einem Fail geführt haben.

eneldo
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 220
Registriert: 19. Mai 2006 13:06
Kontaktdaten:

Re: Übung 9 -Backtracking

Beitrag von eneldo »

Hallo,

der Hinweis gilt konkret für die Abfrage "a(3,3).". Prolog würde die erste Regel anwenden, beim Überprüfen von b(3) aber abbrechen und erst garnicht ins Cut "hineinlaufen". Als nächstes würde Prolog deshalb die zweite Regel ausprobieren, und erfolgreich beantworten, obwohl er sie bei der Abfage "a(X,Y)" garnicht finden würde.

Deshalb auch nein zu der letzten Frage, das darf Prolog nicht.

Gruß
Eneldo Loza

Antworten

Zurück zu „Archiv“