O(n)時間の要素の明確さ?


21

私たちは皆、比較ベースのモデルの要素の明確さを時間で実行できないことを知っています。ただし、ワードRAMでは、おそらくより良い結果を得ることができます。o(nログ⁡n)

もちろん、線形時間で計算できる完全なハッシュ関数の存在を仮定すると、要素の区別のための線形時間アルゴリズムが得られます:数字を1つずつハッシュし続け、衝突があれば1を返します。

ただし、2つの問題があります。1)使用されるランダム性を見つけることができる完全なハッシュ関数のほとんどの構成、2)どこに前処理時間、つまりどのハッシュ関数を使用するかを決定するのに必要な時間に関する議論が見つかりません数値の入力セットに基づいて使用します。

Fredmanらの「スパーステーブルの最悪の場合のアクセス時間での保存O(1)」は、最悪の場合にアクセス時間のハッシュ関数を提供することで最初の問題を解決しますが、2番目の問題については何も述べていません。O(1)

要約すると、ここに私が欲しいものがあります:

セット与えられたアルゴリズム設計のN個(各番号はある数wはワード長とワード-RAMに長いビット)wはハッシュ関数見つけ、H :S → { 1 、... 、M }内のO (N )時間ここで、m = O (n )です。関数Hは、プロパティを持つ必要があり、そのいずれかのためにJ ∈ { 1 、... 、M }の要素数Snwwh:S→{1、…、m}O(n)m=O(n)hj∈{1、…、m}にマップすることを jが一定であると計算時間(Iする)取るべきである O (1 )「合理的」という言葉-RAMモデル、すなわちの時間を、モデルがで評価される言葉に「エキゾチック」の機能を許可するべきではありません O (1 )時間。Sjh(私)O(1)O(1)

また、ハッシュ関数をまったく使用しないword-RAMの要素の区別を解決するアルゴリズムがあるかどうかも知りたいと思います。


8
Re:「ハッシュ関数をまったく使用しないword-RAMの要素の明確さを解決するアルゴリズムがあるかどうかも知りたい」— 線形ではなくのみが必要である限り、RAMワードでのソートに関する多くの作業があります(en.wikipedia.org/wiki/Integer_sortingを参照)。これらのアルゴリズムには、ハッシュを使用するものと使用しないものがあります。o(nログ⁡n)
— デビッドエップシュタイン

おおよその解決策はありますか?
— AT

(私は思う)あなたの思考プロセスは1つのステップをスキップしています:1.比較モデルで最も複雑なものはであると仮定します 2. RAMモデルでこれを改善する方法を尋ねます3.直接尋ねますRAMモデルのO (n )時間でのソリューション。むしろ、RAMモデルのo (n log n )のソリューションを検討し、それらを改善できるかどうかを確認する必要がありますか?Θ(nログ⁡n)O(n)o(nログ⁡n)
— ジェレミー

Radixの並べ替えは遅すぎますか?
— トーマスミュラー

回答:


8

素子鮮明は、内の時間でRAMモデルで決定論的に解くことができる時間:O(nログ⁡ログ⁡n)⊂o(nログ⁡n)

ソート内の時間であなたのn個の数Wソートアルゴリズムを使用してビット(「にソート確定STOC 2002年ハンによって記載O (N ログログNの)リニアスキャン次いで、時間及び線形空間」)衝突の時間。O(nログ⁡ログ⁡n)nwO(nログ⁡ログ⁡n)

私の知る限り、これが今日知られている最高の結果です。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.