著者: エンリコ・トロンベッタ、フランチェスコ・ペローネ
理論的コンピューターサイエンスでは、遷移システムは計算の研究に使用される概念です。これは、離散システムの潜在的な動作を記述するために使用されます。これは状態と状態間の遷移で構成され、セットから選択されたラベルでラベル付けされる場合があります。同じラベルが複数のトランジションに表示される場合があります。ラベル セットがシングルトンの場合、システムには基本的にラベルが付けられていないため、ラベルを省略したより単純な定義が可能です。
ウィキペディアから引用。
これが私が取り組み始めたシナリオです。
この問題には、ハルとカーラという 2 人のエージェントが関係しています。糖尿病のハルは、誤ってインスリンを失い、生き続けるために緊急にインスリンを摂取する必要があります。新しいものを購入する十分な時間がありませんが、カーラが自宅のすぐ近くにインスリンを保管していることは知っています。ハルにはカーラの所有物にアクセスする許可がありません。さらに、ハルはカーラも糖尿病であることを知っており、彼女の食料を摂取することで彼女の命を危険にさらしている可能性があることを知っています。一方、ハルは、カーラが後でインスリンを購入できるかもしれないと信じています。
このシナリオに関する簡単な説明は、 notes/LTS_insulin.pdf
にあります (LaTex ソースはsrc
フォルダーの下にあります)。
実装スケッチは Prolog のsrc/LTS.pl
に提供されています (特に SWI Prolog を採用することにしました)。
パスを呼び出すには、インタプリタにナレッジベースをロードし、初期状態をロードして、パスを実行します。
例えば:
?- [LTS].
initial_state ( InitialState ), path( InitialState , Path ) .
InitialState = . ..
Path = . ..
[And a bunch of alternative paths]
true .
?- initial_state(InitialState), export_tree("tree.csv", InitialState).
InitialState = . ..
true .
後者のコマンドは、すべてのパスの CSV リストを書き留める必要があります。形式はsrc/LTS.pl
に文書化されていますが、(できれば) 非常に簡単であるはずです。
マイルストーン:
[ ] ツリー関数の LTS 実装を終了します。
[ ] パーサーを実装する
[ ] LTS の議論を改善する
[ ] トランジションにラベルを追加します。
[ ] ...