理論計算機科学、特に形式言語理論において、クリーネのアルゴリズムは、与えられた非決定性有限オートマトン(NFA)を正規表現に変換する。他の変換アルゴリズムとともに、正規言語のいくつかの記述形式の同等性を確立する。同じ方法の別の表現としては、ブロゾフスキーとマクラスキーによる「消去法」 、マクノートンと山田のアルゴリズム、[1]、およびアーデンの補題の使用などがある。
アルゴリズムの説明
GrossとYellen (2004)によると、[2]アルゴリズムはKleene (1956)にまで遡ることができます。 [3]決定性有限オートマトン(DFA)の場合のアルゴリズムのプレゼンテーションは、HopcroftとUllman (1979)で提供されています。[4]以下のNFAのアルゴリズムのプレゼンテーションは、GrossとYellen (2004)に従っています。[2]
非決定性有限オートマトン M = ( Q , Σ, δ, q 0 , F )、Q = { q 0 ,..., q n }の状態集合が与えられた場合、アルゴリズムは次を計算する。
- 集合Rキイジ
kより大きい番号の状態を経由せずにM を状態q iからq jに移行させるすべての文字列。
ここで、「状態を通過する」とは、その状態に入ることとそこから出ることを意味するため、 iとj は両方ともkよりも高くなる可能性がありますが、中間の状態はそうではありません。各セットRキイジ
は正規表現で表現され、アルゴリズムはk = -1, 0, ..., nについて段階的に計算する。nより大きい番号の状態は存在しないので、正規表現Rn0j
さんは、 Mを開始状態 q 0からq jまで取るすべての文字列の集合を表す。F = { q 1 ,..., q f }が受け入れ状態の集合である場合、正規表現R 01 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 56 67 78 89 90 100 110 1
| ... |り0fの
Mが受け入れる言語を表します。
k = -1の場合の初期正規表現は、i ≠ jに対して次のように計算されます。
- R−1
ij= a 1 | ... | a m ただしq j ∈ δ( q i , a 1 )、...、q j ∈ δ( q i , a m )
i = jの場合、次のようになります。
- R−1
ii= a 1 | ... | a m | ε ただしq i ∈ δ( q i , a 1 ), ..., q i ∈ δ( q i , a m )
つまり、R−1
ijiからjへの遷移を表すすべての文字を記述し、 i = jの場合には ε も含めます。
その後、各ステップで式Rキイジ
前のものから計算すると
- Rキイジ
=りk -1
ik(Rk -1
kk) * Rk -1
kj|りk -1
ij
アルゴリズムの動作を理解する別の方法は、「消去法」として理解することです。これは、0からnまでの状態が順次削除される方法です。状態kが削除されると、正規表現Rk -1
ijは、状態i > kから状態j > kへの経路をラベル付けする単語を記述し、 Rに書き換えられる。キイジ
「除去された」状態kを経由する可能性を考慮するためです。
kに関する帰納法によって、各式Rの長さ[5]が示される。キイジ
最大で1/3 (4 k +1 (6 s +7) - 4) 個のシンボル、ここでs はΣ 内の文字数を表します。したがって、Mが受け入れる言語を表す正規表現の長さは最大で1/3 (4 n +1 (6 s +7) f - f - 3) シンボル、ここでf は最終状態の数を表します。この指数関数的な爆発は避けられません。なぜなら、同等の正規表現が指数関数的なサイズになる必要がある DFA のファミリーが存在するからです。[6]
実際には、アルゴリズムを実行して得られる正規表現のサイズは、手順によって状態が考慮される順序、つまり 0 からnまでの番号が付けられる順序によって大きく異なる可能性があります。
例

図に示すオートマトンMは、 M = ( Q , Σ, δ, q 0 , F ) と記述でき、
- 状態の集合Q = { q 0 , q 1 , q 2 }、
- 入力アルファベットΣ = { a , b }、
- 遷移関数 δ は、 δ( q 0 , a )= q 0、 δ( q 0 , b )= q 1、 δ( q 1 , a )= q 2、 δ( q 1 , b )= q 1、 δ( q 2 , a )= q 1、 δ( q 2 , b )= q 1、
- 開始状態q 0、および
- 受け入れ状態の集合F = { q 1 }。
クリーネのアルゴリズムは、最初の正規表現を次のように計算する。
その後、Rキイジ
Rから計算されるk -1
ijk = 0、1、2
について段階的に説明します。クリーネ代数等式を使用して、正規表現を可能な限り簡略化します。
- ステップ0
- ステップ1
- ステップ2
q 0 は開始状態であり、q 1 は唯一の受け入れ状態であるため、正規表現R2
01オートマトンが受け入れるすべての文字列の集合を表します。
参照
- フロイド・ワーシャルアルゴリズム— 特定のクリーネ代数を用いたクリーネアルゴリズムによって実装できる重み付きグラフ上のアルゴリズム
- スターの高さの問題— 特定の DFA に対応するすべての正規表現のスターの最小のネスト深度はどれくらいでしょうか?
- 一般化されたスターの高さの問題- 正規表現で補数演算子が追加で許可されている場合、 Kleene アルゴリズムの出力のスターのネストの深さを固定された境界に制限できますか?
- トンプソンの構築アルゴリズム- 正規表現を有限オートマトンに変換する
参考文献
- ^ McNaughton, R.; Yamada, H. (1960 年 3 月)。「オートマトンのための正規表現と状態グラフ」。IRE Transactions on Electronic Computers。EC - 9 (1): 39–47。doi : 10.1109 /TEC.1960.5221603。ISSN 0367-9950 。
- ^ ab Jonathan L. Gross および Jay Yellen 編 (2004)。グラフ理論ハンドブック。離散数学とその応用。CRC Press。ISBN 1-58488-090-2。ここでは、セクション2.1、p.65のコメントR13を参照
- ^ Kleene, Stephen C. (1956). 「神経網と有限オートマトンにおけるイベントの表現」(PDF) .オートマトン研究、Annals of Math. Studies . 34 . プリンストン大学出版局。ここ: セクション9、p.37-40
- ^ John E. Hopcroft、Jeffrey D. Ullman (1979)。オートマトン理論、言語、計算入門。Addison- Wesley。ISBN 0-201-02988-X。ここ: セクション 3.2.1、91-96 ページ
- ^ より正確には、正規表現記号「a i」、「ε」、「|」、「*」、「·」の数であり、括弧は数えません。
- ^ グルーバー、ヘルマン;ホルツァー、マルクス (2008)。 「有限オートマトン、ダイグラフ接続性、および正規表現のサイズ」。ルカのアセトにて。ダムガルド、イワン。ゴールドバーグ、レスリー・アン。ハルドルソン、マグナス M.インゴルフスドッティル、アンナ。 Walukiewicz、Igor (編)。オートマトン、言語、プログラミング。コンピューターサイエンスの講義ノート。 Vol. 5126.シュプリンガー・ベルリン・ハイデルベルク。 39-50ページ。土井:10.1007/978-3-540-70583-3_4。ISBN 9783540705833. S2CID 10975422。定理16。
