次の用語(bruijn-indexesを使用):
BADTERM = λ((0 λλλλ((((3 λλ(((0 3) 4) (1 λλ0))) λλ(((0 4) 3) (1 0))) λ1) λλ1)) λλλ(2 (2 (2 (2 (2 (2 (2 (2 0)))))))))
教会に適用すると、数N
は、単純なものを含むいくつかの既存のエバリュエーターで通常の形式にすぐに評価されます。しかし、その用語を相互作用ネットにエンコードし、Lampingの抽象アルゴリズムを使用して評価すると、に関連して指数関数的にベータ削減が行われN
ます。Optlamでは、具体的には次のとおりです。
N interactions(betas) (BADTERM N)
1 129(72) λλλ(1 (2 (2 (2 (2 (2 (2 (2 0))))))))
2 437(205) λλλ(2 (1 (2 (2 (2 (2 (2 (2 0))))))))
3 976(510) λλλ(1 (1 (2 (2 (2 (2 (2 (2 0))))))))
4 1836(1080) λλλ(2 (2 (1 (2 (2 (2 (2 (2 0))))))))
5 3448(2241) λλλ(1 (2 (1 (2 (2 (2 (2 (2 0))))))))
6 6355(4537) λλλ(2 (1 (1 (2 (2 (2 (2 (2 0))))))))
7 11888(9181) λλλ(1 (1 (1 (2 (2 (2 (2 (2 0))))))))
8 22590(18388) λλλ(2 (2 (2 (1 (2 (2 (2 (2 0))))))))
9 43833(36830) λλλ(1 (2 (2 (1 (2 (2 (2 (2 0))))))))
10 85799(73666) λλλ(2 (1 (2 (1 (2 (2 (2 (2 0))))))))
11 169287(147420) λλλ(1 (1 (2 (1 (2 (2 (2 (2 0))))))))
12 335692(294885) λλλ(2 (2 (1 (1 (2 (2 (2 (2 0))))))))
13 668091(589821) λλλ(1 (2 (1 (1 (2 (2 (2 (2 0))))))))
14 1332241(1179619) λλλ(2 (1 (1 (1 (2 (2 (2 (2 0))))))))
15 2659977(2359329) λλλ(1 (1 (1 (1 (2 (2 (2 (2 0))))))))
BOHMなどの同様のエバリュエーターでは、ベータステップははるかに少なくなりますが、相互作用は多くなります。最適なエバリュエーターが最適である場合、既存のエバリュエーターよりも漸近的に遅い用語をどのように評価できますか?
このリンクには、用語の起源と、反対に動作する同じ関数の実装についての説明があり、ほとんど奇妙なことに、指数時間で実行する必要があります-ほとんどの評価者では指数時間で実行されますが、最適です評価者は線形時間でそれを正規化します!
Such a number must be, by definition, basically the same on a given term
ので、私は考えました。Optlamが私がテストした多くのケースでBOHMと同じ数のベータを提供するので、それは私を驚かせました。ただし、必要に応じて呼び出す戦略のため、場合によってはそれより少なくなります。誰かがオラクルなしの削減は実際には最適ではないと私に言ったが、今はもう分からない。全体として、私は深く混乱しています。しかし、いいえ、Optlamが正しく機能している証拠はまったくありません。私はあなたのコメントの残りについて考えています-ありがとう。