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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

3,254

Published on

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

No Downloads
Views
Total Views
3,254
On Slideshare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
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

×