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のオープンソース例
  • 技術書とオンラインコース
  • コミュニティディスカッションと技術ブログ

実装例

基本例

# 完全な実装例を提供します

手順

  1. セットアップ: 開発環境の設定
  2. データ: 必要なデータの準備
  3. 実装: コア機能の構築
  4. テスト: 動作確認
  5. 最適化: パフォーマンスの向上

よくあるエラー

| エラー種別 | 原因 | 解決方法 | |-----------|------|---------| | コンパイル | 構文 | コードの構文を確認 | | 実行時 | 環境 | 依存パッケージの確認 | | 論理 | アルゴリズム | ステップごとのデバッグ | | パフォーマンス | 効率 | プロファイラーの使用 |

コード例

import sys

def main():
    print("Hello, World!")

if __name__ == "__main__":
    main()

参考資料

  • 公式ドキュメント
  • APIリファレンス
  • オープンソース例
  • コミュニティディスカッション

会員限定無料チュートリアル

このチャプターは登録会員限定の無料コンテンツです!ログインまたは登録してすぐにロックを解除してください。

今すぐログイン / 登録