Θ(1)メモリとはどういう意味ですか?


13

私は教授からその場アルゴリズムの定義を持っていますが、私はそれを理解していません。

In-situアルゴリズムとは、Θ(1)メモリで動作するアルゴリズムを指します。

どういう意味ですか?


3
あなたはランダウ記法に精通していますか?
デビッドリチャービー

4
「アルゴリズムは、アルゴリズムを実行するために必要な追加のメモリ量がO(1)である場合、つまり[メモリ]がどれだけ大きくても定数を超えない場合、 in situアルゴリズムまたはインプレースアルゴリズムと呼ばれます。入力。たとえば、heapsortはin situソートアルゴリズムです。」 en.wikipedia.org/wiki/In_situ#Computer_science
オーベロン

@ Auberon、O 1 よりもさらに要件を課すことを追加する必要があります。特定の呼び出しで使用される合計メモリは、入力のサイズに関係なく定数を下回らないことです。Θ1O1
オレーセ

1
@Olatheゼロ以上で定数以下のリソースを使用するアルゴリズムはまだ見ていません
。adrianN

@adrianN、ファイルのAES暗号化は、一定の上限の下でRAMを使用して行われます。ブロックを一度に処理します。各ブロックは同じ量のRAMを処理する必要があり、RAMはブロック間で再利用できます。より簡単な例は、ASCIIエンコードファイルのすべての文字を大文字に変換することです。ファイルのブロック(たとえば4096バイト)を読み取り、その4096バイトを処理し、そのブロックの結果を書き込み、次のブロックに同じRAMを再利用できます。
オレーセ

回答:


13

最初に、意味を展開しましょう。Θ1

Big およびbigΘは、関数のクラスです。そこ正式な定義だここでは、この質問の目的のために、我々は、関数と言うfがであるO 1 定数があるかどうC、すべてのためのxF X Cで。つまり、fは定数関数と同じくらい速く成長します。OΘfO1cバツfバツCf

Big- は、定数の関数にはあまり意味がありません。なぜなら、アルゴリズムの時間またはスペースの使用量を記述するとき、定数以下はあまりないからです。しかし、それは、何を意味するのかを説明するためにfをΘ 1 いくつかの定数がある場合は、C dのように、そのすべてのためのxD F X C。つまり、fは定数関数と同じくらい速く、最大でも速く成長します。ΘfΘ1c,dxdfバツcf

さて、これはメモリ使用量と何の関係がありますか?あるアルゴリズム考えます。入力nが与えられると、サイズnの入力でアルゴリズムAの最大メモリ使用量を与える(数学)関数がいくつかあります。この関数をm e mと呼びましょう。AnAnmem

そこで、2つの概念を組み合わせます。アルゴリズムがメモリーを使用する場合、そのメモリー使用関数はΘ 1 にあります。つまり、何らかの入力に対して、使用されるメモリーがdcの間にあるようなd cが存在しますΘ1Θ1dcdc

つまり、これは、入力に関係なく、アルゴリズムのメモリ使用量が一定の範囲内にあることを意味します。

通常、メモリ関数は、アルゴリズムへの入力を保存するために使用されるメモリを考慮しません。そうしないと、メモリ使用量が常に少なくともです。Θn


「その入力に事実上依存しない。」-「効果的に」の定義は?
ラファエル

同様に、使用されるメモリは入力に応じて変化しますが、一定の間隔内でのみ変化します。より良い表現を考えることができる場合は、自由に編集してください。
-jmite

「使用されるメモリは、入力に対してcの間です」よりも良い表現はないと思います。必要もありません。dc
ラファエル

簡単な説明的な例が役立ちます
-vzn

8

アルゴリズムの一定の空間の複雑さ

アルゴリズムが使用するメモリの量は、入力に依存しません。

アルゴリズムは、一定量のスペースを使用する場合、一定のスペースの複雑さを持つと言われています。それはすることができ変数または正確の配列10の要素。1010

ただし、In-situアルゴリズムは入力自体で目的の機能を実行するため、余分なスペースはほとんど必要ありません。通常、入力は、アルゴリズムの実行時に出力によって上書きされます。(参照

In-situアルゴリズムは、入力が占めるスペースを考慮せず、スペースの複雑さを計算しながら、余分なスペースのみを考慮します。


3
これは間違っています。たとえば、特定のアルゴリズムでは、3文字未満の入力は5バイトのメモリを使用し、それよりも大きい入力はすべて100万バイトのメモリを使用します。そのアルゴリズムのメモリ使用量は入力から独立していないことは間違いありませんが、スペースを使用していることは間違いありません。ステートメントを修正するために、入力から独立した一定のメモリ使用量の上限と下限があります。Θ(1)
オレーセ

@Olatheバイトの観点から各入力が占めるスペースと、カウントの観点からの入力数は、2つの異なる概念ではありませんか?
Prateek

0

これは、アルゴリズムに必要な追加のメモリ量が、十分に大きな入力の入力サイズに依存しない一定量よりも大きくないことを意味します。


2
ΘOΩの共通部分であるため、一定の(おそらく他の)一定量より少なくありません。別の例では、O X 2のような機能を可能にするF X = 3 X 2を、またF X = X。一方、Θ x 2はより厳密で、f x = 3 xのような同じ複雑さの関数のみを許可しますΘOΩO(x2)f(x)=3x2 f(x)=xΘ(x2)f(x)=3x2f(x)=x
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.