[解決済み] エラトステネスの篩アルゴリズムの時間複雑性
質問
から ウィキペディア
<ブロッククオート
このアルゴリズムの複雑さは
O(n(logn)(loglogn))
ビット演算です。
どのようにしてそれを実現するのですか?
複雑さには
loglogn
項があることを教えてくれます。
sqrt(n)
がどこかにあると教えてくれます。
最初の100個の数字に対してふるいを実行するとします (
n = 100
)、数字を合成とマークするのに一定の時間がかかると仮定すると(配列の実装)、何回目に
mark_composite()
を使用する回数は次のようになります。
n/2 + n/3 + n/5 + n/7 + ... + n/97 = O(n^2)
また、次の素数を見つけるために(例えば、次の素数にジャンプするために
7
の倍数である数字をすべて消去してから
5
の倍数をすべて消すと)、操作の回数は
O(n)
.
つまり、複雑さは
O(n^3)
.
ということになるのでしょうか?
どのように解決するのですか?
-
あなたのn/2 + n/3 + n/5 + ... n/97は、項数が一定ではないので、O(n)ではありません。[Edit after your edit: O(n) 2 ) は緩すぎる上限です] 。緩い上限は n(1+1/2+1/3+1/4+1/5+1/6+...1/n) (sum of reciprocals of the すべての の逆数の和)であり、これは O(n log n) です。 調和数 . より適切な上限は n(1/2 + 1/3 + 1/5 + 1/7 + ...) で、これは n までの素数の逆数の和であり、O(n log log n)です。(参照 を参照。 または ここで .)
-
"次の素数を見つける"ビットは全体でO(n)しかありません。 償却済み - でn回だけ次の数を見つけるために先に進みます。 合計 で、ステップごとではありません。つまり、アルゴリズムのこの部分全体はO(n)しかかからないのです。
つまり、この2つを使うと、O(n log log n) + O(n) = O(n log log n) という算術演算の上界が得られます。ビット演算をカウントすると、n までの数を扱うので、約 log n ビットとなり、ここで log n の因数が入るので、O(n log n log log n) ビット演算が得られます。
関連
-
[解決済み] ビッグシータ記法の証明
-
[解決済み] 2進数が3で割れているかどうかを知るには?
-
[解決済み] ゲーム「2048」の最適なアルゴリズムとは?
-
[解決済み] 簡単な面接問題が難しくなった:1~100の数字が与えられたとき、ちょうどk個の数字が欠けていることを見つけなさい。
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】アルゴリズムの時間複雑性を求めるには?
-
[解決済み] ユダヤ人の足の爪を切る最適なアルゴリズムとは?
-
[解決済み] ハングマンの難易度を「易しい」「中くらい」「難しい」に分類するためのアルゴリズム
-
[解決済み] リンクリストのソートで最も高速なアルゴリズムは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ポイントルック アット ポイント
-
[解決済み] Octave : ロジスティック回帰 : fmincg と fminunc の違い
-
[解決済み] 簡単:T(n)=T(n-1)+nを反復法で解く。
-
[解決済み] アルゴリズムの教科書では、ソートされた配列について「増加」ではなく「非減少」を使っているのはなぜですか?
-
[解決済み] k-meansの時間計算量はどの程度ですか?
-
[解決済み] 複雑さ O(log(n)) は O(sqrt(n)) と同等か?
-
[解決済み] 線形時間でのソート?[クローズド]
-
[解決済み] 任意の2頂点間の全接続を求めるグラフアルゴリズム
-
[解決済み] スペルチェッカーで候補を出すアルゴリズムとは?
-
[解決済み] 平均シフトを用いた画像分割の説明