vectors
2つのAでマッチング問題を解いていますclass
class matching
{
public:
int n;
char match;
};
これは私が実装しようとしているアルゴリズムです:
int augment(vector<matching> &left, vector<matching> &right)
{
while(there's no augmenting path)
if(condition for matching)
<augment>
return "number of matching";
}
大まかなマッチングでは、 、 、 、および と一致する場合、および一致しleft[i]
ないものにはメンバーがあり、right[j]
left[i].n = j
left[i].match ='M'
right[j].n = i
right[j].match = 'M'
n = -1
match = 'U'
拡張パスを見つけている間、別の (i, j) に 1 つ存在する場合、一致しmatch
ないもののメンバーを から'M'
に'U'
変更n = -1
し、拡張パスと一致する 2 つのメンバーmatch
を 'A' に変更します。n
インデックスに応じたメンバー。
これがこれを解決するための正しいアプローチであるかどうかはわかりません。これは最大一致の最初の試みであり、オンラインで多くの記事を読み、チュートリアルを見てきましたが、「コード」を適切に機能させることができません。
コードは必要ありません。コードを書くことができます。このアルゴリズムを段階的に理解したいだけです。上記で試したようなアルゴリズムを誰かが教えてくれたら、ありがたいです。また、それ以来間違った方向に進んでいる場合は、修正してください。