私は、アルゴリズムの分析のための非常に面白い課題を持っています。これは、ダイナミックプログラミングやグリーディーなどの異なるアプローチを使って有名な問題(ナップザック問題など)をグラフィックで比較する必要があります。私は、私が使用できるPythonの視覚化(主に時間の複雑さのため)を助けるために使用できるライブラリやツールがあるかどうかを知りたかったのです。アイデアは、以下示すようなシンプルなグラフィック、次のようになります。アルゴリズム実行視覚化のためのPython
1
A
答えて
2
まず、あなたは、アルゴリズムの実際の時間の複雑さを計算する必要があります。これは、timeit.timeit
(実際の壁面時間)を使用するか、操作の数を手動で計算することによって行うことができます。ここで
は、バブルソートアルゴリズムの例である:
def bubble_sort(a):
not_sorted = True
operations = 0
while not_sorted:
not_sorted = False
for i in range(len(a)-1):
operations += 1
if a[i] > a[i+1]:
a[i], a[i+1] = a[i+1], a[i]
not_sorted = True
return operations
今、あなたは、異なるサイズの配列で、この機能を養うたびに、必要な操作の数を収集し、グラフを作ることができます。
import matplotlib.pyplot as plt
from random import sample
# assuming we are in Jupyter:
%matplotlib inline
ns = range(10, 1000, 10)
ops = []
for n in ns:
my_list = sample(range(n), n)
ops.append(bubble_sort(my_list))
plt.plot(ns, ops)
あなたも、このようないくつかの統計で漸近を確認することができます。
from statsmodels.formula.api import ols
import pandas as pd
df = pd.DataFrame(dict(n=ns, ops=ops))
model = ols('ops ~ n + I(n**2)', df)
model = model.fit()
plt.plot(ns, ops)
plt.plot(ns, model.predict())
は、実際の壁の時間を見つけるには、単に使用
from timeit import timeit
time = timeit('bubble_sort(a)', number=10, globals=globals())
+0
本当にありがとうございました。それは間違いなくこの課題で私を助けるはっきりした答えでした! –
関連する問題
- 1. 視覚化のためにデータ値を「平滑化」するアルゴリズム
- 2. アルゴリズムの視覚化の仕方は?
- 3. アニメーションマップの視覚化のためのPythonライブラリ
- 4. python 3D視覚化とグラフィックス
- 5. オクターブ - 視覚化のためのポイントプロットの最適化
- 6. プロジェクトタンゴポイントクラウドの視覚化
- 7. ブラウザでの3D視覚化のためのOpenGLまたはFlash
- 8. Google視覚化の複数行ヘッダー
- 9. 視覚化データ
- 10. Android視覚化ツールのためのダイナミックカラーの作成方法
- 11. PowerBIで異なる視覚化のための異なるスライサー
- 12. オントロジを視覚化するための最良のツールは?
- 13. 実行ターボの違いと視覚
- 14. 現実的な視覚化のためにMVVMとWPFを使用
- 15. データベースから視覚的に似た写真を見つけるためのアルゴリズム?
- 16. Pythonで距離行列を視覚化するには?
- 17. (視覚的に魅力的な)3D物理シミュレーション/視覚化のためのPythonプログラムを作成するための良いライブラリは何ですか?
- 18. Cloudera視覚化ツール
- 19. 視覚化データR
- 20. データ視覚化フレームワーク
- 21. 大きなソーシャルネットワークを視覚化するためのJava lib
- 22. ソートアルゴリズムを視覚化するための良いアニメーションライブラリ
- 23. 視覚化オブジェクトのプロパティ
- 24. WCFサービスの視覚化
- 25. HTML5オーディオプレーヤーの視覚化
- 26. JavaScriptネットワークの視覚化?
- 27. Google Zeitgeist 2011の視覚化
- 28. ggplot視覚化の質問
- 29. DeepLearning CNNレイヤーの視覚化
- 30. Antのターゲットグラフを視覚化
私は['matplotlib'](http://matplotlib.org/)が偉大になると思います – Arman