開発環境
- OS X Lion - Apple(OS)
- Emacs、BBEdit - Bare Bones Software, Inc. (Text Editor)
- Scheme (プログラミング言語)
- MIT/GNU Scheme (処理系)
計算機プログラムの構造と解釈(Gerald Jay Sussman(原著)、Julie Sussman(原著)、Harold Abelson(原著)、和田 英一(翻訳)、ピアソンエデュケーション、原書: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の4(超言語的抽象)、4.3(Scheme の変形 - 非決定性計算)、4.3.1(ambと探索)、駆動ループ、問題 4.37を解いてみる。
その他参考書籍
問題 4.37
lowが1、highが10、iが7、jが8のときの調べなければならない可能性の数を考えてみる。
問題4.35のPythagoras三角形を生成する方法の場合。
k 8 49 + 64 = 113 > 64 失敗 k 9 113 > 81 失敗 113 > 100 失敗
よって、調べなければならない可能性の数は3通り。
Benの主張するPythagoras三角形を生成する方法の場合。
hsq 100 ksq 113 100 < 113 失敗
よって、Benの主張するピタゴラスの三角形を生成する方法は、調べなければならない可能性の数は1通り。
よって、lowが1、highが10、iが7、jが8のときの調べなければならない可能性の数は、Benの主張するピタゴラスの三角形を生成する方法の方が効率がよい。
一般にも、Benのピタゴラスの三角形を生成する方法は問題4.35のものよりずっと効率がよい。(i、jの値から、i^2 + j^2 = k^2を満たすkが存在するのかを、highの値によって事前に調べることにより、最初の方法よりも調べなければならないkの可能性の数が少なくて済むから。)
0 コメント:
コメントを投稿