Big-Oh時間の複雑性に複数の変数を含めることはできますか?


11

たとえば、2つの文字列の分析が必要な文字列処理を行っているとします。彼らの長さがどうなるかについての情報はありませんので、彼らは2つの異なる家族から来ています。アルゴリズムの複雑さをまたはと呼んでも問題ありませんか単純なアルゴリズムを使用するか、最適化されたアルゴリズムを使用するかによって異なります)。O n + m O(nm)O(n+m)

同様に、選択したアルゴリズムが実際には2つのステージを必要とするとします。最初の文字列のセットアップフェーズでは、初期コストを発生させずに他の文字列をいくつでも処理できます。構造とそれに続く任意の数の計算があると言うのが適切だと考えられますか?O m O(n)O(m)

どちらの計算も線形であるため、それらをと呼ぶのが適切でしょうか?O(n)


少し背景については、この回答のコメントを参照してください。@ corsiKaがそのような論争の的である質問に勇敢に質問したことに対する私の敬意。
OldCurmudgeon 2014

@OldCurmudgeon、なるほど。私はそのコメントスレッドに足を踏み入れたくないです。Oldcurmudgeon、big-O表記を理解せずにbig-O表記について議論していますか?確かにぎこちない。また、あなたとcorsiKaは、パラメータとを定義せずに実行時間について議論しています。これは、誤解のレシピです。ヒント:文字列を扱う際の一般的な慣習の1つは、を使用して1つの文字列の長さを使用し、を別の文字列の長さに使用することに同意することです。ここに示されています)。m m nnmmn
DW

@DW OldCurmudgeonが単に学校で異なる定義を学習した可能性があります...以下のコメントで指摘するように、複数の変数を回避することは可能ですが、今まで実際にそれを行うことを考えたことはありません。多分これ-またはそれのようなもの-が標準でしたか?
Patrick87 2014

2
ここここで十分な答えがあると思います
ラファエル

回答:


14

はい、もちろん。これは問題なく、完全に許容できます。実行時間が2つのパラメーターに依存するアルゴリズムを確認することは一般的で標準です。

たとえば、深さ優先検索の実行時間はとして表されることがよくあります。ここで、は頂点の数、はグラフのエッジの数です。これは完全に有効です。これの意味は、すべてのに対して、アルゴリズムの実行時間が最大でになるように、定数と数値が存在すること。つまり、正確な実行時間がである場合、が存在し、およびが存在する場合と意味するnは、M 、C 、N 0M 0 C N + M 、N > N 0M > M 0 F N M F N M = O N + M C n 0m 0 n > n 0 mO(n+m)nmcn0,m0c(n+m)n>n0,m>m0f(n,m)f(n,m)=O(n+m)c,n0,m0n>n0 F N M C N + M m>m0f(n,m)c(n+m)

はい、第1ステージは時間かかり、第2ステージは時間かかると言うのは、完全に適切で許容可能です。O m O(n)O(m)

重要:とを定義してください。あなたは「これがあると言うことはできません何を指定せずに時間アルゴリズム」です。問題ステートメントでが指定されていない場合は、指定する必要があります。たとえば、グラフアルゴリズムを参照してください。通常、頂点の数とエッジの数を定義します。m O n n n n = m =nmO(n)nn=メートル=

あなたがそれらを時間と呼ぶことができるかどうかに関しては、いいえ、もちろんそうではありません-あなたが何らかの方法でことを知っている場合を除きます。もちろん、であることがわかっている場合は、となるため、時間アルゴリズムは時間アルゴリズムでもあります。しかし、であるという保証がない場合、それを時間アルゴリズムと呼ぶことはできません。m = O n m = O n m + n = O n O m + n O n m = O n O n Oメートル=Oメートル=Oメートル+=OOメートル+Oメートル=OO

これは基本的なものです。あなたはアルゴリズムの教科書でそれを見つけるでしょう。


1
@OldCurmudgeon、多くの標準的なアルゴリズムの教科書でこの例が見つかる可能性が高いです。何を見た?深さ優先検索の章(私の回答で述べた例)を見てみましたか?
DW

2
@OldCurmudgeon CLRSの私の版では、3.1-8は、多くの変数の関数の表記のこの定義を正確に示しています。そして、dfsの実行時間の上限は、グラフです。O V + E V E OOV+EVE
キリル2014

2
@Kirill私のポイントは、考えられることでした。過去のある時点では、総計の長さのみを考慮することが慣習的であると見なされ、それ以外の場合はエラーと見なされる可能性がありました。学生の試験を採点していて、その学生がDFSの時間の複雑さの変数として合計入力長を使用している場合、2次元(VとE)を考慮しないとエラーと見なしますか?何が真実であり、何を人々が認めようとしているのかは、常に同じであるとは限りません。
Patrick87

1
だれもがこのようにランダウ記法を使用している限り、私は同意します、実際にそれが何を意味するのかほとんど誰も知りません(パラメーターを機能的に接続しない限り)。A. Schulzの回答にリンクされている記事も参照してください。ここでは、「基本」と「一般」の使い方が間違っていると述べています。
ラファエル

1
@ Patrick87 複雑性理論では、多くの既知のクラスの定義により、主に入力の長さを使用しています(注目すべき例外はあります)。アルゴリズム分析は-真剣に行われると-(モデルが許す限り)実際のリソース使用状況について何かを学ぶことに興味があるので、全体像を(より正確に)描くために他のパラメーターがより興味深いものになります。
ラファエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.