我试图实施Ford-Fulkerson算法来计算流量网络中的最大流量。该算法的如何查找图形扩充路径
一个步骤是找到从起始节点到端节点的路径(也称为水槽)与所有边缘上的可用容量。
你能提出一个简单易懂的方法来找到扩充路径?
更新#1:
我的BFS功能:
template <class T>
vector<Vertex<T> *> Graph<T>::bfs(T source) const {
vector<Vertex<T> *> path;
queue<Vertex<T> *> q;
Vertex<T> * v = getVertex(source);
q.push(v);
v->visited = true;
while (!q.empty()) {
Vertex<T> *v1 = q.front();
q.pop();
path.push_back(v1);
typename vector<Edge<T> >::iterator it = v1->adj.begin();
typename vector<Edge<T> >::iterator ite = v1->adj.end();
for (; it!=ite; it++) {
Vertex<T> *d = it->dest;
if (d->visited == false) {
d->visited = true;
q.push(d);
}
}
}
return path;
}
它,因为它的返回错误结果的错误/不完整。我想我正在伪造一些东西。
我已经尝试使用BFS算法。请看我最新的问题。 – 2011-04-21 19:23:11
@Renato - 见我的编辑:) – 2011-04-21 19:48:00