質問
最も効率的な MGU アルゴリズムは何ですか? その時間複雑度は? スタックオーバーフローの回答で説明するのは簡単ですか?
Google で答えを見つけようとしていますが、ACM サブスクリプションを介してのみアクセスできるプライベート PDF を見つけ続けています。
SICP で 1 つのディスカッションを見つけました: here
「最も一般的な統一アルゴリズム」とは何かについての説明: 「自由変数」と「定数」を含む 2 つの式ツリーを取得します。たとえば、
e1 = (+ x? (* y? 3) 5) e2 = (+ z? q? r?)
次に、Most General Unifier アルゴリズムは、2 つの式を同等にする最も一般的なバインドのセットを返します。例えば:
mgu(e1, e2) = { x ↦ z,
q ↦ (* y 3),
y ↦ unbound,
r ↦ 5 }
「最も一般的な」とは、代わりに{x ↦ 1}
and {z ↦ 1}
and をバインドできることを意味しますが、それはe1
and とe2
同等になりますが、より具体的になります。
SICP の記事は、それがかなり高価であることを暗示しているようです。
情報については、私が尋ねている理由は、型推論にもこの「統一」アルゴリズムが含まれていることを知っており、それを理解したいからです。