小中大 ┃ 中 小□大 ┃ ┃ 小中大
小中大 中小大 ┃ ┃ 中 中 小□大 □小大 ┗━━┳━━┛ 小 中 □□大
S S ┏━┻━┓ ┏━┻━┓ ┃ ┃ ┃ ┃ A━━━B A B ┃ ┃ ┏┻┓ ┏┻┓ C G C B A G ┃ ┃ G C
2分木 |
1 ┏━━━━━┻━━━━━┓ 2 3 ┏━━┻━━┓ ┏━━┻━━┓ 4 5 6 7 ┏━┻━┓ ┏━┻━┓ ┏━┻━┓ ┏━┻━┓ 8 9 10 11 12 13 14 15
1 ┏━━━━━┻━━━━━┓ 2 9 ┏━━┻━━┓ ┏━━┻━━┓ 3 6 10 13 ┏━┻━┓ ┏━┻━┓ ┏━┻━┓ ┏━┻━┓ 4 5 7 8 11 12 14 15
S:=初期状態; if S が解 then success; else L:=[S]; fi; do while L≠[]; H:=car(L); if H から枝が生成できる then do until {H から新たな枝が生成できない} S:=枝; if S が解 then success; else L:=set_tail(L,S); fi; od; fi; L:=cdr(L); od; failure; 小 中 [[[大],[],[]]] 中 中 [[[大],[小],[]],[[大],[],[小]]] 小 中 中 [[[大],[小],[中]],[大],[],[]],[大],[],[小]], 小 中 中 [[大],[中],[小]],[[大],[小],[]],[[大],[],[]]]
T:=[初期状態S]; do while T≠[]; H:=car(T); if H が解 then sucess; fi; if H から新たな枝が生成できる then do S:=枝; if S が解 then success else T:=append(S,T); fi; od; fi; od; failure; 小 中 [[[大],[],[]]] 小 中 中 [[[大],[小],[]],[[大],[],[]]] 小 中 中 [[[大],[小],[中]],[[大],[小],[]],[[大],[],[]]]
初期状態 目標 ┃ ┃ ┃ ┃ ○○○┃ ┃ ┃ ┃ ○○○ ×××┃= ┃ ┃ =┃ ××× ┃ ┃ ┃ ┃
(3,3,1) ○○○×××= ┏━━━━╋━━━━┓ (3,2,0) ┃ ┃ ○○○×× ×= (3,1,0) ┃ ○○○× ××= ┃ (2,2,0) ○○×× ○×= ┗━┳━━┛ (3,2,1) ○○○××= × ┃ (3,0,0) ○○○ ×××= ┃ (3,1,1) ○○○×= ×× ┃ (1,1,0) ○× ○○××= ┃ (2,2,1) ○○××= ○× ┃ (0,2,0) ×× ○○○×= ┃ (0,3,1) ×××= ○○○ ┃ (0,1,0) × ○○○××= ┏━┻━━┓ (1,1,1) ┃ ○×= ○○×× ┃ (0,2,1) ××= ○○○× ┗━┳━━┛ (0,0,0) ○○○×××= (3,3,1)┳(3,2,0) ┣(3,1,0)┳(3,2,1)━(3,0,0)━(3,1,1)━(1,1,0)┓ ┗(2,2,0)┛ ┃ ┏━━━━━━━━━━━━━━━━━━━━━━━━┛ (2,2,1)━(0,2,0)━(0,3,1)━(0,1,0)┳(1,1,1)┓ ┗(0,2,1)┻(0,0,0) 探索木と有向グラフ/有限オートマトン状態空間探索(state-space search)![]()
初期状態 目標状態 ┃ ┃ ┃ ┃ 夫1,妻1,夫2,妻2┃ボ ┃ ┃ ボ┃夫1,妻1,夫2,妻2 ┃ ┃ ┃ ┃ 可能な渡り方 夫1 夫2 夫1,妻1 夫2,妻2 夫1,夫2 嫉妬条件 夫1,妻2 夫2,妻1 解は2つ
┏━━○×○━━┓ ┏━━×○×━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ×○○━━╋━━××× ○××━━╋━━○○○ ┃ ┃ ┃ ┃ ┃ ┃ ┗━━○○×━━┛ ┗━━××○━━┛
【初期状態】 【目標状態】 ┏━┳━┳━┓ ┏━┳━┳━┓ ┃1┃2┃3┃ ┃1┃2┃3┃ ┣━╋━╋━┫ ┣━╋━╋━┫ ┃4┃5┃6┃ ┃4┃5┃6┃ ┣━╋━╋━┫ ┣━╋━╋━┫ ┃7┃8┃ ┃ ┃8┃7┃ ┃ ┗━┻━┻━┛ ┗━┻━┻━┛ ┏━┳━┳━┓ ┃x1┃x2┃x3┃ ┣━╋━╋━┫ ┃x4┃x5┃x6┃ ┣━╋━╋━┫ ┃x7┃x8┃x9┃ ┗━┻━┻━┛
|
|
|
|||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||
|
|
|
|
─────────────→ 必ず答えがあり 一意的であること |
|