Prim のアルゴリズムを実装しようとしています。そのためには、優先度キューの reduceKey メソッドが必要です (優先度キューのキー値を更新するため)。これを STL Priority Queue に実装できますか?
それが役立つ場合、これは私が従っているアルゴリズムです:
- グラフ G の各頂点 u に対して
- u のキーを INFINITY に設定
- u の親を NIL に設定する
- ソース頂点のキーを 0 に設定
- 上記のキーを使用して、グラフ内のすべての頂点を優先度キュー Q にキューに入れます。
- Q は空ではありません
- Q の最小キーで頂点 u をポップする
- u の各隣接頂点 v について
- (v がまだ Q にある) かつ (key(u) + weight-function(u, v) < key(v)) の場合
- u を v の親に設定する
- update v's key to equal key(u) + weight-function(u, v) // この部分で問題が発生します。これは、優先度キューに reduceKey を実装する方法がわからないためです
- (v がまだ Q にある) かつ (key(u) + weight-function(u, v) < key(v)) の場合