要素の一意性は決定論的な線形時間で解決できますか?


9

次の問題を検討してください。

入力:整数のX,Yをリストします

目標:両方のリストに整数が存在するかどうかを判断しxます。

両方のリストのサイズがます。この問題の確定的な線形時間アルゴリズムはありますか?言い換えれば、ランダム性を使用せずに、この問題を時間で決定論的に解決できますか?X,YnO(n)

残念ながら、リストの要素がすべて小さいとは限りません。


ランダム化されたアルゴリズムを使用して予想時間でそれを解決する方法を見ることができます:2つのユニバーサルハッシュ関数ランダムに選択し、の要素をハッシュテーブルに格納し(ハッシュ関数としてを使用)、次にルックアップします各要素を調べて、それがハッシュテーブルにあるかどうかを確認します。予想される実行時間はO n )になります。しかし、O n )の実行時間で決定論的アルゴリズムを見つける方法がわかりません。これをランダム化解除して単一の特定のハッシュ関数を修正しようとすると、最悪の場合の入力が存在し、このプロシージャがΘ nO(n)hXhYO(n)O(n)Θ(n2)時間。私が見つけることができる最良の決定論的アルゴリズムは、値をソートすることですが、それは線形時間ではありません。線形実行時間を達成できますか?

また、すべてのリスト要素が範囲整数であると仮定すれば、線形時間でそれを解決する方法を見ることができます[1,n](基本的に、ソートのカウントを行います)-しかし、一般的に何が起こるかに興味がありますそれが想定できない場合。

答えが計算モデルに依存している場合、RAMモデルは思い浮かびますが、合理的な計算モデルの結果に興味があります。私はを知ってるの要素の一意性のための決定木アルゴリズムの下限がある場合でも、時には我々は線形時間アルゴリズムを見つけることができるように、これは決定的ではありませんΩ nはログN にバインド決定木モデル。Ω(nlogn) Ω(nlogn)


衝突を処理する必要があるため、ハッシュテーブルはO(n log n)です。
–ThorbjørnRavn Andersen 2015

1
@ThorbjørnRavnAndersen、私はあなたがどこからそれを得ているのかわかりません。2つのユニバーサルハッシュ関数と適切なサイズのハッシュテーブルを使用することで、ハッシュの衝突の数が最小限になる(高い確率で)ことが保証されるため、実行時間は達成可能だと思います。O n lg n をどこから取得したかはわかりません。何か特別なことを行わない場合(2-universalハッシュの使用など、衝突のために最悪のケースはO n 2です。OOlgO2
DW

悪魔は詳細にあり、ここでは「適切なサイズのハッシュテーブル」です。衝突を望まない場合、これはかなり大きくなるかもしれません。典型的なn-log-nは(私が正しく思い出せば)リストとのハッシュ関数の衝突を処理するためのものです。
–ThorbjørnRavn Andersen、2015

1
@ThorbjørnRavnAndersen(オーバーロードされていないテーブルの場合)同じアドレスにマッピングされるキーの予想される数は一定であるため、衝突の解決の種類は無関係です。こちらもご覧ください。リストの代わりに(外部)平衡型BSTを使用する場合、は最悪のケースに適合します。Oログ
ラファエル

回答:


1

XとYの考えられる値ごとにビットを持つ十分なメモリがあれば、線形時間で問題を解決できます。これは、XとYの順序に制限を課しません。

  1. 最初はすべてのビットが設定されていません。
  2. Xを反復して、対応するビットを設定します。
  3. Yを繰り返して、対応するビットが上に設定されているかどうかを確認します。

2
残念ながら、すべての整数が小さいと想定することはできません(これらの整数がこのアルゴリズムが機能するほど小さいとは想定できません)。一般的なケースでは、このアルゴリズムの実行時間は、リスト要素のビット長で指数関数的になります。ありがとう、結構です!
DW

それを「適切なサイズのビット配列」と名付けましょう。また、ビット長の線形はlog-nと同等です。入力データに関する制限や前提条件なしでlog-nパフォーマンスを取得することについて真剣に考えていますか?
–ThorbjørnRavn Andersen 2015

2
@ThorbjørnRavnAndersenスペースはビット長で指数関数的であり(すべての可能な値からマッピングする必要があります)、時間はリストの合計サイズに比例します(両方のリストのすべての値を調べる必要があります)。ビット長に直線的なものはありません。
wchargin 2015

0

2つのリストに整数が含まれていると言っているので、2つのリストに対して基数ソートを実行してから、2つのリストを比較して同等のアイテムを線形検索できると思います。


4
これは、数値の大きさに制限がある場合にのみ機能します。
ルークマシソン

しかし、高等

数値の1つが2 ^(2 ^ 128)の場合はどうなりますか?
miniBill 2015

@anirudhしかし、入力サイズが異なるとアルゴリズムも異なります。基数を増やすたびに大きなアルファベットが必要になり、大きさの増加の複雑さをアルファベットサイズの増加にエクスポートしています。もちろん、これは理論的にも可能です。多くのハードウェアでは、数値を表す基数を変更できるとは思いません(入力と出力の端でふりをすることができますが、結局は(ほとんど)バイナリです) )。
ルークマシソン2015

0

O(nm¯)m¯


ご連絡ありがとうございます。この点に対処する質問の最後の段落を参照してください。RAMモデルでは、次の2つのリストを読み取ることができます。O 時間-それはかかりません O\ overbarメートル時間。そこで、計算のモデルが登場します。この答えは、確定的な線形時間が不可能であることを実際には証明していません。
DW

@DW RAMモデルには、ワードサイズがあります w これは定数であり、 メートル そしてこのように メートル¯のランタイムになります O、または私は間違っていますか?
Realz Slaw 2016

うーん多分考慮 w定数は間違いです。
Realz Slaw 2016

w 一定とは見なされませんが、 :任意の定数倍にすることができます メートル 表現するために必要なものの (表現するのに十分な幅 メートル)、任意の大きさではありません。)
greybeard

-1

これは、要素の一意性の問題に似ています。この問題では、n個の数値のセットがあり、すべての要素が異なるかどうかを判断する必要があります。問題の代数計算ツリーの下限はOログ


1
質問は、対数線形ではなく、線形の決定論的時間について非常に明確です。また、(値ではなく)セットに一意の要素しか含まれていないかどうかを判断するには、対数線形よりも高速に実行できます。

1
もしかして Ωログ?もしそうなら、それは問題の問題が線形時間で解決できないことを示唆しているかもしれません。しかし、関連する問題が対数線形時間で解決できると言っても、実際にはその質問には答えられません。(cc @EvilJS)
David Richerby

1
ご連絡ありがとうございます。質問の最後の文を見逃したのかしら。ここで繰り返します。「私は承知していますΩログ 要素の一意性に関する意思決定ツリーアルゴリズムの下限ですが、これは決定的なものではありません。Ωログ。決定木モデルにバインド」言い換えれば、この答えは質問に答えていない、それは単に私はすでに、私は知っていた問題の中で述べていることを何かを繰り返しますが、問題を解決しない。
DWを

それはで行うことができます Oログログ 与えられたより良い時間 Oログ、これはそうではなかったと確信しています Ωログ、しかしこれはDWの質問を解決しません。ここにコメントしてください。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.