G =(V、E)を無向グラフとし、sとtはVの2つの頂点です。グラフの各エッジは、赤または青に色分けされています。最小数の赤いエッジを持つsとtの間のパスを見つけるアルゴリズムを見つける必要があります。
私は次のアルゴリズムについて考えました:修正されたBFSアルゴリズム
頂点ごとに、「赤レベル」と呼ばれる追加のフィールドを使用します。これは、sからこの頂点へのパス上の赤いエッジの最小数を示します。新しい頂点を発見したら、その赤レベルフィールドを更新します。すでに検出された頂点を探索しようとしている場合、この頂点の赤レベルが現在の赤レベルよりも大きい場合は、この頂点をBFSツリーから削除し、その子を持つ頂点の子として挿入します。現在、探索中などです。目的のパスは、アルゴリズム実行の最後にBFSツリーのsとtを接続するパスです。
私は今、このアルゴリズムが正しいことを証明しようとしていますが、ほとんど成功していません。それが実際に正しいかどうかもわかりません。ヒント/アイデアはありますか?