アフィンギャップコストを使用してグローバルアライメントアルゴリズムをコーディングしました。 big-O表記でアルゴリズムを実行する時間はO(n^2)です。しかし、クラスの私の先生は、実行時間を確認するために、実行時間をn^2(nはシーケンスの長さ)で除算しなければならないと言っています(異なる長さのシーケンスを使用しています。)。そして(n、R(n)/ n^2)が水平線より下にある場合、実行時間が確認されます。私はそれが意味することを本当に理解できませんでした。私は異なる長さのシーケンスを使ってR(n)/ n^2をプロットしました。そしてそれは働いた。私は最初に変動があったが、変動がなくなった(これも画像で見ることができる)。私が使用した配列は、1000塩基長〜10,000塩基長であった。 R(n)/ n^2が実行時間をどのように確認することができますか?私はインターネットで見てみましたが、可能な答えを見つけることができませんでした。もし私の質問が単純すぎるなら、私を許してください。私はコンピュータ科学のバックグラウンドを持っていません。アルゴリズムの実行時間を確認する方法は?
答えて
Oは(N )関数のセットR(N)、例えばR(N) ≤ 、Cある定数ため、そのように定義されます cn すべてが十分に大きいnです。不等式がR(N)C/N ≤ と等価であること
。
だからあなたの先生はあなたが十分に大きいNのために、あなたは(大体)一定のを得る、ことを確認するためにR(N)/Nをプロットすることを示唆していますc。
このプロットは正式な証明ではありません。それは単なる有用な視覚化です。
ありがとうございました。今私はそれが何を意味するのか理解しています –
アルゴリズムがO(n²)の場合、実際には入力サイズnの関数としてアルゴリズムを実行するのに必要なステップ数がO(n²)であることを意味します。
関数がO(n²)内にあると言うとき、実際には正の定数c
があるので、大きな入力サイズの場合はf(n) < c * n²
となります。
これは、正の定数c
が存在するため、入力サイズが大きい場合はc > f(n)/n²
となります。
上記のグラフが一定の値に収束していることに気が付きました。これはあなたのc
です。
もちろん、アルゴリズムを実行するのに必要なステップ数はdepend on the machineです。
お返事ありがとうございました –
さらに簡単に説明すると、O(n²)のアルゴリズムは2次関数に似ています。常に2次関数をa *b²の形式の関数で除算して定数関数を得ることができます。
いくつかの数学。
1)はG(N)= F(N)/ N を定義します(。申し訳ありませんが、あなたが本当にこれを理解するために数学のビットを必要としない)
表記
f(n)
がO(n^2)
であることを意味します22)NはGの無限大になる傾向があるように制限(n)はCが直感的にいくつかの定数
あるC、あるg(n)
関数が近づくと近づくと言うことC
としてn
が大きくなります。数学者は、それがC
に「収束する」と言うだろう。
(実際には、数学はそれよりも少し複雑ですが、私は非常にさびだ。そして、私はこの単純なを維持しようとしている。)
あなたのグラフはそのグラムを実証に何をしていますか(n)は実際に収束する。そして、Cの値は、グラフが近づいている直線に対応するY軸上の値です.X軸の値が無限大になると値になります。
このような素晴らしい説明をありがとう –
Oである実行時間は(N^2)常に2つの実数正数BとN0そのようなすべてのN> = N0、
R(n)のための、それが存在することを意味< = b *(n^2)ここで、R(n)は実行時間関数です。
つまり、実行時間はb *(n^2)という形式の関数よりも低くなります。
あなたはその不平等を取り、(N^2)ですべてを分割する場合は、あなたが得る:
R(N)/(N^2)< = B
とビッグO定義はそのまま適用されます。
ように長いRは、(N)/(N^2)N> = N0ためB以下に留まるように、次にR(n)はO(N^2)です。再び言い換えれば、これは定数関数b(水平線)より下にあることを意味します。
あなたがやっていることは、R(n)/ n^2をプロットして、グラフが水平に安定しているかどうかを確認することです。十分に高いです。n。
これはR(n)をプロットし、グラフがおよそ2次関数であるかどうかを確認するよりも簡単です(2次関数は3次および高次多項式に非常に似ていますが、同意しないのですか? R(n)が実際にO(n^3)だった場合、R(n)/(n^2)は三日月関数を与え、
- 1. 実行時間を確認するオンラインコンパイラ
- 2. アルゴリズムの実行時間は?
- 3. メソッドの実行時間を確認
- 4. KDBクエリの実行時間の確認方法
- 5. アルゴリズムの実行時間を短縮する方法
- 6. アルゴリズムのC++実行時間
- 7. GCDアルゴリズムの実行時間?
- 8. RadixSortアルゴリズムの実行時間
- 9. Selenium IDEでの正確な実行時間を確認する
- 10. 実行時にユーザーのオペレーティングシステムを確認する方法は?
- 11. Karatsubaアルゴリズムの実行時間の計算方法は?
- 12. webpackでビルドするときの実行時間の確認方法
- 13. DataGripでクエリ実行時間を確認するには?
- 14. 実行時間このアルゴリズムの実行時間は何ですか
- 15. JavaScriptで実行するたびに実行時間を確認する方法は?
- 16. if文を実行する時間を確認する
- 17. アルゴリズムの実行を遅くする方法やアルゴリズムの実行中に一時停止を行う方法
- 18. Herokuリクエストの実行時間を確認する
- 19. 実行時にアルゴリズムを書く方法
- 20. アルゴリズムの実行時間の比較
- 21. アルゴリズムの複雑さと実行時間
- 22. Oracle DBMS_LOCKの取得時間(タイミング)を確認する方法は?
- 23. アルゴリズムの実行時間をモデル化するには?
- 24. pgrepを実行してpidの実行時間を確認します
- 25. 角度4の終了時に確認を実行する方法は?
- 26. プロセスの実行時間を確認することは可能ですか
- 27. 長時間実行されているDB2クエリーの状態を確認する方法は?
- 28. Javaのプレーヤーの待ち時間を確認する方法
- 29. ピーク電力の持続時間を確認する方法
- 30. asp.netの実行時にメッセージを確認
データを正規化しているので、実際にO(n^2)の場合、出力は一定になるはずです。あなたがO(n)を持っていれば同じですし、それが本当に線形かどうかを見るためにR(n)/ nをやります。 – maraca