皆さん、こんにちは。
ハッシュテーブルには O(1) ルックアップ (キーがある場合) があると言いますが、リンクされたリストには次のノードの O(1) ルックアップがあります (現在のノードへの参照がある場合)。
ただし、Big-O 表記法がどのように機能するかにより、アルゴリズムxのコストとアルゴリズムx + mのコストを表現 (または微分) するのにあまり役に立ちません。
たとえば、ハッシュテーブルのルックアップとリンクされたリストのルックアップの両方に O(1) というラベルを付けたとしても、これら 2 つの O(1) は非常に異なるステップ数になります。
リンクされたリストのルックアップはxステップ数に固定されています。ただし、ハッシュテーブルのルックアップはvariable です。ハッシュテーブルのルックアップのコストはハッシュ関数のコストに依存するため、ハッシュテーブルのルックアップに必要なステップ数はx + mです。
ここで、xは定数です
mは未知の変数値です
つまり、両方の操作を O(1) と呼んでも、ハッシュテーブルのルックアップのコストは、リンクされたリストのルックアップのコストよりもはるかに高くなります。
Big-O 表記は、具体的には入力データ コレクションのサイズに関するものです。これには利点がありますが、 n以外のすべての変数を 1 に折りたたんで正規化するとわかるように、欠点もあります。その中に m 変数 (ハッシュ関数) はもう見えません。
Big-O 表記法以外に、x操作を意味する固定コスト O(1 )とx + m ( m、ハッシュ関数) 操作数?