저자 : 엔리코 트롬베타, 프란체스코 페로네
이론 컴퓨터 과학에서 전이 시스템은 계산 연구에 사용되는 개념입니다. 이는 개별 시스템의 잠재적인 동작을 설명하는 데 사용됩니다. 이는 상태와 상태 간 전환으로 구성되며 세트에서 선택한 레이블로 레이블이 지정될 수 있습니다. 동일한 레이블이 둘 이상의 전환에 나타날 수 있습니다. 레이블 세트가 싱글톤인 경우 시스템은 기본적으로 레이블이 지정되지 않으며 레이블을 생략하는 더 간단한 정의가 가능합니다.
Wikipedia에서 가져옴.
제가 작업을 시작한 시나리오는 다음과 같습니다.
문제에는 Hal과 Carla라는 두 명의 에이전트가 관련되어 있습니다. 당뇨병을 앓고 있는 할(Hal)은 우연히 인슐린을 잃어버렸고, 살아남기 위해 급히 인슐린을 투여해야 합니다. 그는 새 공급품을 구입할 시간이 충분하지 않지만 Carla가 집, 아주 가까운 곳에 인슐린을 보관하고 있다는 것을 알고 있습니다. Hal은 Carla의 재산에 접근할 수 있는 권한이 없습니다. 게다가 Hal은 Carla도 당뇨병을 앓고 있으며 Carla의 공급품을 빼앗아 그녀의 생명을 위험에 빠뜨릴 수 있다는 것을 알고 있습니다. 반면 Hal은 Carla가 나중에 인슐린을 구입할 수 있을 것이라고 믿습니다.
이 시나리오에 대한 간략한 설명은 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 논의 개선
[ ] 전환에 라벨링을 추가합니다.
[ ] ...