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

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

on

  • 2,661 views

 

Statistics

Views

Total Views
2,661
Views on SlideShare
459
Embed Views
2,202

Actions

Likes
0
Downloads
0
Comments
0

13 Embeds 2,202

http://uzabase.blogspot.jp 2148
http://uzabase.blogspot.com 22
http://uzabase.blogspot.sg 10
http://www.uzabase.blogspot.jp 5
http://uzabase.blogspot.tw 5
http://feedly.com 2
http://uzabase.blogspot.com.au 2
http://uzabase.blogspot.hk 2
http://uzabase.blogspot.in 2
http://uzabase.blogspot.de 1
http://translate.googleusercontent.com 1
http://uzabase.blogspot.com.br 1
http://uzabase.blogspot.fr 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

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