この回答は急いで書かれ、いくつかの反対票を受け取ったので、私はそれを明確にして書き直すことにしました
アルゴリズムの時間計算量は、アルゴリズムが解決しようとしている問題のサイズに関するアルゴリズムの操作数の表現です。
ここには2つのサイズがあります。
最初のサイズは、行列X×Yの要素の数です。これは、複雑さの理論で入力のサイズとして知られているものに対応します。k=X×Yが行列内の要素の数を表すとします。ツインループの演算数はX×Yなので、O(k)になります。
2番目のサイズは、行列の列と行の数です。m = max(X、Y)とします。ツインループの演算数はO(m ^ 2)です。通常、線形代数では、この種のサイズは、m×m行列での行列演算の複雑さを特徴づけるために使用されます。
複雑さについて話すときは、インスタンスの問題をエンコードする方法と、そのサイズを指定するために使用するパラメーターを正確に指定する必要があります。複雑性理論では、通常、アルゴリズムへの入力は有限のアルファベットからの文字列として与えられると想定し、アルゴリズムの複雑さを、によって与えられる問題のインスタンスに対する操作数の上限の観点から測定します。長さnの文字列。これは複雑性理論にあります。nは通常入力のサイズです。
アルゴリズムの実際の複雑さの分析では、特定のコンテキストでより意味のあるインスタンスのサイズの他の測定値を使用することがよくあります。たとえばA
、がグラフの接続性行列であるV
場合、問題のインスタンスの複雑さの尺度として頂点の数を使用できます。または、A
がベクトル空間に作用する線形演算子の行列である場合、次元を使用できます。そのような尺度としてのベクトル空間の。正方形の場合行列の慣例では、行列の次元の観点から複雑さを指定します。つまり、nの観点からn×n行列に作用するアルゴリズムの複雑さを測定します。それはしばしば実用的に意味があり、複雑性理論の慣習と矛盾する場合でも、特定のアプリケーション分野の慣習に同意します。
ツインループにMatrixScanという名前を付けましょう。Matrix Scanのインスタンスのサイズが、マトリックスの文字列エンコーディングの長さである場合、合法的に言うことができます。エントリの制限されたサイズを想定すると、それは行列内の要素の数kです。次に、マトリックススキャンの複雑さはO(k)にあると言えます。一方、インスタンスの複雑さを特徴付けるパラメーターとしてm = max(X、Y)を使用する場合、多くのアプリケーションで一般的であるように、X×Yマトリックスの複雑さのマトリックススキャンもO( m ^ 2)。正方行列の場合、X = Y = mおよびO(k)= O(m ^ 2)。
注意:コメントの一部の人々は、多項式問題を線形問題に減らすために、問題の符号化を常に見つけることができるかどうかを尋ねました。本当じゃない。一部のアルゴリズムでは、操作の数は、入力の文字列エンコーディングの長さよりも速く増加します。たとえば、2つのm×m行列にθ(m ^ 2)個の演算を乗算するアルゴリズムはありません。ここでは、入力のサイズはm ^ 2として増加しますが、Ran Razは、操作の数が少なくともm ^ 2logmと同じ速さで増加することを証明しました。nがO(m ^ 2)にある場合、m ^ 2 log mはO(n log n)にあり、最もよく知られているアルゴリズムの複雑さは、O(m ^(2 + c))= O(n ^(1+ c / 2))、ここで、cはCoppersmith-Winogradアルゴリズムのバージョンでは少なくとも0.372であり、一般的な反復アルゴリズムではc=1です。