FSAはカウントできますか?


11

これはばかげた質問かもしれません。FSAは有限であるため、その入力文字列内のシンボルの数は、その状態の数によって制限された数までしかカウントできないことは明らかです。しかし、ここでFSAに出力(印刷など)機能を装備するとします。次のようになり、非常に読むことがシンボルごとに1つのシンボルを印刷することができるマシンを構築しやすいです。それは数えるものとして数えるでしょうか?そうでない場合、なぜでしょうか?

代わりにFSTの観点から言えば、私は、任意の長さの文字列をその長さのバイナリ表現(2を底とする数値システムの数値)にマッピングできるFSTを構築することは不可能だと思います。しかし、もちろん、任意の長さの文字列を同じ長さの言うゼロ(または1)の文字列にマッピングできるFSTを構築するのは簡単です。しかし、FSTが実行しているのは入力の長さの表現を構築しているため、それは数えられるかもしれませんし、できないかもしれません。少し奇妙な表現ですが、それでも表現ですよね?


1
あなたは本当に「何を数えているのか」という質問をしているのです。それはコンピュータサイエンスのようには思えません。あなたの質問が「このカウントの定義について、FSAはカウントできるのか?」
Sasho Nikolov 2013

回答:


8

この質問は少しあいまいなので、あいまいな答えがあります。単項から単項への変換は正確にはカウントされません。マシンは実際には入力のサイズが「最終的に」何であるかを「認識」していないためです。

もちろん、あなたはこれに気づきます。それが、実際に数えているという事実に疑問を投げかける理由です。

ただし、単項からバイナリへの変換は、カウントだけでなく算術も含むため、より高度な操作のように見えます。

したがって、カウントするのではなく、より正確に見る概念は、比較です。つまり、2つの数値(単項で)1 mを指定してn = mかどうかを決定します。1n1mn=m

この比較を行う能力は、非正規言語有名に上昇を与えるものである。そして、NFAが数えられないことが、この言語を非正規にする理由です。{anbn:n0}

興味深いことに、この言語はCFLです。実際、対応するオートマトンモデル(PDA)には、限られた比較を行う機能があります。

比較について話すとき、トランスデューサーはもはやあなたに追加の力を与えないので、質問はその意味で解決されます。

補足:完全に非公式ですが、2つの数値を比較する機能は、TMに相当する2カウンターマシンMinsky Machineをシミュレートするためにしばしば使用できます。


4

いいえ。有限状態オートマトンは考慮されません。彼らはそれのように見えることをするかもしれませんが、数えることはできません。彼らは少しの(ハードワイヤードな)計算(2進数が3割り切れるかどうかの判定など)を行うことさえできますが、それはカウントされません。

ちょっとした話。あなたは有名な都市の大きな長方形の広場にいます。地元の人々は、広場は実際には広場だと言っています。数えることができる場合は、正方形の辺に沿ってタイルを数えることにより、タイルの水平方向と垂直方向の数が一致するかどうかを確認します。カウントできない場合でも、主張を確認できます。コーナーから始めて、斜めに歩きます。ちょうど反対側の角に到達すると、正方形になります。

abab

LTD2L=T1(D2)TLTLD2wT1(D2)T(w)D2

D2


02n!nN

2n!

しかし、FSAの通常の表示方法は、「はい」(受け入れられる)または「いいえ」(受け入れられない)のいずれかを言うことを「許可」されているだけです。これを考えると、誰もが数えるFSAを構築することはできませんでした。終了時の状態(の数)の報告(印刷など)を許可すると、状態の数によって指定された範囲までしかカウントできません。ただし、印刷を許可する場合は、入力文字列からシンボルを読み取るたびに1を出力する(たとえば)1つの状態のFSAを作成して、集計表現でカウントを報告するのは簡単です。このアイデアの何が問題になっていますか?
Torbjörn

また、レポート/印刷を忘れて、代わりに内部表現の観点から考えると、FSAは文字列内のシンボルをカウントできますが、任意の長いシンボルはカウントできません。もちろん、単一の州のFSAはまったくカウントできません。
Torbjörn

k

1

@ショール:あなたの答えをありがとう!StackExchangeは初めてで、回答にコメントする方法がわからないので、許されることを願って、代わりに回答を書くことにしました。

うーん、私には、羊が目にする羊ごとに紙片に印をつけて羊を数えている羊飼いや、壁に印をつけて刑務所にいた日を数えている囚人が数えているようです。紙片や壁にnマークを付けないのはなぜですか。いわゆるタリー表現ですね。AFAICSは、より多くのスペースを使用することを除いて、(たとえば)バイナリ表現よりも明らかに劣っていません。

あなたにとって、「知っている」とは、最後にカウントの内部表現を持つことを意味すると思います。そしてもちろん、FSTのFSAが任意の文字列の長さを計算できないことは明らかです。しかし、その意味での知識は必要ないが、FSAまたはFSTが結果を外部のオブザーバーに通知できることのみを要求する場合、カウント形式でカウントを提示しても問題ないように思えます。

さらに、FSAがインクリメンタル入力と出力の両方を備えている場合、原則として外部環境を読み取り/書き込みメモリとして使用できるため、チューリングマシンと同じくらい強力です。正しい?

比較の事例を提示していただきありがとうございます。さて、内部表現の要件を引き上げて、マシンが結果を外部の観察者に提示できることだけが必要な場合は、一種のFSMを簡単に構築できます。結果のグラフィック表示。FSMが読み込み時に "aaaaaabbbbbb"と書いたとします

000000
000000

次に、バーは同じ長さであるため、FSMは文字列「aaaaaabbbbbb」を受け入れました。同じ長さの2本の棒は「はい」を意味し、異なる長さは「いいえ」を意味します。

私はルールを曲げていると思いますが、それは私が数学言語学の分野で作られている多かれ少なかれ暗黙の仮定に興味があるので私が欲しいものです。


FSAWOC{an|n is prime }

あなたが与える例とFST出力の違いは、シェパードは行が書き込まれた後にそれを読み取ることができるが、FSMは行を読み取れないことです。比較についても同様です。
ショール2013

投稿の下にある[コメントを追加]リンクをクリックしてコメントできます。
ラファエル

群れをカウントするために構築されたFSAは、その群れをカウントできます。構築されたFSAは群れを数えることができません。基本的な問題は、羊飼いが少なくとも自分の群れを数えるのに十分な数だけ数える方法を知っているのか、それとも自然数の全範囲を使用できるのかということです。私の経験では、私たち人間は、数学教育のある時点で、2つの能力の間で明示的に移行しなければなりません。
reinierpost 2013

1

FSMは、状態遷移によって示される有限範囲/ステップ数内で「カウント」できます。ただし、有限のステップ数を超えることはできません。

FSAのようなマシンが数えることができる感覚があります。密接に関連するマシンは、有限状態トランスデューサと呼ばれます。トランスデューサは確かに「配管された」入力と出力の意味でカウントできます。単一のトランスデューサーが入力シーケンス(バイナリーなど)を取得して、インクリメントされる出力シーケンスに「変換」できます。次に、1つが(同一の)count-by-1トランスデューサを「チェーン」し、各トランスデューサがその入力を1つインクリメントして出力します。また、初歩的な「ストリーミングアルゴリズム」にも似ています。


詳細:トランスデューサーは、EEの全加算器と同様のロジックを使用して、「lsb」から「msb」の順序で動作するように増分できます。
vzn 2013

fyi有限状態トランスデューサは、あまり研究されていないようです。反復を計算するマシンを作成する際のcollat​​z予想への別の興味深いアプリケーションがあります。さらなる理論/ディスカッションに興味のある方は、チャットまたはブログで私に連絡してください。
vzn 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.