アットウィキロゴ

Stage 2: Specification

この点におけるアイデアは、あいまいさが許されるなら、GPSで解決する問題がなにを意味するかということだろう。Lispにそって気付いたことを表現していくと次のようになる。

  • "なにを持っているか"という現在の状態と、目的の状態"何を欲っしているか"の条件のセットを表現することができる。CommonLispは setsのデータタイプは持ってないが、listはあり、listでsetを実装することができる。それぞれの状態はsymbolで表現することができる。そうすれば、典型的なゴールはlistの2つの条件(rich famous)になるし、典型的な現在の状態も表現できる(unknown poor)。

  • 許される演算子のlistが必要になる。このlistは前提条件や問題にかぎらず一定であるが、新しい問題のドメインに対しては変更可能である。

  • operatorはactionの構造や前提条件のlistや効果のlistとして表現される。現在の状態から条件を追加削除することができる効果を可能な限り設置することができる。そして、効果のlistを追加のlistと削除のlistに分割する。これはGPS実装のSTRIPSという方法によるもので、この章でそれについては扱う。オリジナルのGPSは仕様の作用に対して柔軟ではあるが、それゆえ効率的ではない。

  • GPSによって記述される完全な問題は、最初の状態、ゴールの状態と、知られているoperatorのsetである。なので、GPSは3つの引数をとる関数となる。たとえばこのように呼びだす。
(GPS '(unknown poor) '(rich famous) list-of-ops)
別の言葉でいうと、poorでunknownな状態ではじまって、operatorを組み合わせて、richでfamousになる。GPSは問題が解決されたらtrueを返し、どのようなactionをしたかを表示する。もっとも単純な方法は、ゴールにたどりついたときに、それを実行することである。もし、すべて達成されれば、問題は解決されている。

  • 単純なゴールの状態は2つの方法で達成される。現在の状態がそうであれば、ゴールですることはなにもない。そうでなければ適切operatorを探し、適用する。

  • 作用のうちの一つのoperatorが現在の状態にgoalのquestionを足すなら、それは適切なoperatorである。

  • すべての前提条件を達成できるなら、operatorを適用できる。前のパラグラフから、ゴールを達成したという概念を定義すればよいのだから、これは簡単。一度、前提条件が達成されたら、operatorの適用はactionの実行を意味し、add-listとdelete-listによって現在の状態が更新されるということになる。プログラムはシミュレーションなので-実際には車を運転したり、電話をかけたりするのだけど-単純にactionの内容を表示して、実際の行動は特になにもしない
最終更新:2008年01月10日 07:44
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。