1.3.4 値として返される手続き (計算機プログラムの構造と解釈 第二版)
SICPの読んでたときにけっこう苦労した練習問題。
n乗根を求めるための平均緩和法の適用回数を「実験して確かめよ」って書いてあるけど、たぶん実験だけでは分からない。回答自体はカンニング(検索)して見つけたけど、なぜそうなのかをちゃんと説明しているのを見つけられなかったので、この記事で説明してみる。
平均緩和法、不動点探索の復習
回答のまえに平均緩和法や不動点探索についておさらいしておきます。
入力1 | 入力2 | And出力 | Or出力 |
---|---|---|---|
a | 0 | 0 | a |
a | 1 | a | 1 |
a | a | a | a |
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
@deltam それを実現する段数が最小の回路をXとしましょう。いま、出力が1だとすると、出力の手前の素子Yへの入力は(Xの段数最小性より)全てゼロのはずです。するとYがANDでもORでも入力が全てゼロなら出力は決して1にならないので矛盾。
Q.E.D.
— ITコンサルタント (@chiral) 2015, 4月 19