32. U-導出の特徴
計算木においては、縮約(reduction)に相当する操作
φ= mgu(B, P)
A <-
B, C
P <-
Q, R
λ
μ
A <-
Q, R, C λ + μ + φ
縮約
reduction
32
ユニファイアにおける合流性(Church-Rosser)
reduction
A <-B, C : ε
A <- C : φ A <- B : σ
A <- : φ + σ
C <- を適用B <- を適用
B <- を適用C <- を適用
33. AND/ORグラフ上での縮約
<-
append([1,2], [3], q)
append([x|y], z, [x|w]) <-
append(y, z, w)
G0:
R: ORアーク
ANDアーク
節ノード
33
append([], x, x) <-F:
G0
R
F
R’
R
F
G0
G1
G1
R
F
R”
R
F
G1
G2 G2
R
F
F
G2
G3
⇒→ → ⇒ →
→ 展開
⇒ 縮約
計算計算計算計算 = グラフの展開と縮約グラフの展開と縮約グラフの展開と縮約グラフの展開と縮約
35. UPグラフ
q
q
G0
1 [2] [3] ・
1
AND/ORグラフと違い、
変数(接点)とtermしか
現れない
combinationの失敗に
より、不要なORアーク
は除外される
35
x
F
x y z w
R
y z w
[]
・ ・
36. UPグラフの縮約
q
q
1 [2] [3] ・
1
[2] [3] ・
1
q
⇒
グラフの展開・縮約過程でUPのcombinationが起こる
一連のcombinationの結果、解が得られる
36
x y z w
y z w
y z w
x y z w
y z w
・ ・
[] [3] ・
[1,2]
q
y z w
x
[]
[1,2,3]
q
⇒
⇒
37. 導出木、AND木、UPと解の関係
G0
R
F
F: append([], x, x) <-
R: append([x|y], z, [x|w]) <- append(y,z,w)
G0: <- append([1,2], [3], q)
G0: <- append([1,2], [3], q)
R
σ1={[1|w]/q}
G0
1 [2] [3] ・
1
q
プログラムプログラムプログラムプログラム
導出木導出木導出木導出木 AND木木木木 UPの結合の結合の結合の結合
AND/ORグラフグラフグラフグラフ
解解解解
37
G1: <- append([2], [3], w)
σ2={[2|w’]/w}
G2: <- append([], [3], w’)
F
σ3={[3]/w’}
G3: □
σ1σ2σ3={[1,2,3]/q}
R
R
R
F
・ ・
x
[]
解解解解
[1,2,3]
q
⇒
全UPの
combination
38. 導出木、AND木、UPと解の関係
G0
R
F
F: append([], x, x) <-
R: append([x|y], z, [x|w]) <- append(y,z,w)
G0: <- append([1,2,3], [4], q)
1 [2,3] [4] ・
1
q
プログラムプログラムプログラムプログラム
導出木導出木導出木導出木 AND木木木木 UPの結合の結合の結合の結合
AND/ORグラフグラフグラフグラフ
解解解解
G0: <- append([1,2,3], [4], q)
R
σ1={[1|w]/q}
G0
38
G1: <- append([1,2], [4], w)
R
σ2={[2|w’]/w}
G2: <- append([2], [4], w’)
σ3={[3|w”]/w’}
G3: <- append([], [4], w”)
F
σ4={[4]/w”}
G4: □
σ1σ2σ3σ4={[1,2,3,4]/q}
R
R
R
R
F x
[]
解解解解
[1,2,3,4]
q
⇒
解解解解
全UPの
combination
・ ・
・ ・
39. 解が確定した場合の計算コスト
UPの構成が単純なappendの例で可能性を見てみる
<- append([1,2,..,n], [n+1, ..], q) の解は、n+1個のUPから構成される
C
C
C
C
C
C
C
C
C
UPs UPs
combination
operator
n+1
39
・・・
C
従来の方法
計算量:O(n)
計算時間(遅延):O(n)
C
C
C
C
2分木状に行う combination
計算量:O(n)
計算時間(遅延):O(log n)
・・・
もっとうまくやると...
計算量:O(log n)
計算時間(遅延):O(log log n)
answer
answer
41. トップダウンサーチ
appendの例でサーチの概要を示す
UP gからスタートし、UP rを結合させながら、
UP fとの結合が成功するまで順に進める
g
・・・
r
r
f
C
g
f
fail C
g
f
fail C
g
f
fail C
g
f
fail
step1 step2 step3 step4,5
UPの構成
41
C
r OK
C
r C
f
fail C
r C
f
fail
C
r
ansC
f
トップダウンサーチを実現するトップダウンサーチを実現するトップダウンサーチを実現するトップダウンサーチを実現するDFG
C
f
C
r
g
ans
・点線矢印は同期のためのトークン
が流れるリンク
・Cオペレータは入力(実線矢印)の
片方が変化するだけでも発火する
43. サーチ処理の並列化
appendのようなケースは、プロセッサの数だけ並列化可能
1つずつ generate and test するのでなく、k個単位で行う
トップダウンサーチを実現するトップダウンサーチを実現するトップダウンサーチを実現するトップダウンサーチを実現するDFG
C
f
C
r
トップダウンサーチを実現するトップダウンサーチを実現するトップダウンサーチを実現するトップダウンサーチを実現するDFG (k=4)
C
r
g
43
r
r
C
C
r
r
r
r
r
r
C
r
r
r
r
C
f
C
f
C
C
f
C
C
r2
r3
r4
g
ans
r2
r3
r4
C
f
g
ans