すべての計算可能な関数


19

すべての計算可能な関数についてfΘ(f(n))時間で最大で解決できる問題が存在するか、またはO f n で解決できるすべての問題ができるような計算可能な関数がありますo f n 時間で解けるか?fO(f(n))o(f(n))

この質問は昨日私の頭に浮かびました。少し前から考えていましたが、理解できません。どうやってこれをグーグルで検索するかわからないので、ここで質問します。ここに私が思いついたものがあります:

私の最初の考えは答えがイエスだということでした:すべての計算可能な関数についてf、問題「出力f(n)ドット」(またはf(n)ドットなどで文字列を作成する)は明らかにo(f(n))時間。したがって、O(f(n))時間で解けることを示す必要があります。問題ありません。次の擬似コードを使用してください。

x = f(n)
for i from 1 to x:
    output(".")

明らかに、このアルゴリズムは前述の問題を解決します。そして、ランタイムは明らかにΘ(f(n))なので、問題は解決しました。簡単でしたね?いいえを除いて、最初の行のコストを考慮する必要があるからではありません。上記のアルゴリズムの実行時のみであるΘ(f(n))を計算するために必要な時間あればf(n)であるO(f(n))。明らかに、すべての機能1に当てはまるわけではありません。

そのため、このアプローチでは私はどこにも行きませんでした。これを適切に理解するために正しい方向に私を指し示している人に感謝します。


1例として機能するために検討して。明らかにO p n = O 1 ですが、時間でpを計算するアルゴリズムはありません。p(n)={1if n is prime2otherwiseO(p(n))=O(1)pO(1)


1
私はあなたの最初の段落では、あなたの二つの文は必ずしもお互いののcontrapositivesあるとは思わない:あなたが持っている場合はどのような、そのような中で解決することができるいくつかの問題が存在することはO F N 、いないでO F nは、またΘ f n 時間で?fO(f(n))o(f(n))Θ(f(n))
アレックス10ブリンク

@Alexそれは私がそれを考慮しなかった良い点です。
sepp2k

回答:


13

ギャップ定理(からの製剤を使用して、ここで、「ギャップ」を検索する)、任意の計算無制限機能のために、いくつかの増加(実際には、任意の大きさ)計算関数が存在するF NNその結果、DはT I M E F N = D T I M E G F N g:NNf:NNDTIME(f(n))=DTIME(g(f(n))

これは、そこに存在することで、あなたの質問に答える(実際には無限に多くを、):すべての計算機能のためのグラムように、G = O N 、いくつかの増加関数が存在するFのすべての問題が解けるようなO F nは時間にも解けるありO G F N = O F N こと時間注Ffgg=o(n)fO(f(n))O(g(f(n))=o(f(n))f 必ずしも時間で構成できるとは限りません-時間で構成できる場合は、@ RanGの回答を参照してください。

ウィキペディアの処方で(つまり必要とする)、そしてグラムFあなたの例になり、Fする必要がω N あなたの周りの他の道を行くので、( - 「で解ける問題O グラムf n Oで解けるg n 'は興味深い部分である)。g(x)xgffω(n)O(g(f(n))O(g(n))

そのノートないWikipediaの記事(増加しており、実際には、缶は任意の大きさであるF N G N 例えば)。ギャップ定理を証明している記事行い言及をし、これを証明するには、(参照ここでは例えば、)。ff(n)g(n)


できであるoをN ?それはその必要はありませんグラムXをX?あなたの声明はまだ正しいですが、証拠は逆になりますよね?go(n)g(x)x
ランG.

@RanG。両方の製剤の証明を提供するために更新しました(論文で製剤を使用しました):)
アレックステンブリンク

「g = o(n)のようなすべての計算可能な関数gについて、O(f(n))時間で解決可能なすべての問題がO(g(f(n))= o( 。Fそれgで存在するすべてのFSがOである場合、どの(N))時間」(?1)次に、O(G(F(N))O(1)従ってしない(1)Oまだ
sepp2k

@ sepp2k:良いキャッチ、これは確かに定式化された問題です。回答を更新しました。
アレックス10ブリンク

12

すべての計算可能な関数について、Θ f n 時間で最大で解決できる問題が存在するか、またはO f n で解決できるすべての問題ができるような計算可能な関数fがありますo f n 時間で解けるか?fΘ(f(n))fO(f(n))o(f(n))

場合ある時間構成可能機能は、時間階層定理が必要な問題があることを述べているO F N 時間は、時間で解決することができないoをF N fO(f(n))。具体的には、 DTIMEofno(f(n)log(f(n)))

DTIME(o(f(n)log(f(n))))DTIME(f(n))

これは決定の問題のみを考慮し、出力の生成にかかる時間は考慮しません。


時間構成不可能な関数を考慮する場合、私の質問への答えは「いいえ」であると仮定するのは正しいでしょうか?または関連:関数が時間構成可能ではなく、したがってf n ステップ後に停止するチューリングマシンがない場合、それはΘ f n ステップ後に停止するチューリングマシンもないことを意味しますか?それから、私の質問への答えはノーであると自明になります。ff(n)Θ(f(n))
sepp2k

場合によります。は時間で構成可能ではないが、時間で構成可能な他の関数gによって制限されると仮定します。f = Θ g であり、時間O f で解決できる問題がまだ存在しますが、それよりもそれほど小さくありません。fgf=Θ(g)O(f)
ランG.

複数のテープTMを使用すると、o f n )の結果を改善できます。OFNo(f(n)lgf(n))o(f(n))
カベ

3

より深い洞察が得られることを期待して、フレームワークの何かを提供しようとします。

この基本的なものに到達すると、予想外の落とし穴が至る所にあります。たとえば、問題を「解決」するのは何ですか?多くの場合、コンピューターサイエンスでは、入力が与えられ、TrueまたはFalseを出力する必要がある「決定」バリアントのみを考慮します。「機能」問題に焦点を合わせています。

O(f(n))表記を問題を解決するためにどれだけの「作業」が必要かを把握しようとすると、関数(出力が必要な場合)の代わりに決定を使用する方が、計算を出力フォーマットから明確に分離するため、より良いようです。

これであなたの質問に答えられるとは思いませんが、興味があるかもしれません:http : //en.wikipedia.org/wiki/Time_hierarchy_theorem

また、高速化定理にも注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.