複雑性理論で言語を使用する理由


10

私は計算理論に取り掛かり始めたばかりです。計算理論は、何を計算できるか、どれだけ速く、どれだけのメモリを使用して、どの計算モデルを使用するかを研究しています。

私はかなり基本的な質問がありますが、皆さんの何人かがその背後にある概念を理解するのを助けてくれることを本当に望んでいます:

なぜすべてが言語の概念と定義(つまり、通常の言語と文脈自由言語)に集中しているのですか?そして、これらはアルゴリズムの複雑さとそれらを解決するための可能な計算モデルをどのように関連付けて説明しますか?

私はこれらの種類の関連する質問を読みます:

しかし、それらがなぜ重要であるか(私は理解しています)の実用的な正当化を提供しますが、複雑性理論がそれらに基づいている理由を理解するのに役立ちませんので、それでも私の疑問に対する答えはありません。


1
これは私たちの参照質問でカバーされいませんか?
ラファエル

@Raphael-その質問を教えてくれてありがとう、それは素晴らしいリファレンスです!私は今それを読んでいますが、現時点ではこれが質問cs.stackexchange.com/questions/13669/…の補遺になり得ると思います。すでに回答されているようには思えません。それ以外の場合はお知らせください
Matteo

3
言語は、有限長の文字列のセットにすぎません。これは、有限文字列を1または0にマップする関数と同じです。つまり、「なぜ意思決定問題について複雑さの理論が非常に多いのか」と質問しているのです。最も単純な(自明ではない)種類の計算タスク、および多くの場合より複雑な計算タスクは、決定問題に還元できます。
Sasho Nikolov 2014

回答:


10

それは、言語が「問題」の概念を形式化する最良の(唯一の)方法だからです。

L

1061091012

2つ目は、言語はデータの抽象化に過ぎないということです。証明できるもの、正式にモデル化できるものが必要です。入力と出力を文字列としてエンコードすると、メモリ内のビットではなく、特定のプロパティを持つ数学オブジェクトを処理することになります。あなたはそれらについて推論し、正式で非常に単純な意味でそれらについての証拠を証明することができます。

k

これがあなたへの私の挑戦だと思います:言語ではない問題を数学的に説明する方法を見つけてください。言語が特別であるかどうかはわかりませんが、私たちが手にした最も簡単なツールであると思います。


7
言語だけが問題を定式化する唯一の方法ではありません。たとえば、グラフから自然数までの関数として半透明数のようなものを形式化できます。そして、実際には、機能と最適化の問題についてはかなり多くの作業があります。
David Richerby

2
本当ですが、言語や機械の概念なしに、半音階数を計算する複雑さをどのように処理しますか?
jmite

1
あなたの答えをありがとう、私はあなたのポイントを取得します。ただし、まだ2つの質問があります。1)言語を使用しているという事実が、問題の複雑さまたは決定可能性に関する結果に影響を与えないのですか?つまり、問題は浮動小数点演算では解決できるが、整数演算(つまり整数プログラミング)では解決できないのでしょうか。2)どのような種類のデータから、それらをすべて記述する一意の言語へのマッピングをどのように実行しますか(問題の複雑さを評価し、特定の入力から抽象化したいため)。再度、感謝します!
Matteo、

3
@jmiteマシンが必要です。そうですが、必ずしも言語である必要はありません。
ラファエル

2
@Raphael通常、マシンの実行時間に関して定義される多くの複雑度クラスは、記述的な複雑度に関して特徴付けることができます。
Sasho Nikolov 2014

7

あなたの質問には2つの基本的な答えがあります:

  1. 関数クラス、算術計算の複雑さ、近似アルゴリズムのサブエリアや非近似性など、複雑さの理論には言語よりも多くのものがあります。

  2. 歴史的な理由:計算可能性理論の基本的な論文の1つは、ヒルベルトのEntscheidungsproblem(停止問題の形式)についての議論でした。

残念ながら、後者についてはあまり知りませんが、前者について詳しく説明します。

言語を超えた複雑さ

LMfMxMfM(x)L

算術回路の複雑度(または代数的複雑度理論)は、さまざまな多項式の計算の複雑さを扱います。ここで重要な複雑性クラスはVPとVNPであり、幾何学的複雑性理論は、代数幾何学と表現理論を使用してVPとVNP(および後でPとNP)を分離しようとする重要なプロジェクトです。

代数的複雑さのもう1つの重要な例は、高速行列乗算です。ここでの基本的な質問は、2つの行列をどれだけ速く乗算できるかということです。同様の質問は、整数の乗算速度、素数の整数のテスト速度(これは決定の問題です)、整数の因数分解の速度を尋ねます。

凸最適化は、効率的に解決できる(またはほとんど解決できる)最適化問題を扱います。例としては、線形計画法と半確定計画法があり、どちらも効率的なアルゴリズムを備えています。ここでは、最適解と最適解自体の両方に関心があります。多くの場合、最適な解決策は複数あるため、最適な解決策の計算は、意思決定問題として適切に表されません。

lnn


3

この問題をカテゴリー理論の観点から見てみましょう。決定問題(または言語)は、カテゴリのオブジェクトに対応し、2つの問題間の許容される削減は、カテゴリの射(矢印)に対応します。

言語について話すことには、言語の同等性が明確に定義されているという利点があります(つまり、拡張等価性によって)。2つの無関係な問題が同じ言語につながる可能性があり、それらを同等と見なすことができます。代わりに同型問題について話したい場合は、2つの問題間の許容射を定義する必要があります。ただし、許容される射は検討中の実際の複雑性クラスに依存するため、このアプローチは異なる複雑性クラスの比較にはあまり適していません。

同形問題の概念は通常、同等の言語の概念よりも粗くなります。つまり、関連する言語が同等でなくても、2つの問題は同形になる可能性があります。さらに悪いことは、許可された同型についてはしばしば異なる合理的な概念があり、それらは許可された同型に関してのみ一致することです。言語に焦点を合わせると、還元のいくつかの異なる合理的な概念について話したいと思うまで(カープ還元とクック還元のような)、そのような問題を延期することができます。


これは質問に答えていないようです。それでも、対応するカテゴリのオブジェクトとして使用するものは何でも、問題間の射について話すことができます。
David Richerby 14

@DavidRicherby私が伝えたかった点は、適切な射を特定することは、適切なオブジェクト(=言語)を特定することよりも困難であるということです。(特に、通常、射の適切な概念が複数あるため。)射がなければ、同型問題(またはアルゴリズム)について話すことはできません。ただし、言語は問題の等価性について話し合う方法を提供します。おそらく私はこれを適切に説明しなかったかもしれませんが、(私にとって)これが「言語を複雑性理論で使用する」ための十分な理由です。
トーマスクリンペル2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.