• 検索結果がありません。

より有効な選択順の検討

V´ azquez らのアルゴリズムの出力の平均状態数の 削減

4.6 より有効な選択順の検討

4.6.1 状態の選択順

V´azquezらのアルゴリズムで任意性のある状態の選択順について,サイズの小さい状

P を優先する戦略を考案して実験を行い,戦略の有効性を確認したが,サイズの小さ い状態を優先する戦略より,サイズの大きい状態を優先する戦略のほうが,出力の状態 数が小さくなる例も見つかった.その例を,図4.11に示す.

図4.11では,NFA Mを共通の入力とするV´azquezらのアルゴリズムの,サイズの小 さい(遷移元)状態を優先する場合と,サイズの大きい(遷移元)状態を優先する場合 のそれぞれの処理過程を示しているが,文字はb, aの選択順とした.図中の分岐部分に 着目すると,サイズの大きい遷移元状態{1,2}を優先した方が,サイズの小さい状態{0} を優先した方より,分割に関与しない空集合を除けば,遷移先状態が小さくなってい る.そして,大きい状態を優先する方は,状態{4} ⊂ {3,4}が先に出現することで,状 態{3,4}の出現を防げているといえる.

前述の状態の選択戦略は,遷移先の状態δ(P, a)を小さくするために,遷移先が小さく なる可能性が高い,小さい遷移元の状態P を選ぶとしたため,図4.11のような例は防ぐ ことができない.こうした問題を解決する選択順としては,V´azquezらのアルゴリズム を逸脱する部分はあるが,例えば,選択待ちの全ての状態P について,その全ての遷移 先をあらかじめ列挙しておいて,その遷移先が小さいものから処理を進めるといったも のが考えられる.

0 10 20 30 40 50 60 70 80

|Q|

0 20 40 60 80 100 120

|Q'|

Minimum-delta()-first Minimum-state-first Minimum-state-delta()-first

図 4.8: 状態と文字の選択順による,V´azquezらのアルゴリズムの出力の状態数の違い

|Σ|= 4).

0 10 20 30 40 50 60 70 80

|Q|

0 20 40 60 80 100 120

|Q'|

Minimum-delta()-first Minimum-state-first Minimum-state-delta()-first

図 4.9: 状態と文字の選択順による,V´azquezらのアルゴリズムの出力の状態数の違い

|Σ|= 16).

0 5 10 15 20 25 30

alphabet size 0

5 10 15 20 25 30 35

|Q'|

Minimum-delta()-first Minimum-state-first Minimum-state-delta()-first

図 4.10: 状態と文字の選択順による,V´azquezらのアルゴリズムの出力の状態数の違い

|Q|= 20).

4 ⊂ {3,4}

𝛿 1,2,3,4 , 𝑏 = 0,1,2,3,4 , 𝛿 1,2,3,4 , 𝑎 = 1,2

:選択済みの状態

:選択待ちの状態

入力

𝑏 𝑏

0 1 2 𝑎 3

𝑎

𝑎 𝑎 𝑏

4 𝑎

𝑏 𝑏

{1,2,3,4}

{1,2, 3,4}

{1,2}

𝑏

{4}

{0}

𝑎 𝑏

{1}

𝑏 𝑎, 𝑏

𝑏 {1,2,3,4}

{1,2}

𝑏 {0}

𝑎 𝑏

{1,2,3,4}

{1,2}

𝑏

{3,4}

{0}

𝑎 𝑎

𝑏 𝑎

𝛿 0 , 𝑏 = ∅, 𝛿 0 , 𝑎 = 0,3,4

𝛿 1,2 , 𝑏 = 0,4 , 𝛿 1,2 , 𝑎 = 1

サイズの大きい 状態{1,2}を優先 サイズの小さい 状態{0}を優先

図 4.11: サイズが大きい状態を優先した方が,V´azquezらのアルゴリズムの出力の状態 数が小さくなる例.

4.6.2 文字の選択順

V´azquezらのアルゴリズムで任意性のある文字の選択順について,遷移先状態δ(P, a) のサイズが小さくなる文字aを優先する戦略を考案して実験を行い,戦略の有効性を確 認したが,遷移先の小さい文字を優先する戦略より,大きい文字を優先する戦略のほう が,出力の状態数が小さくなる例も見つかった.その例を,図4.12に示す.

図4.12では,図4.11と同じNFAMを共通の入力とするV´azquezらのアルゴリズムの,

遷移先の小さい文字を優先する場合と,大きい文字を優先する場合のそれぞれの処理過程 を示しているが,状態は{1,2,3,4},{1,2}の選択順とした.遷移先の小さい文字を優先す る場合は,先に既出の状態{1,2,3,4}の真部分集合である{1,2}の方を選択し出現させ,

後で既出の状態{1,2,3,4}を部分集合にもつ{0,1,2,3,4}の方を選択し,状態{3,4},{0} を出現させている.対して,遷移先の大きい文字を優先する場合は,先に{0,1,2,3,4}の 方を選択することで,状態{3,4}は出現していない.そして,状態{4} ⊂ {3,4}が先に 出現することで,状態{3,4}の出現を防げているといえる.

図4.12のような例は,遷移先状態δ(P, a)が小さいものを優先すればよいとは限らない ことを示すものであり,前項の最後に述べた,遷移先状態を列挙する戦略でも防ぐことが

4 ⊂ {3,4}

𝛿 1,2,3,4 , 𝑎

= 1,2

{1,2,3,4}

遷移先の大きい 文字𝑏を優先 遷移先の小さい

文字𝑎を優先

{1,2,3,4}

{1,2}

𝑎

{1,2,3,4}

{1,2}

𝑏

{3,4}

{0}

𝑎, 𝑏 𝑎, 𝑏

{1,2,3,4} 𝑏 {0}

𝑏

{1,2,3,4}

{1,2}

𝑏 {0}

𝑎 𝑏

{1,2, 3,4}

{1,2}

𝑏

{4}

{0}

𝑎 𝑏

{1}

𝑏 𝑏

𝑏 𝛿 1,2,3,4 , 𝑏

= 0,1,2,3,4 𝛿 1,2,3,4 , 𝑎

= 1,2 𝛿 1,2,3,4 , 𝑏

= 0,1,2,3,4

𝛿 1,2 , 𝑏

= 0,1,4

:選択済みの状態

:選択待ちの状態

入力

𝑏 𝑏

0 1 2 𝑎 3

𝑎

𝑎 𝑎 𝑏

4

𝑏 𝑏

図 4.12: 遷移先が大きくなる文字を優先した方が,V´azquezらのアルゴリズムの出力の 状態数が小さくなる例.

できない.こうした問題を解決する可能性のある選択順としては,既出の状態同士でその 包含関係を調べて,他のどの状態も部分集合として持たない状態P1∀P0 Q\{P1}, P0P1 Q)を把握しておき,P1を部分集合にもつ遷移先状態δ(P, a)がある場合には,その 遷移先をもつ遷移元状態P や文字aを優先するといったものが考えられる.さらに,P1 を部分集合にもつ遷移先δ(P, a)が複数ある場合には,P1とサイズの近い,小さい状態か ら選択するのがよいと考えられる.これは,図4.13に示した例から予想できる.

図4.13は,上記のP1 ={0}の例であり,{0}を部分集合にもつ遷移先状態の選択順に よる,V´azquezらのアルゴリズの処理過程の違いを表すが,{0}とサイズの近い,小さい 遷移先状態を優先する場合の方が,より小さい状態{2},{3}を出現させている.

{0}

{0}

{1}

𝑎 𝑎

{0}

{1} {2}

𝑏 𝑎, 𝑏

𝑎, 𝑏

{0}

{1}

𝑐

{2}

{3}

𝑏, 𝑐 𝑎, 𝑏, 𝑐

𝑎, 𝑏, 𝑐

{0} 𝑐 {1,2,3}

𝑐

{0} 𝑐

{1,2}

{1,2,3}

𝑏 𝑏, 𝑐

{0}

{1}

𝑐

{1,2}

{1,2,3}

𝑏 𝑎

𝑎, 𝑏, 𝑐

𝛿 0 , 𝑐

= 0,1,2,3

𝛿 0 , 𝑎

= 0,1 𝛿 0 , 𝑏

= 0,1,2 𝛿 0 , 𝑏

= 0,1,2

𝛿 0 , 𝑐

= 0,1,2,3 𝛿 0 , 𝑎

= 0,1 0を部分集合にもつ遷移先の

大きいものを優先

入力𝑀 = 𝑄, Σ, 𝛿, 𝐼, 𝐹

:選択済みの状態

:選択待ちの状態 𝐼 = 0 ,

𝛿 0 , 𝑎 = 0,1 , 𝛿 0 , 𝑏 = 0,1,2 , 𝛿 0 , 𝑐 = 0,1,2,3 .

0を部分集合にもつ遷移先の 小さいものを優先

2 ⊂ {1,2}

3 ⊂ {1,2,3}

図 4.13: V´azquezらのアルゴリズムの文字の選択順の改良案の例.

5

azquez らのアルゴリズムの高速な実装手法の

関連したドキュメント