質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

3回答

1174閲覧

テキスト主導型と正規表現主導型とは、

aaaaaaaa

総合スコア501

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2017/02/02 10:38

詳説正規表現第三版149p、151pにて
(NFAエンジン)

"制御が正規表現内の要素から要素に移っていくので、私はこれを"正規表現主導型"と呼んでいる"

(DFAエンジン)

"テキストから走査された一つ一つの文字がエンジンを制御しているので"テキスト主導型"<中略>と呼べるだろう"

と書いてあります。
つまり、正規表現主導型は、正規表現にかけたい文字列を正規表現に当てはめながら進めていくのに対して、
DFAエンジンは、正規表現を正規表現にかけたい文字列、つまりテキストに当てはめながら進めていくからそのような名前を著者はつけたのだと思うのですが
この認識はあっておりますか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

呼称が混乱しているなど、名前について掘り下げていかないといけない場面も確かにあるかもしれませんが、

私はこれを"正規表現主導型"と呼んでいる

とあるように、これは作者が自分で名付けたことが明らかです。

技術書は文学書ではないのですから、「これを書いた作者の気持ち」を思案したところで、通常はほとんど役に立ちません。「作者が適当に名付けた言葉」の意味を探るより、「対象となる技術の内容」を把握するほうが、おおむね有益となるでしょう(文学として読みたいのなら、話は別かもしれませんが)。

投稿2017/02/02 11:23

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

おっしゃるとおりの解釈でよろしいのではないでしょうか。

ただこの質問によりあなたが何を得ようとしているのか自分にははっきりわかりませんでした。

著者がこのような呼び方を述べているのは「NFA/DFAの仕組みを平易な表現で述べることで理解の一助にしようとした」といった意味合いではないでしょうか。しかしながらこの言葉だけをつついてみてもあまり多くの(あるいは具体的な)情報は得られない気がします。本質は本論の内容にあると思いますがいかがでしょうか。

質問の意図を取り違えていたとしたらご容赦ください。

投稿2017/02/02 11:36

KSwordOfHaste

総合スコア18392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

NFA は非決定性有限オートマトン、DFA は決定性有限オートマトンと訳されます。
入力を一つ与えた時、遷移先が一意に決定するのが DFA で、決まらないのが NFA です。

NFA は正規表現を逐語訳したもので、正規表現の要素の一つ一つが各オートマトンと一対一対応します。

DFA はそれを変形したもので、正規表現の要素とオートマトンは一対一対応していません。

ここまでが大前提です。

さて、NFA のオートマトンは正規表現と一対一対応していると説明しました。つまり、入力を処理しているオートマトンがすなわち正規表現の特定の要素を表します。
これをもって作者は正規表現主導型と呼んだのでしょう。この言葉はその作者の独自の言葉だろうと思います。

かわって DFA のオートマトンは正規表現と一対一対応していないので、処理中のオートマトンが正規表現の特定の要素であるとは必ずしも言えません。
これをもってテキスト主導型と呼んだのでしょう。

いずれにせよ、独自の用語が無用の混乱を呼ぶようであれば、その用語にこだわらずアルゴリズムの本質を理解するために別の作者の書いた物を読むことをお勧めします。
アルゴリズムを理解して初めて作者の独自の用語が理解できることはあるでしょう。

本来理解を助けるために型を分けられたのだと思いますが、今は逆にその言い回し自体が理解を邪魔しているように見えます。
正規表現とテキストのどっちが主であるか、それがどういう意味を持つのかということは、DFA と NFA の開発に果たす役割を理解してからでも遅くはないと思います。

投稿2017/02/02 11:33

編集2017/02/02 11:35
Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問