1514。確率が最大のパス
難易度:中
トピック:配列、グラフ、ヒープ (優先キュー)、最短パス
n 個のノード (0 からインデックス付き) の無向重み付きグラフが与えられます。これは、エッジ リストで表されます。ここで、edges[i] = [a, b] は、横断の成功確率を持つノード a と b を接続する無向エッジです。そのエッジは成功しました。Prob[i].
2 つのノードの開始と終了が与えられた場合、開始から終了までの成功確率が最大となるパスを見つけ、その成功確率を返します。
始点から終点までのパスがない場合は、0を返します。あなたの答えは、正解と最大1e-5の差がある場合に受け入れられます。
例1:
2
確率を乗算すると精度誤差が生じます。
ダイクストラのアルゴリズムの修正バージョンを使用できます。最短の道を見つけるのではなく、成功の確率を最大化することになります。
このソリューションを PHP で実装してみましょう:
1514。確率が最大のパスリーリー
説明:
: グラフは、各ノードが隣接ノードを指し、それらを接続するエッジの成功確率とともに隣接リストとして表現されます。
: 配列 maxProb は、開始ノードから各ノードに到達する最大確率を格納するために使用されます。
: 最大ヒープ (SplPriorityQueue) は、最も確率の高いパスを最初に探索するために使用されます。これは、宛先ノードに到達したときに、最大の確率でパスが見つかったことを確認するために非常に重要です。
:
開始ノードの確率を 1 として初期化します (開始点に留まる確率が 1 であるため)。出力は0.25になります。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub でリポジトリ
にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとってとても意味のあるものになります!このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
リンクトイン以上が最大確率のパスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。