アルゴリズム時間分析「入力サイズ」対「入力要素」


13

アルゴリズムの無症候性の上限を分析および説明するために使用するとき、「入力長」および「入力サイズ」という用語とまだ混同されています

アルゴリズムの入力長は、多くの種類のデータとあなたが話しているアルゴリズムに依存しているようです。

一部の著者は、入力の長さを入力の表現に必要な文字のサイズに言及しているため、アルゴリズムの入力セットとして使用する場合の「abcde」は6文字の「入力長」になります。

文字の代わりに数字(たとえば整数)がある場合、文字の代わりにバイナリ表現が使用される場合があるため、「入力長」は(入力セットの最大数Lであるとして計算されます。 。NlogL

数字であっても、入力設定されている場合、それらは「決定変数」として「入力長さ」を記述することを他の課題は、範囲内の数値を有する長さNの入力セットに対してので、ある(入力の長さがちょうどNでありますたとえば、サブセットの合計)、または問題を述べるために必要なバイナリの場所の値の数をさらに複雑にします(N l o g L とまったく同じだと思います)0232NlogL

そう:

  • アルゴリズムに依存しますか?
  • 各入力長「バージョン」を使用する意味とタイミング
  • 使用するルールを決定するために使用できるルールはありますか?

回答:


10

最も正式な意味では、入力のサイズは、アルゴリズムのチューリングマシンの実装を参照して測定され、入力のエンコードに必要なアルファベット記号の数です。

これはもちろんかなり抽象的であり、実際に作業することは非常に困難であり、少なくとも非常に迷惑です-デリミタなどを指定する方法を検討する必要があります。 a プロキシ入力の大きさの測定-より便利でアクセスできますが、それは我々の分析で任意の数学の問題が発生することはありません何か。

「abcde」の例を使用すると、通常、入力に使用するアルファベットが小さいため、文字のプロキシ測定を使用しても、チューリングマシン上でも、気になる場合は、 「abcde」を、定数cに対して最大5 × cの長さのエンコード形式に変換する入力エンコードを指定します55×c c。定数によるこの展開は、通常、定数因子を破棄するため、漸近解析では違いを生じません。

別のケースでは、頂点の数で入力グラフのサイズを測定することがよくあります。明らかに、任意の大きなグラフを指定したい場合、エンコードされた入力のサイズは単純にnではありません-たとえば、エッジはどうなりましたか?私たちが知っていることは、我々はグラフを表す妥当な符号化方式を使用できることであるN = C N 2ログNビット。これは定数よりも少し拡張されていますが、興味深いケースの多くでは、多項式の粒度でしか処理しておらず、多項式は多くの方法でうまく構成されています-特に例実行時間がO p nnN=cn2ログnため、入力の正式な測定値に戻ると、まだ多項式時間です。ここで、 pは多項式であり、 O p n = O p ''N ような多項式 p があることがわかりますOpnppOpn=OpN

これが落ちる可能性があるのは、数字を操作しているときです。マグニチュード数値はn = O log m ビットでエンコードできるため、実行時間がO m )の場合、これはO 2 n -実際の入力サイズの指数-マグニチュードになりますM私たちが会員について話をしたい場合、入力サイズのためのプロキシの悪い選択P(たとえば、あなたがStrongly-に来たときにN Pの -completeとWeakly- N Pmn=OログmOmO2nmPNPNP-完了、これを覚えておいてください)。一方、決定可能性のみに関心があった場合、それは十分なプロキシ手段になります。

したがって、入力サイズのプロキシメジャーを選択するための規定されたルールはありませんが、要件は、入力サイズと比較したプロキシサイズの拡大または縮小が、証明しようとしているものと互換性があることです。経験則として、定数係数の変化はほとんど問題になりません。小さな多項式係数は通常は問題なく、ほとんどの基本理論で機能します。大きな多項式係数は理論上はまだ有効かもしれませんが、実際には厄介な驚きです。そして、通常、指数関数的な量の変化はあまりにも極端です。


答えてくれてありがとう。入力のPまたはNPのメンバーシップについて話すための適切なプロキシの選択についてお話しする部分は本当に興味深いものです。これはまったく新しい質問かもしれません。それに加えて、前の質問に戻ります。あなたの意見では、入力が整数のセットであるアルゴリズムの最適なプロキシはどれですか?多分それはアルゴリズムに依存すると思いますか?考えられる3つのオプションがあります:N(セットの長さ)N * Log(L)(Lは最大値)およびLog(Sum(set))。
イエス・サラス14

@JesusSalasは、それは間違いなくあなたも一緒に何をすべきかに依存することができますが、答え、最も単純な「TMエンコーディングに近い十分」だろうが、まだの面で実行されている時に見て興味深いものになることができますN、または多分N最大数の大きさ-もちろんこれはたった2 log Lですが、時々、非自明な測定で物事を分析する方が簡単な場合がありますNログLNN 2ログL
ルークマティソン2014

これはベースをカバーしますが、いくつかの不正確さがあります。チューリングマシン上で「ABCDE」を表現することになりません文字を:あなたは右のアルファベットを選択した場合、それが5つの文字になります。また、n頂点グラフを表すためにc n 2 log nビットは必要ありません。隣接行列は正確にn 2ビットです。5ccn2lognnn2
デビッドリチャービー14

NまたはN log Lをいつ使用するかは、アルゴリズムが各入力要素で動作するためのコストに依存する可能性があります。アルゴリズムが一定の時間を使用してビットのサイズとは無関係に各入力要素で作業を行うという仮定がある場合(これは悪用されません)、Nはおそらく正しいものであり、O(N)になります。一方のビットで入力要素のサイズは運用コストを増加させるならば、NログLは、我々は、入力から上限どのプロパティが増殖に関与しているで表現する必要があり、より正確と思わ
イエスサラス

@DavidRicherbyはい、アルファベットを選択できるようになるとシンボルが必要になりますが、これはc = 1です。他の理由で別のアルファベット(バイナリなど)がある場合は、一般性を失うことなくすべてをバイナリでエンコードできます。c = log 2 5ですが、定数ファクター5内の非常識でないアルファベットで比較的簡単に実行できることがわかり、興味深いです。また、true、O n 2 log n 必要ないかもしれません5c=1c=log255 O(n2logn)ビットですが、それはかなり堅牢な上限であり、両方の通常のエンコーディングを処理できます。
ルークマシソン14

8

それは計算のモデルと、残念ながらアルゴリズム自体にも依存します。

  • 計算モデルがチューリングマシンの場合、入力のサイズは入力が占めるセルの数です。入力がababcd場合、入力の長さは6です。
  • モデルがRAMの場合、入力のサイズは、入力が最初に留まるレジスタ/メモリセルの数です。これは、入力全体を1つのレジスタに技術的に書き込むことができるため、誤用される可能性があります。ただし、対数コストモデルを使用すると、計算のコストが高くなります。
  • 計算モデルがワードRAMの場合、メモリセルもカウントしますが、wはモデルのパラメーターであるため、ビットの整数しか保存できません。ww

ただし、多くのアルゴリズムは「実際の」入力サイズに関して測定されません。次に、分析のステートメントが何を指しているのかを注意深く調べる必要があります。

  • 多くの場合、問題に関して暗黙の仮定があります。n個のアイテムをソートするのに時間かかると言う場合、2つのアイテムをO 1 時間で比較できると仮定します。もちろん、並べ替える場合はnと言いますO(nlogn)nO(1)n非常に長い文字列、これは正しくない可能性があります。
  • 従来の理由により、入力の異なるパラメーターに関して測定する場合があります。たとえば、マトリックス乗算は、通常、2つのマトリックスを乗算するために分析されます。n×n

n


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