SICP 読み (237) 4.4.1 推論的情報検索

文句は山ほどあるんですが、全部忘れてお勉強。

問題 4.59

a.から。

(meeting ?mtg (Friday ?time))

で良いかなぁ。次は b.ですがこんなカンジで良いのだろうか。

(rule (meeting-time ?person ?day-and-time)
      (meeting whole-company ?day-and-time)
      (and (job ?person (?division ?type))
	   (meeting ?division ?day-and-tme)))

なんかすごく直感的に書いてるんですが、別途実機で確認しますんで勘弁して下さひ。(何
次は c.です。これだと

(meeting-time (Hacker Alyssa P) (Wednesday ?time))

どの会合って分からんなぁ。

問題 4.60

どうしてこうなったか、と言われると_すべて見つける_から、としか言えん。対が一度しか現れないように、という事ですが方法としては

  • 検索結果をフィルタする
  • 可能性な対をリストにすれば良い

みたいなアイデアがとりあえず浮かぶ。リストに、というナニとしては

(a b c d e)

というメンツだとすると可能性は

((a b) (a c) (a d) (a e)
 (b c) (b d) (b e)
 (c d) (c e)
 (d e))

になるハズではないか、という意味ッス。そーゆー意味では最初の案も出てきた解がリストになってないとフィルタは不可能。
続きにトライしたいと思ってはおりますが、追記できるかどうかは不明ッス。

問題 4.61

ヤッツけてやれ。

;;; Query input:
(?x next-to ?y in (1 (2 3) 4)
;;; Query result:
(1 next-to (2 3) in (1 (2 3) 4)
((2 3) next-to 4 in (1 (2 3) 4)

あるいは

;;; Query input:
(?x next-to 1 in (2 1 3 1))
;;; Query result:
(2 next-to 1 in (2 1 3 1))
(3 next-to 1 in (2 1 3 1))

かなあ。

問題 4.62

酔っ払ってるんで微妙。明日も再度確認予定。以下でどうか。

(rule (last-pair (?x . ()) ?x))
(rule (last-pair (?x . ?y) ?y))

これで良いような気がするんですが駄目に違いないよなぁ。(とほほほ