arbeite ich durch meine AI Lehrbuch Ich habe und ich habe für meinen Abschnitt zum letzten Hausaufgabe Problem kommen: „Implementieren des Unifikationsalgorithmus auf Seite skizzierte 69 in jeder Sprache Ihrer Wahl“Wie kann ich den Vereinigungsalgorithmus in einer Sprache wie Java oder C# implementieren?
Auf Seite 69 haben Sie den folgenden Pseudo-Code für den Unifikationsalgorithmus:
function unify(E1, E2);
begin
case
both E1 and E2 are constants or the empty list:
if E1 = E2 then return {}
else return FAIL;
E1 is a variable:
if E1 occurs in E2 then return FAIL
else return {E2/E1}
E2 is a variable
if E2 occurs in E1 then FAIL
else return {E1/E2}
either E1 or E2 are empty then return FAIL
otherwise:
begin
HE1 := first element of E1;
HE2 := first element of E2;
SUBS1 := unify(HE1, HE2);
if SUBS1 := FAIL then return FAIL;
TE1 := apply(SUBS1, rest of E1);
TE2 := apply(SUBS1, rest of E2);
SUBS2 := unify(TE1, TE2);
if SUBS2 = FAIL then return FAIL;
else return composition(SUBS1, SUBS2)
end
end
end
Jetzt verstehe ich das allgemeine Konzept der Vereinigung, aber ich habe absolut keine Ahnung, wie ich selbst, dies umzusetzen beginnen würde, in einer Sprache wie Java oder C#.
Ich bin nicht einmal sicher, wie die Methodensignatur aussehen würde. Welche Art von Variablen würde es brauchen? Ich bin mir ziemlich sicher, dass ich Listen zurückgeben muss, um Prädikat-Kalkül-Konstrukte darzustellen, aber das ist eine Vermutung.
Zum Beispiel, wenn es sagt "E1 ist eine Variable", nun, wenn ich es in die Unify-Methode übergebe, wie könnte es alles andere als sein? Ich könnte nach Null suchen, aber wäre das anders als "leere Liste"?
Kann mir jemand helfen oder in die richtige Richtung zeigen, um den Unificaiton-Algorithmus in C# oder Java zu implementieren?
Wenn ich so etwas wie Klausel 1. weiß (john, x) Klausel 2. weiß (Johannes, Maria) es funktioniert, aber es wäre auch mit so etwas wie Klausel arbeiten 1. weiß (john, x) Klausel 2. hasst (John, Mary) aber es sollte nicht für die letzteren funktionieren, weil der Prädikat Name kennt und hasst anders sind. Dieser Code muss also angepasst werden – conterio