Primのアルゴリズム
🔥 Vibe プロンプト
「20のランダムポイントでPrimのMSTを発見。Matplotlibで描画。」
import heapq, math, random, matplotlib.pyplot as plt
def prim(points):
n = len(points)
visited = [False] * n
pq = [(0, 0, -1)]
mst, total = [], 0
while pq:
cost, node, parent = heapq.heappop(pq)
if visited[node]: continue
visited[node] = True
total += cost
if parent != -1:
mst.append((parent, node, cost))
for neighbor in range(n):
if not visited[neighbor]:
dx = points[node][0] - points[neighbor][0]
dy = points[node][1] - points[neighbor][1]
dist = math.sqrt(dx*dx + dy*dy)
heapq.heappush(pq, (dist, neighbor, node))
return mst, total
random.seed(42)
pts = [(random.random()*100, random.random()*100) for _ in range(20)]
mst, total = prim(pts)
print(f"MST総延長: {total:.2f}")
章のまとめ
- コアコンセプトと原理を理解
- 実装方法とテクニックを習得
- 一般的な問題と解決策に精通
- 実際のプロジェクトに適用可能
さらに読む
- 公式ドキュメントとAPIリファレンス
- GitHubのオープンソース例
- 技術書とオンラインコース
- コミュニティディスカッションと技術ブログ
実装例
基本例
# 完全な実装例を提供します
手順
- セットアップ: 開発環境の設定
- データ: 必要なデータの準備
- 実装: コア機能の構築
- テスト: 動作確認
- 最適化: パフォーマンスの向上
よくあるエラー
| エラー種別 | 原因 | 解決方法 | |-----------|------|---------| | コンパイル | 構文 | コードの構文を確認 | | 実行時 | 環境 | 依存パッケージの確認 | | 論理 | アルゴリズム | ステップごとのデバッグ | | パフォーマンス | 効率 | プロファイラーの使用 |
コード例
import sys
def main():
print("Hello, World!")
if __name__ == "__main__":
main()
参考資料
- 公式ドキュメント
- APIリファレンス
- オープンソース例
- コミュニティディスカッション