La questionQuel est l'algorithme "unificateur le plus général" optimal?
Quel est l'algorithme MGU le plus efficace? Quelle est sa complexité temporelle? Est-il assez simple de décrire comme une réponse de dépassement de pile?
J'ai essayé de trouver la réponse sur Google, mais continuez à trouver des fichiers .PDF privés auxquels je ne peux accéder que via un abonnement ACM.
J'ai trouvé une discussion SICP: here
Explication de ce qu'est un « algorithme d'unification la plus générale » est: Prenez deux arbres d'expression contenant « variables libres » et « constantes » ... par exemple Ensuite, l'algorithme Most Unifier général renvoie l'ensemble le plus général de liaisons qui rend les deux expressions équivalentes.
à savoir
mgu(e1,e2) = (x = z), q = (* y 3), y = unbound, r = 5
Par "plus général", vous pouvez lier au lieu (x = 1) et (z = 1) et cela également e1 et e2 équivalent, mais il serait plus spécifique.
L'article SICP semble impliquer qu'il est raisonnablement coûteux.
Pour info, la raison pour laquelle je demande est parce que je sais que l'inférence de type implique également cet algorithme "d'unification" et je voudrais le comprendre.
Connaissez-vous un document qui le décrit? Est-ce fondamentalement le même que celui décrit dans SICP? –
Oui, l'algorithme simple est essentiellement le même que celui décrit dans SICP. La présentation habituelle utilise des règles telles que la décomposition, l'affrontement, la vérification des occurrences, ..., donc vous pourriez vouloir chercher cela. – starblue