2013年10月22日火曜日

開発環境

計算機プログラムの構造と解釈(Gerald Jay Sussman(原著)、Julie Sussman(原著)、Harold Abelson(原著)、和田 英一(翻訳)、ピアソンエデュケーション、原書: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の4(超言語的抽象)、4.4(論理型プログラミング)、4.4.1(推論的情報検索)、データベースの例、単純質問、合成質問、規則、問題 4.60を解いてみる。

その他参考書籍

問題 4.60

それぞれの人に固有のid(数値)を割り当ててそれをデータベースに追加し、近くに住む人同士の対を全て探した時、idがを比較してleves-nearの第一引数の方がidが小さい対のみをフィルタリングすれば、書く対が一度しか現れないようにすることができる。問題の例だと、(Hacker Alyssa P)のidを1、(Fect Cy D)のidの値を2とすれば、二度現れた対の後者の対のidを比較すると 2 < 1となり規則を満たさないので現れなくなる。

実際にidを追加して知覚にすむ人同士の対全てを探す。

ß
;; データベースに追加
(id (Bitddiddle ben) 0)
(id (Hacker Alyssa P) 1)
(id (Fect Cy D) 2)
(id (Tweakit Lem E) 3)
(id (Reasoner Louis) 4)
(id (Warbucks Oliver) 5)
(id (Scrooge Eben) 6)
(id (Cratchet Robert) 7)
(id (Aull DeWitt) 8)

;; 近くに住む人同士の対を、各対は一度しか現れないようにして探す
(and (lives-near ?person1 ?person2)
     (id ?person1 ?id1)
     (id ?person2 ?id2)
     (lisp-value (< ?id1 ?id2)))

質問システムの実装はまだ(この先に実装もあるみたい)なので、実装できたら入出力結果を確認してみることに。

0 コメント:

コメントを投稿