Авторы : Энрико Тромбетта, Франческо Перроне.
В теоретической информатике система переходов — это концепция, используемая при изучении вычислений. Он используется для описания потенциального поведения дискретных систем. Он состоит из состояний и переходов между состояниями, которые могут быть помечены метками, выбранными из набора; одна и та же метка может появляться более чем на одном переходе. Если набор меток является одноэлементным, система по сути не имеет меток, и возможно более простое определение, в котором метки отсутствуют.
Взято из Википедии.
Вот сценарий, над которым я начал работать:
Проблема касается двух агентов, Хэла и Карлы. Хэл, диабетик, случайно потерял инсулин, и ему срочно нужно его принять, чтобы остаться в живых. У него нет времени покупать новый запас, но он знает, что Карла хранит немного инсулина дома, совсем рядом. У Хэла нет разрешения на доступ к собственности Карлы, кроме того, Хэл знает, что Карла тоже диабетик, и он может подвергнуть ее жизнь опасности, забрав ее запасы. С другой стороны, Хэл считает, что Карла, возможно, сможет позже купить немного инсулина.
Краткое обсуждение этого сценария можно найти в notes/LTS_insulin.pdf
(исходный код LaTex доступен в папке src
).
Эскиз реализации представлен в 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
[ ] Добавление маркировки к переходам.
[ ] ...