Reynolds&Tymannによる成長の定義の順序


47

カール・レイノルズとポール・タイマンが書いた「プリンセス・オブ・コンピューター・サイエンス」(2008)という本を読んでいます(Schaum's Outlinesから出版)。

2番目の章では、名前のリストを単純に反復処理し、リスト内で特定の名前が見つかった場合にTRUEを返す順次検索の例を使用してアルゴリズムを紹介します。

著者は続けて言っています(17ページ):

順次検索アルゴリズムの「成長の順序」はnであると言います。この表記はT(n)です。また、成長の順序がT(n)の一定の因子内にあるアルゴリズムは、シータがNLであると言います。「シーケンシャル検索のシータはnです。」問題のサイズはn(検索されるリストの長さ)です。

これを理解するのは本当に難しいと思います。この本はエラーに満ちているので、何かが欠けているのか、上記の段落にタイプミスがあるのか​​はわかりません。一般的な英語では、「... say」で終わる文はめったにありません。

私は非常に混乱しています。

Tは何の略ですか?本は説明しません。時間ですか、シータですか?

「NLのシータ」が「シーケンシャル検索のシータがnである」ことを意味する場合 Lは何の略ですか?「線形」または「長さ」?

出版社に説明を求めて書いた。彼らは私のメッセージを著者に転送すると言った。彼らは答えていない。私は他のソースも調べてみましたが、それでも何かを誤解しているというしつこい感じがします。したがって、この段落を解読するまで休むことはできません。

誰かがその本のコピーを持っており、その段落を理解している場合。次に、その段落が正確かどうか、または他の言葉で説明してもらえれば幸いです。ありがとう。


Wikipediaの時間の複雑さT(n):「アルゴリズムのパフォーマンス時間は同じサイズの異なる入力によって異なる場合があるため、一般に、T(n)として示されるアルゴリズムの最悪の時間の複雑さを使用します。サイズnの入力にかかる最大時間あまり一般的ではなく、通常明示的に指定されるのは、平均ケースの複雑さの尺度です時間複雑さは、関数T(n)の性質によって分類されます。 T(n)を用いて= O(n)の線形時間アルゴリズムと呼ばれ、[...]」
ステファン

1
私はそれがこの本であると信じていますそして、私がちょうど去った非恒星のレビューに加えて、おそらく別の今日の日付があります、それはおそらく偶然ではありません!
ジェイソンC

sayのその使用法は、最も使用頻度の低い定義のように感じます。「...、言ってみよう」と考えてください。その文が理にかなっているのかまだわかりません。
ロジャークルーガー

回答:


77

段落が間違っています。残念なことに、教材を理解していない学生が演習の答えとして書くようなものとまったく同じように見えます。この種のナンセンスは、教科書にはありません。急な動きはしないでください。本を置いてください。本から離れてください。

順次検索アルゴリズムの「成長の順序」はnであると言います。この表記はです。T(n)

いいえはと呼ばれる関数の表記法で、と呼ばれる引数を取ります。その関数は、何でも意味するために使用できます。形式でプログラムの実行時間の再帰関係を記述する伝統があります。 しかし、は「成長の順序」ではありません。ここでは、再帰関係によって定義された特定の関数です。そして、単に「」と書いて、人々があなたの心を読んで、関数が何らかのアルゴリズムの実行時間を示すことを知ることを期待  することはできません。  は時間を表します。T(n)Tn

T(1)=kT(n)=T(n1)+lognfor n>1
TT(n)=blahTT

また、成長の順序が一定の因子内にあるアルゴリズムには、NLのシータがあると言います。「シーケンシャル検索のシータはです。」T(n)n

これは明らかに壊れています。著者は次のようなものを書くつもりだったと思う

また、成長の順序が一定の因子内にあるアルゴリズムのシータはあり、「シーケンシャルサーチにはシータます」と言います。T(n)nn

ただし、「が高さの表記法である場合、「ジョンは180cmのを持っている」とは言わないように、「シータを持っています」とは言わないでください。それは正しい言葉の形ではありません。実際に、「アルゴリズムの実行時間はtheta(またはtheta of )です」と言い  ます。特に、はアルゴリズムではなく数学関数について話すためのツールであることに注意してください。シータは、実行時間が何かという意味ではありません。むしろ、実行時間について話すために使用できるものです。nhhnnΘ

ちなみに、 "NL"は、複雑性クラスの非決定的対数空間を示します。これは、元の引用に現れた位置ではまったく意味がありません。


12
最初のパラグラフは私を微笑ませました。なぜなら、それはまさにコンピュータサイエンス警察があなたに言うようなことだからです:-)(+1、これも良い答えです)。
たJuho

3
ご説明ありがとうございます。それは確かに非常に有用であり、今では少し良くなったと感じています(または、少なくとも、その段落を理解していないことに頭を悩まないでください)。今リラックスできます。
JW。

2

著者がBig O記法を説明しようとしているように聞こえますが、特別な理由なしにに名前を変更し、テキストを完全に破壊しました。T

Big O表記(およびlittle-oとTheta)の説明については、MITの書籍、Leiserson教授によるアルゴリズムの紹介をお勧めします。

1つの重要な違いは、アルゴリズムの全体的な複雑さを指すことであると思われます。これは通常、時間スペース、またはその両方です。(たとえば、一部のアルゴリズムは、より大きなデータセットでは実行速度が遅くなり、一部のアルゴリズムではより大きなデータでより多くのストレージスペースが必要になり、一部のアルゴリズムではより多くの時間とスペースが必要になります)Onotation

このは、アルゴリズムの時間測定のみを参照しており、ストレージ要件を考慮していないようです。Tnotation


1
大きなOを説明しようとしているようには思えませんが、シータについて明示的に語っています。
デビッドリチャービー

Leiserson教授のテキストは、ThetaをBigOのより正確なバリエーションとして具体的に説明しています。シータには他にも定義があるかもしれませんが、BigO関連のシータは私がよく知っているものです。
abelenky

2
私はこれが起こっているとは思わない。代わりに、「T(n)= n」と書いて(明示せずに)誰もがT(n)が実行時間、具体的にはアルゴリズムの実行時間を指すと推測すると仮定するのが一般的だと思う念頭に置いて、nは入力のサイズを指します。
DW
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.