[python]floyd-walshアルゴリズム



floyd-walshアルゴリズム


  • エッジウェイトが負または正の重み付けグラフィックで最短パスを探すアルゴリズム
  • オーディオなし期間

  • すべての頂点ペア間の最短パスの長さ(または重み付け和)を求めることができます.

  • 最短距離情報を2 Dテーブルに格納
  • に初期化すべき最大値

  • 時間複雑度:O(V^3)、Vは頂点の個数
  • 3のドア用

  • 始点i,目的地j,経路kを用いてfor文を形成する
  • 経由地kはドアの一番外にある
  • の下の写真では、k=0の場合、所定の経路
  • が条件で入力される.
    写真の例はhttps://ko.wikipedia.org/wiki/フロイドウォーシェルアルゴリズム/を参照してください


    Python Code

  • 3でfor文を実装する場合、パスkは文の一番外側にある必要があります.
  • ウェイを交換し、最短パス
  • の更新を続行します.
    # Vertex 개수 : n 기준
    
    # k : 경유지
    for k in range(n):
        # i : 출발지
        for i in range(n):
            # j : 목적지
            for j in range(n):
                # dp[i][j] = min(dp[i][j], dp[i][k]+dp[k][j])
                if dp[i][j] > dp[i][k] + dp[k][j] :
                    dp[i][j] = dp[i][k] + dp[k][j]

    Practice

  • 白駿#11404.りゅうたい
  • https://www.acmicpc.net/problem/11404
  • 22021 KACAブラインド求人-タクシー料金に乗車
  • は様々な方法で解くことができるが、floyd-washillarによって
  • を解くこともできる.