「0がn個続いたあと1がn個続く」を正規表現にできるか?                01, 0011, 000111, .....2013.3.28 たぬき
おはなしの流れ全ての正規表現には等価な有限オートマトンがある。有限オートマトンには必要条件がある。さっきの問題は有限オートマトンの必要条件を満たさない。よって、正規表現にはできない。
有限オートマトン有限オートマトンとは計算機のモデルである。有限個の状態があり、入力信号によって状態間を遷移する。ひとつの開始状態といくつかの受理状態がある。        0            1         1           状...
正規表現のオートマトン変換全ての正規表現は有限オートマトンへ変換できる。時間が限られているので、正確な定義と証明は飛ばす。※証明は「計算理論の基礎 第一巻」など参照。ここでは幾つか正規表現をオートマトンに変換してみる。
正規表現→オートマトン(1)0*1                like検索                  [0,1]*010[0,1]*      1                   0         1       0 0   ...
正規表現→オートマトン(2)0*1*001                                                          0,1                                  0     ...
必要条件:ポンピング補題あるルールに従っている文字列の集合Aがオートマトンで表せるとする。オートマトンの状態数をpとする。そのとき、Aの集合に含まれる文字列のうち、長さpを超えるものは全て、以下の条件を満たす3つの文字列片x,y,zに分解できる...
ポンピング補題 簡易証明状態の数pより長い任意文字列sは、必ず同一の状態を通るはず(sによる行き先はpより多いのだから)。よって、通る遷移にループが生まれているはず。このループがyにあたると考えると……。【補題内容】1) 各i≧0について、x(...
背理法による証明(方針)「任意の整数nに対し、0がn個続いた後に1がn個続く」を正規表現にできたとしよう。すると、これはオートマトンにできるはずだ。オートマトンにできるなら、ポンピング補題を満たすはずだ。
背理法による証明(実装1)「任意の整数nに対し、0がn個続いた後に1がn個続く」ことを表すオートマトンの状態がp個だったとする。ここで、0がp個続いたあと1がp個続く文字列sを考える。sは明らかに上記条件を満たしている。また、sの長さはpより大...
背理法による証明(実装2)ここでyが0だけからなるとする。するとxyyzなどは0と1の数があわず、以下を満たさない。1) 各i≧0について、x(y^i)z ∈ A1だけからなるとする場合も、同様に成り立たない。0と1の組み合わせからなる場合、y...
Upcoming SlideShare
Loading in …5
×

「0がn個続いたあと1がn個続く」を正規表現にできるか?

4,229 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,229
On SlideShare
0
From Embeds
0
Number of Embeds
3,259
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

「0がn個続いたあと1がn個続く」を正規表現にできるか?

  1. 1. 「0がn個続いたあと1がn個続く」を正規表現にできるか? 01, 0011, 000111, .....2013.3.28 たぬき
  2. 2. おはなしの流れ全ての正規表現には等価な有限オートマトンがある。有限オートマトンには必要条件がある。さっきの問題は有限オートマトンの必要条件を満たさない。よって、正規表現にはできない。
  3. 3. 有限オートマトン有限オートマトンとは計算機のモデルである。有限個の状態があり、入力信号によって状態間を遷移する。ひとつの開始状態といくつかの受理状態がある。 0 1 1 状態 {A, B, C} 信号 {0, 1} A B C 開始状態 A 0 0 受理状態 {C} 受理するもの :011, 1101, 00101101, ... 受理しないもの:0, 110, 00110, ....
  4. 4. 正規表現のオートマトン変換全ての正規表現は有限オートマトンへ変換できる。時間が限られているので、正確な定義と証明は飛ばす。※証明は「計算理論の基礎 第一巻」など参照。ここでは幾つか正規表現をオートマトンに変換してみる。
  5. 5. 正規表現→オートマトン(1)0*1 like検索 [0,1]*010[0,1]* 1 0 1 0 0 0,1 1 1 0 0,1 0,1
  6. 6. 正規表現→オートマトン(2)0*1*001 0,1 0 0 0 1 1 1 1 0 1 0 0,1 1 0 0 1 0 1正規表現は必ずオートマトンに変換できる
  7. 7. 必要条件:ポンピング補題あるルールに従っている文字列の集合Aがオートマトンで表せるとする。オートマトンの状態数をpとする。そのとき、Aの集合に含まれる文字列のうち、長さpを超えるものは全て、以下の条件を満たす3つの文字列片x,y,zに分解できる。1) 各i≧0について、x(y^i)z ∈ A2) yの長さは0より大きい3) xyの長さはpより小さいか等しい
  8. 8. ポンピング補題 簡易証明状態の数pより長い任意文字列sは、必ず同一の状態を通るはず(sによる行き先はpより多いのだから)。よって、通る遷移にループが生まれているはず。このループがyにあたると考えると……。【補題内容】1) 各i≧0について、x(y^i)z ∈ A2) yの長さは0より大きい3) xyの長さはpより小さいか等しい
  9. 9. 背理法による証明(方針)「任意の整数nに対し、0がn個続いた後に1がn個続く」を正規表現にできたとしよう。すると、これはオートマトンにできるはずだ。オートマトンにできるなら、ポンピング補題を満たすはずだ。
  10. 10. 背理法による証明(実装1)「任意の整数nに対し、0がn個続いた後に1がn個続く」ことを表すオートマトンの状態がp個だったとする。ここで、0がp個続いたあと1がp個続く文字列sを考える。sは明らかに上記条件を満たしている。また、sの長さはpより大きい。ポンピング補題より、sはxyzの3つの文字列に分けられ、以下を満たすはずである。1) 各i≧0について、x(y^i)z ∈ A2) yの長さは0より大きい3) xyの長さはpより小さいか等しい
  11. 11. 背理法による証明(実装2)ここでyが0だけからなるとする。するとxyyzなどは0と1の数があわず、以下を満たさない。1) 各i≧0について、x(y^i)z ∈ A1だけからなるとする場合も、同様に成り立たない。0と1の組み合わせからなる場合、yyの内部で0より前に1が現れるようになり、成り立たない。よって、「任意の整数nに対し、0がn個続いた後に1がn個続く」こはポンピング補題を満たさない。→オートマトンにできない→正規表現にできない Q.E.D

×