77. 正 規 表 現 の 歴 史
– S T E P H E N C O L E K L E E N E ( 1 9 0 9 - 1 9 9 4 )
78. 脳 の 計 算 モ デル :
形 式 的 ニュ ー ロ ン
BULLETIN OF
MATHEMATICAL BIOPHYSICS
VOLUME5, 1943
A LOGICAL CALCULUS OF THE
IDEAS IMMANENT IN NERVOUS ACTIVITY
WARREN S. MCCULLOCH AND WALTER PITTS
FROM THE UNIVERSITY OF ILLINOIS, COLLEGEOF MEDICINI~,
DEPARTMENT OF PSYCHIATRY AT THE ILLINOIS NEUROPSYCHIATRICINSTITUTE,
AND THE UNIVERSITY OF CHICAGO
Because of the "all-or-none" character of nervous activity, neural
events and the relations among them can be treated by means of propo-
sitional logic. It is found that the behavior of every net can be described
in these terms, with the addition of more complicated logical means for
nets containing circles; and that for any logical expression satisfying
certain conditions, one can find a net behaving in the fashion it describes.
It is shown that many particular choices among possible neurophysiologi-
cal assumptions are equivalent, in the sense that for every net behav-
ing under one assumption, there exists another net which behaves un-
der the other and gives the same results, although perhaps not in the
same time. Various applications of the calculus are discussed.
I. Introduction
Theoretical neurophysiology rests on certain cardinal assump-
tions. The nervous system is a net of neurons, each having a soma
and an axon. Their adjunctions, or synapses, are always between the
axon of one neuron and the soma of another. At any instant a neuron
has some threshold, which excitation must exceed to initiate an im-
pulse. This, except for the fact and the time of its occurrence, is de-
termined by the neuron, not by the excitation. From the point of ex-
citation the impulse is propagated to all parts of the neuron. The
velocity along the axon varies directly with its diameter, from less
than one meter per second in thin axons, which are usually short, to
more than 150 meters per second in thick axons, which are usually
long. The time for axonal conduction is consequently of little impor-
tance in determining the time of arrival of impulses at points un-
equally remote from the same source. Excitation across synapses oc-
curs predominantly from axonal terminations to somata. It is still a
moot point whether this depends upon irreciprocity of individual syn-
apses or merely upon prevalent anatomical configurations. To sup-
pose the latter requires no hypothesis ad hoc and explains known ex-
ceptions, but any assumption as to cause is compatible with the cal-
culus to come. No case is known in which excitation through a single
synapse has elicited a nervous impulse in any neuron, whereas any
115
★ 1943年,McCulloch
と Pitts によって脳の
計算モデル「形式的
ニューロン」が提案
された [4].
82. オ ー トマ トン の
発 展
★ オートマトンとは?
→ 文字列を認識する
有限グラフモデル.
★ 初期状態から入力に
従って状態を遷移,
最終的に受理状態に
到達すれば入力を
「受理」,到達しな
ければ「非受理」.
0
a
1
b
a
2
b
b
a
83. オ ー トマ トン の
発 展
★ オートマトンとは?
→ 文字列を認識する
有限グラフモデル.
★ 初期状態から入力に
従って状態を遷移,
最終的に受理状態に
到達すれば入力を
「受理」,到達しな
ければ「非受理」.
0
a
1
b
a
2
b
b
a
「a,bからなる文字列で,
bの出現回数が3の倍数」
となる文字列を受理する
オートマトン.0が初期状
態かつ受理状態.
84. オ ー トマ トン の
発 展
★ オートマトンとは?
→ 文字列を認識する
有限グラフモデル.
★ 初期状態から入力に
従って状態を遷移,
最終的に受理状態に
到達すれば入力を
「受理」,到達しな
ければ「非受理」.
0
a
1
b
a
2
b
b
a
「a,bからなる文字列で,
bの出現回数が3の倍数」
となる文字列を受理する
オートマトン.0が初期状
態かつ受理状態.
正規表現で書くと
a*(ba*ba*ba*)*
85. オ ー トマ トン の
発 展
★ オートマトンには非
決定性・決定性とい
う性質がある.
★ 初期状態が1つで,か
つ各状態が「1文字に
対して遷移先がたか
だか1つ」という条件
をみたす場合決定性
(DFA),そうでない場
合は非決定性(NFA).
0
b
1
a
2
a
3
b
a
b
b
a
0
a
b
1
a
2
a
b
「a,bからなる文字列で後ろから
2番目の文字がa」となる文字列
を受理す2つのオートマトン.
上はNFAで下はDFA!
86. オ ー トマ トン の
発 展
★ 1959年,RabinとScott
が「任意のオートマト
ンは決定性のオートマ
トンに変換できる」こ
とを示した(部分集合
構成法)[7].
★ この業績で二人は計算
機科学者にとって最高
の栄誉であるチューリ
ング章を受賞.
0
a
b
1
a
2
a
b
部分集合構成による決定化
0
b
0
1
a
0
1
2
a
0
2
b
a
b
b
a
87. プ ロ グ ラ マ の た
め の 道 具 へ
★ 1968年,Ken Thompson
(UNIXとかC言語作った
マジモンのハッカー)が
「正規表現からNFAへの
変換(Thompsonの構成
法)」及び「NFAの実装手
法」に関する最初の論文
を発表 [8].
★ Thompson のこの成果は
世界初の「ソフトウェア
の特許」に(1971年).
R. M. McCLUR£, Editor
RegularExpressionSearch
Algorithm
I~EN THOMPSON
Bell Telephone Laboratories, Inc., Murray Hill, New Jersey
A method for locating specific character strings embedded
in character text is described and an implementation of this
method in the form of a compiler is discussed. The compiler
accepts a regular expression as source language and pro-
duces an IBM 7094 program as object language. The object
program then accepts the text to be searched as input and
produces a signal every time an embedded string in the text
matches the given regular expression. Examples, problems,
and solutions are also presented.
KEY WORDS AND PHRASES: search,match, regular expression
CR CATEGORIES: 3.74, 4.49, 5.32
The Algorithm
Previous search algorithms involve backtracking when
a partially successful search path fails. This necessitates
a lot of storage and bookkeeping, and executes slowly. In
the regular expression recognition technique described in
this paper, each character in the text to be searched is
examined in sequence against a list of all possible current
characters. During this examination a new list of all
possible next characters is built. When the end of the
current list is reached, the new list becomes the current
list, the next character is obtained, and the process con-
tinues. In the terms of Brzozowski [1], this algorithm con-
tinually takes the left derivative of the given regular ex-
pression with respect to the text to be searched. The
parallel nature of this algorithm makes it extremely fast.
The Implementation
The specific implementation of this algorithm is a com-
piler that translates a regular expression into IBM 7094
code. The compiled code, along with certain runtime
routines, accepts the text to be searched as input and
finds all substrings in the text that match the regular
expression. The compiling phase of the implemention does
not detract from the overall speed since any search routine
must translate the input regular expression into some
sort of machine accessible form.
In the compiled code, the lists mentioned in the algo-
rithm are not characters, but transfer instructions into
the compiled code. The execution is extremely fast since
a transfer to the top of the current list automatically
searches for all possible sequel characters in the regular
expression.
This compile-search algorithm is incorporated as the
context search in a time-sharing text editor. This is by
no means the only use of such a search routine. For
example, a variant of this algorithm is used as the symbol
table search in an assembler.
It is assumed that the reader is familiar with regular
expressions [2] and the machine language of the IBM 7094
computer [3].
The Compiler
The compiler consists of three concurrently running
stages. The first stage is a syntax sieve that allows only
syntactically correct regular expressions to pass. This
stage also inserts the operator "." for juxtaposition of
regular expressions. The second stage converts the regular
expression to reverse Polish form. The third stage is the
object code producer. The first two stages are straight-
forward and are not discussed. The third stage expects a
syntactically correct, reverse Polish regular expression.
The regular expression a(b I c),d will be carried through
as an example. This expression is translated into abc I * " d •
by the first two stages. A functional description of the
third stage of the compiler follows:
The heart of the third stage is a pushdown stack. Each
entry in the pushdown stack is a pointer to the compiled
code of an operand. When a binary operator ("1" or ". ")
is compiled, the top (most recent) two entries on the stack
are combined and a resultant pointer for the operation re-
places the two stack entries. The result of the binary
operator is then available as an operand in another opera-
tion. Similarly, a unary operator ("*") operates on the top
entry of the stack and creates an operand to replace that
entry. When the entire regular expression is compiled,
there is just one entry in the stack, and that is a pointer to
the code for the regular expression.
The compiled code invokes one of two functional rou-
tines. The first is called NNODE. NNODE matches a
single character and will be represented by an oval con-
taining the character that is recognized. The second func-
tional routine is called CNODE. CNODE will split the
Volume 11 / Number 6 / June, 1968 Communications of the ACM 419
88. プ ロ グ ラ マ の た
め の 道 具 へ
★ 1973年,Thompson が正
規表現による文字列検索
ツール grep をUNIXのた
めに開発.
★ 以降,Perl 等のプログラ
ミング言語にも正規表現
は搭載され,今日では正
規表現はほとんどのプロ
グラミング言語に搭載.
多くのプログラマに愛さ
れる存在に.
Regular
Expressions
Powerful Techniques for Perl and Other Tools
Jeffrey E. F. Friedl
Mastering
89. 正 規 表 現 の 理 論
と 現 在
★ 正規表現は,実用にも便利
だけど,理論的にもとても
奥深い研究対象.対応する
計算モデルや代数モデル,
論理モデルが多数存在.
★ 「普遍的な構造は多様な_
_ 特徴付けを持つ」
★ 純粋理論的な研究もまだま
だ行われている.
正規言語
(文字列の集合)
{ε, a, aa, bb, aaa, abb, bab, bbb, ...}
0
a
1
b
b
a
有限オートマトン
(計算モデル)
有限モノイド
(代数モデル)
単項二階述語論理
(論理式)
正規文法
(生成文法)
正規表現
(表現式)
a*(ba*ba*)*
Profinite words
上の開閉集合
(トポロジー)
90. 正 規 表 現 の 理 論
と 現 在
★ 正規表現は,実用にも便利
だけど,理論的にもとても
奥深い研究対象.対応する
計算モデルや代数モデル,
論理モデルが多数存在.
★ 「普遍的な構造は多様な_
_ 特徴付けを持つ」
★ 純粋理論的な研究もまだま
だ行われている.
正規言語
(文字列の集合)
{ε, a, aa, bb, aaa, abb, bab, bbb, ...}
0
a
1
b
b
a
有限オートマトン
(計算モデル)
有限モノイド
(代数モデル)
単項二階述語論理
(論理式)
正規文法
(生成文法)
正規表現
(表現式)
a*(ba*ba*)*
Profinite words
上の開閉集合
(トポロジー)
★ その一つが「星の高さ」
91. 正 規 表 現 と 星 の 高 さ
– V I N C E N T VA N G O G H ( 1 8 8 8 )
“Starry Night over the Rhone.”
93. 星 の 高 さ
S TA R H E I G H T
★ 正規表現に対する「星の高さ」を表す関数 h は次のよ
うに再帰的に定義される
★ 任意のアルファベットσに対して h(σ) = 0
★ 正規表現 r, s に対して
★ h(rs) = h(r|s) = max(h(r), h(s))
★ h(r*) = h(r) + 1
94. 星 の 高 さ
S TA R H E I G H T
★ 正規表現に対する「星の高さ」を表す関数 h は次のよ
うに再帰的に定義される
★ 任意のアルファベットσに対して h(σ) = 0
★ 正規表現 r, s に対して
★ h(rs) = h(r|s) = max(h(r), h(s))
★ h(r*) = h(r) + 1
★ つまりは,一番ネストしてる *の深さのこと
104. 「 星 の 高 さ 問 題 」 の 証 明 は 難 し い
“Indeed, the existing proof, putting all pieces together, takes more
than a hundred pages of very heavy combinatorial reasoning.”
I. Simon, MFCS’88 Proceedings, 1988
!
“The proof is very difficult to understand and a lot remains to be
done to make it a tutorial presentation.”
D. Perrin, Finite Automata, Handbook of Theor. Comp. Sc., 1990
!
“Hashiguchi’s solution for arbitrary star height relies on a
complicated induction, which makes the proof very difficult to
follow.” J.-E. Pin, Tropical Semirings, Idempotency, 1998
106. E G G A N の 定 理
★ h(L)は,Lを認識するNFAの最小サイクルランクに等しい
★ Egganの1963年の論文の結果 [9]
★ 厳密には「ε-NFAの最小サイクルランク」について
Egganは定理を示し,1972年にRina [11]が「NFAの最
小サイクルランク」というより強い結果に拡張した.
113. E G G A N の も う 一 つ の 定 理
★ 星の高さは無限の階層をなす
★ つまり任意の自然数 n について,h(L) ≧ n となる正規
言語 L が存在する!
★ Egganが1963年に証明.
★ Sakarovitch が 2007年により強い形で再証明 [1].
114. E G G A N の も う 一 つ の 定 理
★ 星の高さは無限の階層をなす
★ つまり任意の自然数 n について,h(L) ≧ n となる正規
言語 L が存在する!
★ Egganが1963年に証明.
★ Sakarovitch が 2007年により強い形で再証明 [1].
q
★ 「a,bからなる文字列で,aの個数とbの個数が2 による
_において等しい」全ての文字列からなる言語 L の星の
高さがちょうど q となる (Sakarovitch, [1]).
115. 星 の 高 さ は 潰 れ な い
Figure 6.7: The
The proof that Wq is of heigh
w be the sequence of q word
右のオートマトンで受理される言語は
「2^3の剰余でaとbの個数が一致する」
ような文字列.つまりこのオートマトン
が受理する言語の星の高さは3.この
オートマトンのサイクルランクも3.
116. 星 の 高 さ は 潰 れ な い
q
★ 「a,bからなる文字列で,aの個数とbの個数が2 による
_剰余において等しい」全ての文字列からなる言語 L の
星の高さがちょうど q となる (Sakarovitch, [1]).
Figure 6.7: The
The proof that Wq is of heigh
w be the sequence of q word
右のオートマトンで受理される言語は
「2^3の剰余でaとbの個数が一致する」
ような文字列.つまりこのオートマトン
が受理する言語の星の高さは3.この
オートマトンのサイクルランクも3.
117. 星 の 高 さ は 潰 れ な い
★ サイクルランクが高いオートマトンから言語を階層的に
構成して,あとは正規表現の方向から頑張って証明す
る(証明は難しい).
Figure 6.7: The
The proof that Wq is of heigh
w be the sequence of q word
右のオートマトンで受理される言語は
「2^3の剰余でaとbの個数が一致する」
ような文字列.つまりこのオートマトン
が受理する言語の星の高さは3.この
オートマトンのサイクルランクも3.
127. 正 規 言 語 の 否 定 ( オ ー トマ トン で 考 える )
★ 「0から0へのパスの集合」の補集合は?
0
a
1
b
b
a
128. 正 規 言 語 の 否 定 ( オ ー トマ トン で 考 える )
★ 「0から0へのパスの集合」の補集合は?
★ 「0から1へのパスの集合」にほかならない!
0
a
1
b
b
a
129. 正 規 言 語 の 否 定 ( オ ー トマ トン で 考 える )
★ 「0から0へのパスの集合」の補集合は?
★ 「0から1へのパスの集合」にほかならない!
★ パスの終点(受理状態)の補集合を取れば良いだけ!
0
a
1
b
b
a
130. 正 規 言 語 の 否 定 ( オ ー トマ トン で 考 える )
★ 「0から0へのパスの集合」の補集合は?
★ 「0から1へのパスの集合」にほかならない!
★ パスの終点(受理状態)の補集合を取れば良いだけ!
0
a
1
b
b
a
0
a
1
b
b
a
否定
131. 正 規 言 語 の 否 定 ( オ ー トマ トン で 考 える )
★ 「0から0へのパスの集合」の補集合は?
★ 「0から1へのパスの集合」にほかならない!
★ パスの終点(受理状態)の補集合を取れば良いだけ!
0
a
1
b
b
a
0
a
1
b
b
a
否定
注意:この方法で否定を取れるのはDFA.NFAは一般的にダメ(なぜ?)
134. 一 般 化 星 の 高 さ 問 題
– R U F I N O TA M AY O ( 1 9 5 0 )
“Man Before the Infinite.”
135. 一 般 化 星 の 高 さ
G E N E R A L I Z E D S TA R H E I G H T
★ 正規表現に否定演算「!」を入れたときの星の高さ
★ 「*」「!」「|」が使える正規表現を拡張正規表現と呼ぶ
★ 正規表現の一般化星の高さgh(r)は以下の定義
★ 任意のアルファベットσに対して gh(σ) = 0
★ 正規表現 r, s に対して
★ gh(rs) = gh(r|s) = max(gh(r), gh(s))
★ gh(r*) = gh(r) + 1
★ gh(!r) = gh(r)
136. 一 般 化 星 の 高 さ
G E N E R A L I Z E D S TA R H E I G H T
★ 正規表現に否定演算「!」を入れたときの星の高さ
★ 「*」「!」「|」が使える正規表現を拡張正規表現と呼ぶ
★ 正規表現の一般化星の高さgh(r)は以下の定義
★ 任意のアルファベットσに対して gh(σ) = 0
★ 正規表現 r, s に対して
★ gh(rs) = gh(r|s) = max(gh(r), gh(s))
★ gh(r*) = gh(r) + 1
★ gh(!r) = gh(r) ← New!
141. S C H Ü T Z E N B E R G E ’ S T H E O R E M
一 般 化 星 の 高 さ の 有 名 な 定 理
★ 言語 L が Star-free L の 有限モノイドが aperiodic
★ Star-free: 「*」を使わないで書ける言語(拡張正規表現で)
★ とても美しい定理だけど,説明するには半群の講義
が必要なので省略
★ Schützenberger が 1965年に証明 [12]
142. S TA R - F R E E L A N G U A G E
星 を 使 わ な い 言 語
★ (ab)* は星自由言語 (考えてみよう)
!
★ (aa)* は星自由言語ではない (Schützenbergerの定理より)
149. [ 1 ] S A K A R O V I T C H 先 生
の 神 本 : 通 称 E AT ( 2 0 0 7 )
★ オートマトンの話題が広
く深く網羅されている
★ Egganの定理の証明も
載ってる
★ 僕が「正規言語」の虜に
なったのはこの本を読ん
だから
★ 分厚い(760ページぐらい)
★ 組版が美しい
150. [ 2 ] L A W S O N 先 生 の 入 門 書
( 2 0 0 3 )
★ 正規言語の「代数の理論」が
しっかり書かれている
★ Schützenberger の定理の
証明も
!
★ 半群の研究者が書いた本
!
★ Variety theory の入門書に最適
151. [ 3 ] S I P S E R 先 生 の 入 門 書
第 三 版 ( 2 0 1 2 )
★ 計算理論の入門書
!
★ 最も読みやすいオートマ
トンの入門書.
すぐ読める.
!
★ 和訳(『計算理論の基
礎』)もあるのでお薦め.
152. ★ [4] Michael A. Arbib: Brains, Machines, and Mathematics (1987)
★ [5] Warren S. McCulloch, Walter Pitts: A Logical Calculus of the Ideas Imma-
nent in Nervous Activity (1943)
★ [6] S. C. Kleene: Representation of Events in Nerve Nets and Finite Automata
(1951)
★ [7] M.O. Rabin, D. Scott: Finite Automata and Their Decision Problems (1959)
★ [8] Ken Thompson: Regular Ex- pression Search Algorithm (1968)
★ [9] L.C. Eggan: Transition graphs and the star-height of regular events (1963)
★ [10] K. Hashiguchi: Algorithms for Determining Relative Star Height and Star
Height (1988)
★ [11] Rina, S, Cohen: Rank-non-increasing transformations on transition graphs
(1971)
★ [12] M.P. Schützenberger: On finite monoids having only trivial subgroups
(1965)