入力サイズを大きくするとインスタンスが難しくなるのはなぜですか?


12

以下では、無限テープチューリングマシンで作業していると仮定します。

時間の複雑さの概念を誰かに説明し、なぜそれがインスタンスの入力サイズに対して測定されるのかを説明するとき、私は次の主張に出くわしました。

[..]たとえば、2つの整数に3ビットを掛けるよりも、2つの整数に100000ビットを掛けるのに多くのステップが必要になるのは自然です。

主張は説得力がありますが、どういうわけか手を振っています。私が出会ったすべてのアルゴリズムで、入力サイズが大きいほど、必要なステップが多くなります。より正確に言えば、時間の複雑さは入力サイズの単調増加関数です。

時間の複雑さが常に入力サイズの増加関数であるということですか?もしそうなら、なぜそうなのですか?手を振る以上の証拠はありますか?


「直接比例」には、本質的に線形時間を意味する特定の数学的な意味があります。つまり、入力のサイズが場合、時間が正比例する場合、アルゴリズムは時間c nで実行されます。多くのアルゴリズムは線形時間、つまりソートでは実行されないため、それはあなたが言っていることではないと思います。さらに説明してもらえますか?ncn
-SamM

あなたは時間で実行されるアルゴリズムについて尋ねていますか? O 1 は、入力サイズに関係なくアルゴリズムが同時に実行されることを意味します。o 1 は、入力が大きくなるほど高速に実行されることを意味します。私は頭の上のその時間に実行されるものを考えることはできませんが、アルゴリズムはO n 2+ o 1 時間のようなもので実行されることが多いため、表記はかなり一般的です-つまり、O n 2o(1)O(1)o(1)O(n2)+o(1)O(n2)時間、および入力が大きくなるにつれて小さくなる他の用語がいくつかあります。
-SamM

良い質問。何の素因数計算の反例約いくつかの大規模のためにCを(これがためだけ増加関数であるN C)?@Sam増加関数は、実線に沿ったある時点で時間が減少しなければならないことを示していることに注意してください(すなわちf b c/ncnc)。f(b)<f(a),a<b
ケーシーKuball

@Darthfett私は従わないのではないかと心配しています。実際の線に沿ったある点で、すべての増加関数が減少しているわけではありません。
-SamM

@ジェニファーはい、わかります、それは理にかなっています。あなたが探している意味を持っているので、用語を使用することをお勧めします。そして、直接比例は線形性を意味することを強調したいと思います。私はあなたが何を得ているのかはわかりますが、質問を初めて読んでいる人にとって混乱するかもしれません。o(1)
-SamM

回答:


12

時間の複雑さが常に入力サイズの増加関数であるということですか?もしそうなら、なぜそうなのですか?

特許停止後ことチューリングマシンを考えるステップ入力サイズnが偶数であり、停止後にN 2ステップときnは奇数です。nnn2n

問題の複雑さを意味する場合、答えはまだありません。素数テストの複雑さは、奇数の場合より偶数の場合のほうがはるかに小さくなります。


4

時間の複雑さが常に入力サイズの増加関数であるということですか?もしそうなら、なぜそうなのですか?手を振る以上の証拠はありますか?

ましょうの入力の大きさを表します。入力全体を読み取るには、チューリングマシンには既にnステップが必要です。そのため、アルゴリズムが入力全体を読み取る必要があると仮定した場合(またはnn、一部の定数のための cが)、あなたは常に、少なくとも線形実行時間で終わるだろう。n/cc


「単調に減少する実行時間関数」を使用してアルゴリズムを定義する際の問題は、n = 1の実行時間を定義する必要があることです。n=1なんとか。有限値に設定する必要があります。しかし、n > 1には無限の可能な値があるため、無限の多くの値に対して定数である関数になります。n>1


おそらく、サブリニアアルゴリズムは興味の対象であり、入力全体を読み取るわけではありません。たとえば、http://www.dcs.warwick.ac.uk/~czumaj/PUBLICATIONS/DRAFTS/Sublinear-time-Survey-BEATCS.pdfを参照してください


準線形アルゴリズムが存在します。たとえば、people.csail.mit.edu/ronitt/sublinear.htmlを参照してください。かなり新しい分野ですが、非常に興味深いものです。これには他の反例があります。ソートされたリストから要素を見つけるには、RAMモデルで時間かかります。あなたの投稿の背後にあるアイデアに同意します。すべての入力を読み取る時間がないため、入力が大きくなるにつれて、アルゴリズムにかかる時間を短くすることは意味がありません(どのように時間がかかることがわかりますか?)。しかし、私は、彼らが存在しないことを証明する方法がわからない、とトリックはそれを作ることができなかったことをoを1 O(logn)o(1)
SamM

@サム:申し訳ありませんが、編集(サブリニアアルゴリズムを追加)する前にコメントが表示されませんでした。
クリストファー

まったく逆です。コメントを追加する前に編集内容が表示されませんでした。私はそれを削除しますが、後半はまだ適用され、追加のリンクはOPを傷つけることはできません
-SamM

1
反例:ような定数関数。あなたが説明することは、入力を読む必要がある関数に有効です。f(x)=0
カベ

1

(N,)Ω(1)

とはいえ、平均的なランタイムには、振動するコンポーネントが含まれる場合があります。たとえば、いえ Mergesort


この答えが質問にどのように関係しているかわかりません。
A.シュルツ

@ A.Schulz「時間の複雑さは常に入力サイズの増加関数であるということですか?」という主な質問の証拠を提供し、「増加する」を「減少しない」、すなわち必ずしも厳密に増加するわけではありません。
ラファエル

1

@ A.Schulz:それでも、私の解釈はジェニファーが興味を持っているもののようです。
ラファエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.