Your SlideShare is downloading. ×
  • Like
「0がn個続いたあと1がn個続く」を正規表現にできるか?
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

  • 3,005 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
3,005
On SlideShare
0
From Embeds
0
Number of Embeds
20

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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