分割統治/再帰がおそらく役に立たない問題はありますか?


8

新しい問題のアルゴリズムを構築しようとするとき、分割再帰(再帰を使用)は、最初に試行するアプローチの1つです。しかし、場合によっては、入力が増えるにつれて問題がはるかに複雑になるため、このアプローチは効果がないように見えます。

私の質問は、分割統治法のアプローチでは解決できないことを証明できる問題はありますか?次の行では、これをより正式なものにしようとしています。

LET、その入力の大き有する特定の問題である(例えば、入力の配列受け付ける問題番号)。を解くための再帰アルゴリズムがあるとします。そのアルゴリズムの再帰的な実行時間は、一定時間内にすべてのについてを解くことができるオラクルを想定して計算されます。例えば:n n P n P k k < nP(n)nPPkk<

  • 比較と2つの再帰呼び出しのみを使用するため、バイナリ検索の再帰ランタイムはです。O1
  • 配列の最大要素は、再帰時間ます。O1
  • マージソートの再帰ランタイムは、マージステップのためです。O

再帰時間は通常、実際の実行時間よりも短く、これは、再帰アルゴリズムが同じ問題に対する単純な非再帰的解決策よりも単純であるという事実を反映しています。

今私の質問は:

時間で解決できる問題はありますが、再帰的なランタイムが漸近的によりも小さい再帰的なアルゴリズムはありませんか?f n ff

この質問のいくつかの特定の変形は次のとおりです。

  • 再帰ランタイムアルゴリズムがない問題はありますか?(たぶん仕分け?)O 1 PO1
  • 多項式再帰ランタイムのアルゴリズムがない指数アルゴリズムに問題がありますか?

編集:私の推測とは逆に、ソートには再帰ランタイムアルゴリズムがありますO1 P O 1 。したがって、再帰的な実行時アルゴリズムがない問題があるかどうかにかかわらず、それはまだ開いています。PO1


多分、カーネル化の下限を証明することでトリックen.wikipedia.org/wiki/Kernelization
Tyson Williams

出力サイズは、実行時間の下限です。したがって、出力サイズとその複雑さに一致する問題にはこの特性があります。
Chao Xu

@Chao Xu:引数が入力サイズに適用されないのはなぜですか?議論は、検討するコストモデル(および計算モデル)に依存すると思います。
伊藤剛

2
これはあなたが探しているものの逆ですが、それらのオラクルが与えられれば、モデルはサブセット合計-既知のNP完全問題-を線形時間で解決できるため、P!= NPと仮定すると、この場合の反復関数よりもはるかに強力です。関数は、現在のセットが0に追加されるかどうかを単純にチェックし、追加されない場合は、サイズn-1のn個のサブセットでそれ自体を呼び出します。ランタイム自体はnです。ただし、これはブルートフォースよりも悪いため、このモデルがどれほどの価値を提供するかは本当にわかりませんが、それでも興味深い質問です。
Phylliida、2014年

2
最近の編集( "再帰的"-> "分割統治")は、質問に対するかなり大きな変更です。代わりに別の質問を投稿します。回路の深さなどを調べることで、分割統治について言うことができるでしょう。
usul

回答:


8

多項式再帰ランタイムのアルゴリズムがない指数アルゴリズムに問題がありますか?

はい。タリー言語に多項式「再帰ランタイム」を備えた「再帰アルゴリズム」がある場合、それはPにあることに注意してください。EdiagonalPには、標準の対角化引数によるタリー言語があります。

時間で解決できる問題はありますが、再帰的ランタイムo f n )を使用した再帰的アルゴリズムがないことが証明されていますか?fof

それは計算モデルに依存するかもしれませんが、2テープチューリングマシンの時間階層定理が、たとえばO(n 2)時間とo(n 2)時間を区別するのに十分強力ではないことを考えると、これは知られていません後者に小さなインスタンスの回答への一定時間のアクセスを与えることなく。


この投稿の質問に対するランダムなコメント:

  • 私はこれらの質問は、投稿のタイトルとあなたの専門用語の選択が示唆しているにもかかわらず、再帰プログラムの有用性に関連しているとは思いません。BVMRが答えを書いたように、再帰と反復はある意味で同等です。代わりに、質問は分割統治法の有用性と関係があると思います。
  • 複雑さの理論では、「再帰的ランタイム」を伴う「再帰的アルゴリズム」の概念に関連する概念は、時間の複雑さを伴う「長さの減少する自己縮小」と呼ばれます。
  • 質問の一部(間違いなく準線形時間アルゴリズムに関する部分)は、計算モデルの選択に依存します。

あなたの最初の答えについて:私が正しく理解しているかどうかを確認するためにそれを拡大してみましょう。特定の集計言語に多項式「再帰ランタイム」のアルゴリズムがあると仮定します。この言語の多項式アルゴリズムは、動的プログラミングを使用して構築できます。再帰呼び出しが必要ないため、の答えは多項式時間で見つかります。以下のための答えN = 1は、その後のための答えを使用して多項式時間で見つけることができ、N = 0。次に、n = 1n = 0の回答を使用して、n = 2の回答を多項式時間で見つけることができます=0=1=0=2=1=0、などこれは正しいですか?
Erel Segal-Halevi 2014年

はい。ただし、nの特定の値について話すときは、「多項式時間」などの漸近的な概念を避ける方が良いです。たとえば、「n = 0の場合、アルゴリズムは多項式時間で実行される」と言っても意味がありません。タリー言語に多項式「再帰ランタイム」p(n)の「再帰アルゴリズム」がある場合、0、1、2、…、nの回答を計算することにより、オラクルなしでnの回答を計算できます。時間、これはnの多項式です。OΣ=0p
伊藤剛

ありがとう。分割統治に関するあなたのコメントに同意し、それに応じて質問を編集しました。
Erel Segal-Halevi

0

再帰的な回答がある質問には反復的な回答があり、その逆も同様です。

再帰的アルゴリズムは反復的に書き換えることができ、その逆も可能です。

したがって、あなたの質問はうまくいきません。


4
質問で定義したように、アルゴリズムの複雑さは、反復型から再帰型に変換した場合、通常は同じままではありません。たとえば、最大n個の要素は、O(n)操作を使用した反復アルゴリズムで見つけることができますが、O(1)操作を使用した再帰アルゴリズム(その1つは再帰呼び出し)で見つけることもできます。最終的には両方のアルゴリズムのランタイムは同じですが、再帰的アルゴリズムは操作が少ないため、プログラミングが簡単です。
Erel Segal-Halevi 2014年

-2

あなたの「再帰的な複雑さ」の概念を正しく理解しているかどうかはわかりません。

f

f0バツ=cバツf+1バツ=gfバツバツ

cgO1O1

私の仮定がすべて満たされている場合、探している例は原始的な再帰にはなりません。


反対票について詳しく説明してください
DFF

Pkk<gfバツバツfバツ実行時間は一定です。私はあなたに反対票を投じませんでしたが、これは1年前に回答された質問であり、あなたも所定の定義を誤って解釈しました。
chazisop

gO(1)fバツO11=O1

gO1

ahh、ok ...今、すべてが理にかなっています...明確化に感謝します...再帰的な複雑さが再帰的に呼び出されないという事実に私はおそらく混乱しました^^(これはimoの定義からあまりよくありません)
DFF
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.