私は、ガリナ・ジラスコワの2009年の「正規の言語と記述の複雑さの連結」を読んでいます。 。私を驚かせた最初のささいな考えは、複雑さが増すと、マシンにより多くの時間とスペースが必要になるということでした。これは正しいです?また、州の複雑さが重要で意味のある他の場所はありますか?
編集:通常の言語の状態の複雑さは、言語を受け入れる決定論的有限オートマトン(dfa)の状態の最小数です。通常の言語の非決定性状態の複雑さは、言語の非決定性有限オートマトン(nfa)の状態の最小数として定義されます。
私は、ガリナ・ジラスコワの2009年の「正規の言語と記述の複雑さの連結」を読んでいます。 。私を驚かせた最初のささいな考えは、複雑さが増すと、マシンにより多くの時間とスペースが必要になるということでした。これは正しいです?また、州の複雑さが重要で意味のある他の場所はありますか?
編集:通常の言語の状態の複雑さは、言語を受け入れる決定論的有限オートマトン(dfa)の状態の最小数です。通常の言語の非決定性状態の複雑さは、言語の非決定性有限オートマトン(nfa)の状態の最小数として定義されます。
回答:
状態の複雑さは、計算の複雑さではなく、オブジェクト(この場合は通常の言語)の簡潔な記述に関するものです。一般的なトピックは、文献では「記述の複雑さ」と呼ばれ、そのインスピレーションの一部は、マイヤーとフィッシャーの古典的な1971年の論文「Automata、Grammars、Formal Systemsによる表現の経済」(http:// people .csail.mit.edu / meyer / economy-of-description.pdf)。これは今でも活発な分野であり、毎年会議が開催されています(DCFS-形式的なシステムの記述の複雑さ)。
アプリケーションに関しては、プログラムが本質的に有限状態マシン(パーサーなど)に依存している場所であれば、この有限状態マシンを可能な限り小さくするとよいでしょう。
ジェフリー・シャリットの優れた答えに具体的な例を加えましょう。
Scrabble(TM)辞書を作成するとします。単語のリスト、試行(文字ツリー)、決定性オートマトンなど、辞書を表すいくつかの方法を考えることができます。[1]によれば、トライをdawg [= DFA]に最小化すると、スペースが驚くほど節約されます。ノードの数は117,150から19,853に削減されます。未加工の単語リストとして表される辞書は約780 Kバイトで、dawgは175 Kバイトで表されます。
ご覧のとおり、この場合、特に著者のように効率的なプログラムを作成する場合は、状態の複雑さが本当に重要です。
[1]アペルとヤコブソンザ・世界最速スクラブルプログラム、ACMのコミュニケーション31、572-578(1988)。
任意の決定論的コンテキストフリー文法(または同等に決定論的プッシュダウンオートマトン)が同じ言語を記述する同等の有限状態オートマトンを持っているかどうかが決定可能であるという証明は、本質的に決定論的コンテキストフリー言語を記述する有限オートマトンの状態の複雑さの証明です:決定論的オートマトンに関するこれらの有限オートマトンのサイズの限界は、決定手順の長さの限界を与えます。
詳細については、レスリーG.ヴァリアントによる「決定性プッシュダウンオートマトンの規則性と関連する問題」を参照してください。