Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
「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個続く」を正規表現にできるか?

  • Login to see the comments

「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

×