サブリニア時間でのフィボナッチ数n番目
2023-09-28 16:47:37
質問
n番目のフィボナッチ数をサブ線形時間で計算するアルゴリズムはありますか?
どのように解決するのですか?
この
n
番目のフィボナッチ数は次のように与えられます。
f(n) = Floor(phi^n / sqrt(5) + 1/2)
ここで
phi = (1 + sqrt(5)) / 2
仮に、原始的な数学演算(
+
,
-
,
*
と
/
) は
O(1)
を計算すると、この結果を使って
n
でのフィボナッチ数
O(log n)
時間 (
O(log n)
というのは、式中の指数関数があるからです)。
C#の場合。
static double inverseSqrt5 = 1 / Math.Sqrt(5);
static double phi = (1 + Math.Sqrt(5)) / 2;
/* should use
const double inverseSqrt5 = 0.44721359549995793928183473374626
const double phi = 1.6180339887498948482045868343656
*/
static int Fibonacci(int n) {
return (int)Math.Floor(Math.Pow(phi, n) * inverseSqrt5 + 0.5);
}
関連
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] O(log n)とは具体的にどのような意味ですか?
-
[解決済み] ゲーム「2048」の最適なアルゴリズムとは?
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] 簡単な面接問題が難しくなった:1~100の数字が与えられたとき、ちょうどk個の数字が欠けていることを見つけなさい。
-
[解決済み] ある数字が2の累乗かどうかを確認する方法
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】アルゴリズムの時間複雑性を求めるには?
-
[解決済み] .Net 4.0の新しいTuple型は、なぜ参照型(クラス)であり、値型(構造体)ではないのでしょうか?
-
[解決済み] Googleはどうしてそんなに速いのか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] フィボナッチ数列の書き方は?
-
[解決済み] なぜSSEスカラーsqrt(x)はrsqrt(x) * xより遅いのですか?
-
[解決済み] Entity Frameworkのクエリは遅いが、SqlQueryの同じSQLは速い。
-
[解決済み] RustのOption型のオーバーヘッドとは?
-
[解決済み] EBPフレームポインタレジスタの目的は何ですか?
-
[解決済み] Laravelは本当にこんなに遅いのか?
-
[解決済み] PostgreSQL: pg_dump, pg_restore の性能改善
-
[解決済み] CSS3のトランジション。transition: all" は "transition: x" よりも遅い?
-
[解決済み] memcpyのための拡張REP MOVSB
-
Dapperを使用したバルクインサートの時間が予想より長い