Changeset 986:e997802b855c in lemon-0.x for src/work/marci
- Timestamp:
- 11/13/04 13:53:28 (20 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@1376
- Location:
- src/work/marci
- Files:
-
- 31 edited
Legend:
- Unmodified
- Added
- Removed
-
src/work/marci/augmenting_flow.h
r970 r986 211 211 OutEdgeIt e; 212 212 for(g->first(e,w) ; e!=INVALID; ++e) { 213 Node v=g-> head(e);213 Node v=g->target(e); 214 214 if (!M[v] && (*flow)[e] < (*capacity)[e] ) { 215 215 queue.push(v); … … 220 220 InEdgeIt f; 221 221 for(g->first(f,w) ; f!=INVALID; ++f) { 222 Node v=g-> tail(f);222 Node v=g->source(f); 223 223 if (!M[v] && (*flow)[f] > 0 ) { 224 224 queue.push(v); … … 271 271 ResGWEdge e=bfs; 272 272 if (e!=INVALID && bfs.isBNodeNewlyReached()) { 273 Node v=res_graph. tail(e);274 Node w=res_graph. head(e);273 Node v=res_graph.source(e); 274 Node w=res_graph.target(e); 275 275 pred.set(w, e); 276 276 if (pred[v]!=INVALID) { … … 279 279 free.set(w, res_cap[e]); 280 280 } 281 if (res_graph. head(e)==t) { _augment=true; break; }281 if (res_graph.target(e)==t) { _augment=true; break; } 282 282 } 283 283 … … 291 291 ResGWEdge e=pred[n]; 292 292 res_graph.augment(e, augment_value); 293 n=res_graph. tail(e);293 n=res_graph.source(e); 294 294 } 295 295 } … … 330 330 ResGWEdge e=bfs; 331 331 if (e!=INVALID && bfs.isBNodeNewlyReached()) { 332 Node v=res_graph. tail(e);333 Node w=res_graph. head(e);332 Node v=res_graph.source(e); 333 Node w=res_graph.target(e); 334 334 pred.set(w, e); 335 335 if (pred[v]!=INVALID) { … … 338 338 free.set(w, res_cap[e]); 339 339 } 340 if (res_graph. head(e)==t) { _augment=true; break; }340 if (res_graph.target(e)==t) { _augment=true; break; } 341 341 } 342 342 … … 350 350 ResGWEdge e=pred[n]; 351 351 res_graph.augment(e, augment_value); 352 n=res_graph. tail(e);352 n=res_graph.source(e); 353 353 } 354 354 } … … 396 396 if (e!=INVALID) { 397 397 if (bfs.isBNodeNewlyReached()) { 398 dist.set(res_graph. head(e), dist[res_graph.tail(e)]+1);399 typename MG::Edge f=F.addEdge(res_graph_to_F[res_graph. tail(e)],400 res_graph_to_F[res_graph. head(e)]);398 dist.set(res_graph.target(e), dist[res_graph.source(e)]+1); 399 typename MG::Edge f=F.addEdge(res_graph_to_F[res_graph.source(e)], 400 res_graph_to_F[res_graph.target(e)]); 401 401 //original_edge.update(); 402 402 original_edge.set(f, e); … … 404 404 residual_capacity.set(f, res_cap[e]); 405 405 } else { 406 if (dist[res_graph. head(e)]==(dist[res_graph.tail(e)]+1)) {407 typename MG::Edge f=F.addEdge(res_graph_to_F[res_graph. tail(e)],408 res_graph_to_F[res_graph. head(e)]);406 if (dist[res_graph.target(e)]==(dist[res_graph.source(e)]+1)) { 407 typename MG::Edge f=F.addEdge(res_graph_to_F[res_graph.source(e)], 408 res_graph_to_F[res_graph.target(e)]); 409 409 //original_edge.update(); 410 410 original_edge.set(f, e); … … 434 434 if (typename MG::Edge(dfs)!=INVALID) { 435 435 if (dfs.isBNodeNewlyReached()) { 436 typename MG::Node v=F. tail(dfs);437 typename MG::Node w=F. head(dfs);436 typename MG::Node v=F.source(dfs); 437 typename MG::Node w=F.target(dfs); 438 438 pred.set(w, dfs); 439 439 if (pred[v]!=INVALID) { … … 460 460 typename MG::Edge e=pred[n]; 461 461 res_graph.augment(original_edge[e], augment_value); 462 n=F. tail(e);462 n=F.source(e); 463 463 if (residual_capacity[e]==augment_value) 464 464 F.erase(e); … … 499 499 ResGWEdge e=bfs; 500 500 if (e!=INVALID && bfs.isBNodeNewlyReached()) 501 potential.set(res_graph. head(e), potential[res_graph.tail(e)]+1);501 potential.set(res_graph.target(e), potential[res_graph.source(e)]+1); 502 502 ++bfs; 503 503 } … … 554 554 if (dfs.isBNodeNewlyReached()) { 555 555 556 typename ErasingResGW::Node v=erasing_res_graph. tail(dfs);557 typename ErasingResGW::Node w=erasing_res_graph. head(dfs);556 typename ErasingResGW::Node v=erasing_res_graph.source(dfs); 557 typename ErasingResGW::Node w=erasing_res_graph.target(dfs); 558 558 559 559 pred.set(w, typename ErasingResGW::Edge(dfs)); … … 586 586 typename ErasingResGW::Edge e=pred[n]; 587 587 res_graph.augment(e, augment_value); 588 n=erasing_res_graph. tail(e);588 n=erasing_res_graph.source(e); 589 589 if (res_cap[e]==0) 590 590 erasing_res_graph.erase(e); -
src/work/marci/bfs_dfs.h
r921 r986 64 64 //graph->first(actual_edge, s); 65 65 if (actual_edge!=INVALID) { 66 Node w=graph-> head(actual_edge);66 Node w=graph->target(actual_edge); 67 67 if (!reached[w]) { 68 68 bfs_queue.push(w); … … 86 86 //++actual_edge; 87 87 if (actual_edge!=INVALID) { 88 Node w=graph-> head(actual_edge);88 Node w=graph->target(actual_edge); 89 89 if (!reached[w]) { 90 90 bfs_queue.push(w); … … 101 101 //graph->first(actual_edge, bfs_queue.front()); 102 102 if (actual_edge!=INVALID) { 103 Node w=graph-> head(actual_edge);103 Node w=graph->target(actual_edge); 104 104 if (!reached[w]) { 105 105 bfs_queue.push(w); … … 125 125 bool isANodeExamined() const { return actual_edge==INVALID; } 126 126 /// Returns a-node of the actual edge, so does if the edge is invalid. 127 Node tail() const { return bfs_queue.front(); }127 Node source() const { return bfs_queue.front(); } 128 128 /// \pre The actual edge have to be valid. 129 Node head() const { return graph->head(actual_edge); }129 Node target() const { return graph->target(actual_edge); } 130 130 /// Guess what? 131 131 /// \deprecated … … 187 187 if (this->graph->valid(this->actual_edge) && this->b_node_newly_reached) 188 188 { 189 pred.set(this-> head(), this->actual_edge);190 dist.set(this-> head(), dist[this->tail()]);189 pred.set(this->target(), this->actual_edge); 190 dist.set(this->target(), dist[this->source()]); 191 191 } 192 192 return *this; … … 247 247 actual_edge=dfs_stack.top(); 248 248 if (actual_edge!=INVALID/*.valid()*/) { 249 Node w=graph-> head(actual_edge);249 Node w=graph->target(actual_edge); 250 250 actual_node=w; 251 251 if (!reached[w]) { … … 256 256 b_node_newly_reached=true; 257 257 } else { 258 actual_node=graph-> tail(actual_edge);258 actual_node=graph->source(actual_edge); 259 259 ++dfs_stack.top(); 260 260 b_node_newly_reached=false; … … 277 277 bool isANodeExamined() const { return actual_edge==INVALID; } 278 278 /// Returns a-node of the actual edge, so does if the edge is invalid. 279 Node tail() const { return actual_node; /*FIXME*/}279 Node source() const { return actual_node; /*FIXME*/} 280 280 /// Returns b-node of the actual edge. 281 281 /// \pre The actual edge have to be valid. 282 Node head() const { return graph->head(actual_edge); }282 Node target() const { return graph->target(actual_edge); } 283 283 /// Guess what? 284 284 /// \deprecated … … 334 334 if (this->graph->valid(this->actual_edge) && this->b_node_newly_reached) 335 335 { 336 pred.set(this-> head(), this->actual_edge);336 pred.set(this->target(), this->actual_edge); 337 337 } 338 338 return *this; -
src/work/marci/bfs_mm.h
r944 r986 72 72 //graph->first(actual_edge, s); 73 73 if (actual_edge!=INVALID) { 74 Node w=graph-> head(actual_edge);74 Node w=graph->target(actual_edge); 75 75 if (!(*reached_map)[w]) { 76 76 bfs_queue.push(w); … … 94 94 //++actual_edge; 95 95 if (actual_edge!=INVALID) { 96 Node w=graph-> head(actual_edge);96 Node w=graph->target(actual_edge); 97 97 if (!(*reached_map)[w]) { 98 98 bfs_queue.push(w); … … 109 109 //graph->first(actual_edge, bfs_queue.front()); 110 110 if (actual_edge!=INVALID) { 111 Node w=graph-> head(actual_edge);111 Node w=graph->target(actual_edge); 112 112 if (!(*reached_map)[w]) { 113 113 bfs_queue.push(w); … … 133 133 bool isANodeExamined() const { return actual_edge==INVALID; } 134 134 /// Returns a-node of the actual edge, so does if the edge is invalid. 135 Node tail() const { return bfs_queue.front(); }135 Node source() const { return bfs_queue.front(); } 136 136 /// \pre The actual edge have to be valid. 137 Node head() const { return graph->head(actual_edge); }137 Node target() const { return graph->target(actual_edge); } 138 138 /// Guess what? 139 139 /// \deprecated … … 232 232 if ((this->actual_edge)!=INVALID && this->b_node_newly_reached) 233 233 { 234 pred_map->set(this-> head(), this->actual_edge);235 pred_node_map->set(this-> head(), this->tail());236 dist_map->set(this-> head(), (*dist_map)[this->tail()]);234 pred_map->set(this->target(), this->actual_edge); 235 pred_node_map->set(this->target(), this->source()); 236 dist_map->set(this->target(), (*dist_map)[this->source()]); 237 237 } 238 238 return *this; … … 458 458 actual_edge=dfs_stack.top(); 459 459 if (actual_edge!=INVALID/*.valid()*/) { 460 Node w=graph-> head(actual_edge);460 Node w=graph->target(actual_edge); 461 461 actual_node=w; 462 462 if (!reached[w]) { … … 467 467 b_node_newly_reached=true; 468 468 } else { 469 actual_node=graph-> tail(actual_edge);469 actual_node=graph->source(actual_edge); 470 470 ++dfs_stack.top(); 471 471 b_node_newly_reached=false; … … 488 488 bool isANodeExamined() const { return actual_edge==INVALID; } 489 489 /// Returns a-node of the actual edge, so does if the edge is invalid. 490 Node tail() const { return actual_node; /*FIXME*/}490 Node source() const { return actual_node; /*FIXME*/} 491 491 /// Returns b-node of the actual edge. 492 492 /// \pre The actual edge have to be valid. 493 Node head() const { return graph->head(actual_edge); }493 Node target() const { return graph->target(actual_edge); } 494 494 /// Guess what? 495 495 /// \deprecated … … 545 545 if (this->graph->valid(this->actual_edge) && this->b_node_newly_reached) 546 546 { 547 pred.set(this-> head(), this->actual_edge);547 pred.set(this->target(), this->actual_edge); 548 548 } 549 549 return *this; -
src/work/marci/bfs_mm_test.cc
r959 r986 92 92 93 93 // for(EdgeIt e(G); e==INVALID; ++e) { 94 // Node u=G. tail(e);95 // Node v=G. head(e);94 // Node u=G.source(e); 95 // Node v=G.target(e); 96 96 // check( !bfs_test.reached(u) || 97 97 // (bfs_test.dist(v) > bfs_test.dist(u)+1), … … 103 103 // if ( bfs_test.pred(v)!=INVALID ) { 104 104 // Edge e=bfs_test.pred(v); 105 // Node u=G. tail(e);105 // Node u=G.source(e); 106 106 // check(u==bfs_test.predNode(v),"Wrong tree."); 107 107 // check(bfs_test.dist(v) - bfs_test.dist(u) == 1, -
src/work/marci/bfsit_vs_byhand.cc
r944 r986 49 49 bfs_queue.pop(); 50 50 for(OutEdgeIt e(g,v); e!=INVALID; ++e) { 51 Node w=g. head(e);51 Node w=g.target(e); 52 52 if (!reached[w]) { 53 53 bfs_queue.push(w); … … 71 71 ++bfs; 72 72 if (Graph::Edge(bfs)!=INVALID && bfs.isBNodeNewlyReached()) 73 pred.set(bfs. head(), Graph::Edge(bfs));73 pred.set(bfs.target(), Graph::Edge(bfs)); 74 74 } 75 75 } -
src/work/marci/bipartite_graph_wrapper.h
r921 r986 168 168 // InEdgeIt& next(InEdgeIt& i) const { this->graph->next(i.e); return i; } 169 169 170 // Node tail(const Edge& e) {171 // if (!(*(this->s_false_t_true_map))[this->graph-> tail(e)])172 // return Node(this->graph-> tail(e));170 // Node source(const Edge& e) { 171 // if (!(*(this->s_false_t_true_map))[this->graph->source(e)]) 172 // return Node(this->graph->source(e)); 173 173 // else 174 // return Node(this->graph-> head(e));175 // } 176 // Node head(const Edge& e) {177 // if (!(*(this->s_false_t_true_map))[this->graph-> tail(e)])178 // return Node(this->graph-> head(e));174 // return Node(this->graph->target(e)); 175 // } 176 // Node target(const Edge& e) { 177 // if (!(*(this->s_false_t_true_map))[this->graph->source(e)]) 178 // return Node(this->graph->target(e)); 179 179 // else 180 // return Node(this->graph-> tail(e));180 // return Node(this->graph->source(e)); 181 181 // } 182 182 … … 253 253 254 254 /// A new edge is inserted. 255 ///\pre \c tail have to be in \c S_Class and \c headin \c T_Class.256 Edge addEdge(const Node& tail, const Node& head) {257 return Parent::graph->addEdge( tail, head);255 ///\pre \c source have to be in \c S_Class and \c target in \c T_Class. 256 Edge addEdge(const Node& source, const Node& target) { 257 return Parent::graph->addEdge(source, target); 258 258 } 259 259 … … 696 696 } 697 697 698 Node tail(const Edge& e) const {698 Node source(const Edge& e) const { 699 699 switch (e.spec) { 700 700 case 0: 701 return Node(this->graph-> tail(e));701 return Node(this->graph->source(e)); 702 702 break; 703 703 case 1: … … 710 710 } 711 711 } 712 Node head(const Edge& e) const {712 Node target(const Edge& e) const { 713 713 switch (e.spec) { 714 714 case 0: 715 return Node(this->graph-> head(e));715 return Node(this->graph->target(e)); 716 716 break; 717 717 case 1: … … 733 733 } 734 734 735 Node aNode(const OutEdgeIt& e) const { return tail(e); }736 Node aNode(const InEdgeIt& e) const { return head(e); }737 Node bNode(const OutEdgeIt& e) const { return head(e); }738 Node bNode(const InEdgeIt& e) const { return tail(e); }735 Node aNode(const OutEdgeIt& e) const { return source(e); } 736 Node aNode(const InEdgeIt& e) const { return target(e); } 737 Node bNode(const OutEdgeIt& e) const { return target(e); } 738 Node bNode(const InEdgeIt& e) const { return source(e); } 739 739 740 740 void addNode() const { } … … 742 742 743 743 // Node addNode() const { return Node(this->graph->addNode()); } 744 // Edge addEdge(const Node& tail, const Node& head) const {745 // return Edge(this->graph->addEdge( tail, head)); }744 // Edge addEdge(const Node& source, const Node& target) const { 745 // return Edge(this->graph->addEdge(source, target)); } 746 746 747 747 // void erase(const Node& i) const { this->graph->erase(i); } -
src/work/marci/bipartite_graph_wrapper_test.cc
r921 r986 88 88 cout << "Edges of the bipartite graph:" << endl; 89 89 for (BGW::EdgeIt e(bgw); e!=INVALID; ++e) 90 cout << g.id(bgw. tail(e)) << "->" << g.id(bgw.head(e)) << endl;90 cout << g.id(bgw.source(e)) << "->" << g.id(bgw.target(e)) << endl; 91 91 92 92 BGW::NodeMap<int> dbyj(bgw); -
src/work/marci/experiment/edmonds_karp.h
r921 r986 41 41 //Edge(const Edge& e) : resG(e.resG), sym(e.sym) { } 42 42 Number free() const { 43 if (resG->G.aNode(sym)==resG->G. tail(sym)) {43 if (resG->G.aNode(sym)==resG->G.source(sym)) { 44 44 return (resG->capacity.get(sym)-resG->flow.get(sym)); 45 45 } else { … … 49 49 bool valid() const { return sym.valid(); } 50 50 void augment(Number a) const { 51 if (resG->G.aNode(sym)==resG->G. tail(sym)) {51 if (resG->G.aNode(sym)==resG->G.source(sym)) { 52 52 resG->flow.set(sym, resG->flow.get(sym)+a); 53 53 //resG->flow[sym]+=a; … … 97 97 } 98 98 99 Node tail(Edge e) const { return G.aNode(e.sym); }100 Node head(Edge e) const { return G.bNode(e.sym); }99 Node source(Edge e) const { return G.aNode(e.sym); } 100 Node target(Edge e) const { return G.bNode(e.sym); } 101 101 102 102 Node aNode(OutEdgeIt e) const { return G.aNode(e.sym); } … … 224 224 } 225 225 226 Node tail(Edge e) const {226 Node source(Edge e) const { 227 227 return ((e.out_or_in) ? G.aNode(e.out) : G.aNode(e.in)); } 228 Node head(Edge e) const {228 Node target(Edge e) const { 229 229 return ((e.out_or_in) ? G.bNode(e.out) : G.bNode(e.in)); } 230 230 … … 288 288 ResGWOutEdgeIt e=bfs; 289 289 if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 290 Node v=res_graph. tail(e);291 Node w=res_graph. head(e);290 Node v=res_graph.source(e); 291 Node w=res_graph.target(e); 292 292 pred.set(w, e); 293 293 if (res_graph.valid(pred.get(v))) { … … 296 296 free.set(w, res_graph.resCap(e)); 297 297 } 298 if (res_graph. head(e)==t) { _augment=true; break; }298 if (res_graph.target(e)==t) { _augment=true; break; } 299 299 } 300 300 … … 308 308 ResGWEdge e=pred.get(n); 309 309 res_graph.augment(e, augment_value); 310 n=res_graph. tail(e);310 n=res_graph.source(e); 311 311 } 312 312 } … … 325 325 int get(const typename MapGraphWrapper::Node& n) const { return dist[n]; } 326 326 bool get(const typename MapGraphWrapper::Edge& e) const { 327 return (dist.get(gw. tail(e))<dist.get(gw.head(e)));327 return (dist.get(gw.source(e))<dist.get(gw.target(e))); 328 328 } 329 329 }; … … 344 344 ResGWOutEdgeIt e=bfs; 345 345 if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 346 dist.set(res_graph. head(e), dist.get(res_graph.tail(e))+1);346 dist.set(res_graph.target(e), dist.get(res_graph.source(e))+1); 347 347 } 348 348 ++bfs; … … 370 370 typename FilterResGW::EdgeIt e; 371 371 for(filter_res_graph.first(e); filter_res_graph.valid(e); filter_res_graph.next(e)) { 372 //if (dist.get(res_graph. head(e))==dist.get(res_graph.tail(e))+1) {373 typename MG::Edge f=F.addEdge(res_graph_to_F.get(res_graph. tail(e)), res_graph_to_F.get(res_graph.head(e)));372 //if (dist.get(res_graph.target(e))==dist.get(res_graph.source(e))+1) { 373 typename MG::Edge f=F.addEdge(res_graph_to_F.get(res_graph.source(e)), res_graph_to_F.get(res_graph.target(e))); 374 374 original_edge.update(); 375 375 original_edge.set(f, e); … … 424 424 typename MG::Edge e=pred.get(n); 425 425 res_graph.augment(original_edge.get(e), augment_value); 426 n=F. tail(e);426 n=F.source(e); 427 427 if (residual_capacity.get(e)==augment_value) 428 428 F.erase(e); … … 469 469 if (res_graph.valid(e)) { 470 470 if (bfs.isBNodeNewlyReached()) { 471 dist.set(res_graph. head(e), dist.get(res_graph.tail(e))+1);472 typename MG::Edge f=F.addEdge(res_graph_to_F.get(res_graph. tail(e)), res_graph_to_F.get(res_graph.head(e)));471 dist.set(res_graph.target(e), dist.get(res_graph.source(e))+1); 472 typename MG::Edge f=F.addEdge(res_graph_to_F.get(res_graph.source(e)), res_graph_to_F.get(res_graph.target(e))); 473 473 original_edge.update(); 474 474 original_edge.set(f, e); … … 476 476 residual_capacity.set(f, res_graph.resCap(e)); 477 477 } else { 478 if (dist.get(res_graph. head(e))==(dist.get(res_graph.tail(e))+1)) {479 typename MG::Edge f=F.addEdge(res_graph_to_F.get(res_graph. tail(e)), res_graph_to_F.get(res_graph.head(e)));478 if (dist.get(res_graph.target(e))==(dist.get(res_graph.source(e))+1)) { 479 typename MG::Edge f=F.addEdge(res_graph_to_F.get(res_graph.source(e)), res_graph_to_F.get(res_graph.target(e))); 480 480 original_edge.update(); 481 481 original_edge.set(f, e); … … 532 532 typename MG::Edge e=pred.get(n); 533 533 res_graph.augment(original_edge.get(e), augment_value); 534 n=F. tail(e);534 n=F.source(e); 535 535 if (residual_capacity.get(e)==augment_value) 536 536 F.erase(e); … … 558 558 ResGWOutEdgeIt e=bfs; 559 559 if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 560 dist.set(res_graph. head(e), dist.get(res_graph.tail(e))+1);560 dist.set(res_graph.target(e), dist.get(res_graph.source(e))+1); 561 561 } 562 562 ++bfs; … … 634 634 typename ErasingResGW::OutEdgeIt e=pred.get(n); 635 635 res_graph.augment(e, augment_value); 636 n=erasing_res_graph. tail(e);636 n=erasing_res_graph.source(e); 637 637 if (res_graph.resCap(e)==0) 638 638 erasing_res_graph.erase(e); … … 669 669 // typename ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::OutEdgeIt e=bfs; 670 670 // if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 671 // dist.set(res_graph. head(e), dist.get(res_graph.tail(e))+1);671 // dist.set(res_graph.target(e), dist.get(res_graph.source(e))+1); 672 672 // } 673 673 // ++bfs; … … 723 723 // EAugEdge e=pred.get(n); 724 724 // res_graph.augment(e, augment_value); 725 // n=res_graph. tail(e);725 // n=res_graph.source(e); 726 726 // if (res_graph.free(e)==0) 727 727 // res_graph.erase(e); … … 818 818 // AugOutEdgeIt e=bfs; 819 819 // if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 820 // Node v=res_graph. tail(e);821 // Node w=res_graph. head(e);820 // Node v=res_graph.source(e); 821 // Node w=res_graph.target(e); 822 822 // pred.set(w, e); 823 823 // if (res_graph.valid(pred.get(v))) { … … 826 826 // free.set(w, res_graph.free(e)); 827 827 // } 828 // n=res_graph. head(e);828 // n=res_graph.target(e); 829 829 // if (T->get(n) && (used.get(n)<1) ) { 830 830 // //Number u=0; … … 848 848 // AugEdge e=pred.get(n); 849 849 // res_graph.augment(e, augment_value); 850 // n=res_graph. tail(e);850 // n=res_graph.source(e); 851 851 // } 852 852 // used.set(n, 1); //mind2 vegen jav … … 889 889 // // AugOutEdgeIt e=bfs; 890 890 // // if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 891 // // dist.set(res_graph. head(e), dist.get(res_graph.tail(e))+1);891 // // dist.set(res_graph.target(e), dist.get(res_graph.source(e))+1); 892 892 // // } 893 893 … … 911 911 // // //which are in some shortest paths 912 912 // // for(typename AugGraph::EdgeIt e=res_graph.template first<typename AugGraph::EdgeIt>(); res_graph.valid(e); res_graph.next(e)) { 913 // // if (dist.get(res_graph. head(e))==dist.get(res_graph.tail(e))+1) {914 // // typename MutableGraph::Edge f=F.addEdge(res_graph_to_F.get(res_graph. tail(e)), res_graph_to_F.get(res_graph.head(e)));913 // // if (dist.get(res_graph.target(e))==dist.get(res_graph.source(e))+1) { 914 // // typename MutableGraph::Edge f=F.addEdge(res_graph_to_F.get(res_graph.source(e)), res_graph_to_F.get(res_graph.target(e))); 915 915 // // original_edge.update(); 916 916 // // original_edge.set(f, e); … … 964 964 // // typename MutableGraph::Edge e=pred.get(n); 965 965 // // res_graph.augment(original_edge.get(e), augment_value); 966 // // n=F. tail(e);966 // // n=F.source(e); 967 967 // // if (residual_capacity.get(e)==augment_value) 968 968 // // F.erase(e); … … 1015 1015 // typename ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::OutEdgeIt e=bfs; 1016 1016 // if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 1017 // dist.set(res_graph. head(e), dist.get(res_graph.tail(e))+1);1017 // dist.set(res_graph.target(e), dist.get(res_graph.source(e))+1); 1018 1018 // } 1019 1019 // ++bfs; … … 1092 1092 // EAugEdge e=pred.get(n); 1093 1093 // res_graph.augment(e, augment_value); 1094 // n=res_graph. tail(e);1094 // n=res_graph.source(e); 1095 1095 // if (res_graph.free(e)==0) 1096 1096 // res_graph.erase(e); … … 1185 1185 // // AugOutEdgeIt e=/*AugOutEdgeIt*/(bfs); 1186 1186 // // if (e.valid() && bfs.isBNodeNewlyReached()) { 1187 // // Node v=res_graph. tail(e);1188 // // Node w=res_graph. head(e);1187 // // Node v=res_graph.source(e); 1188 // // Node w=res_graph.target(e); 1189 1189 // // pred.set(w, e); 1190 1190 // // if (pred.get(v).valid()) { … … 1193 1193 // // free.set(w, e.free()); 1194 1194 // // } 1195 // // if (TMap.get(res_graph. head(e))) {1195 // // if (TMap.get(res_graph.target(e))) { 1196 1196 // // _augment=true; 1197 // // reached_t_node=res_graph. head(e);1197 // // reached_t_node=res_graph.target(e); 1198 1198 // // break; 1199 1199 // // } … … 1209 1209 // // AugEdge e=pred.get(n); 1210 1210 // // e.augment(augment_value); 1211 // // n=res_graph. tail(e);1211 // // n=res_graph.source(e); 1212 1212 // // } 1213 1213 // // } -
src/work/marci/experiment/edmonds_karp_1.h
r921 r986 42 42 //Edge(const Edge& e) : resG(e.resG), sym(e.sym) { } 43 43 Number free() const { 44 if (resG->G.aNode(sym)==resG->G. tail(sym)) {44 if (resG->G.aNode(sym)==resG->G.source(sym)) { 45 45 return (resG->capacity.get(sym)-resG->flow.get(sym)); 46 46 } else { … … 50 50 bool valid() const { return sym.valid(); } 51 51 void augment(Number a) const { 52 if (resG->G.aNode(sym)==resG->G. tail(sym)) {52 if (resG->G.aNode(sym)==resG->G.source(sym)) { 53 53 resG->flow.set(sym, resG->flow.get(sym)+a); 54 54 //resG->flow[sym]+=a; … … 98 98 } 99 99 100 Node tail(Edge e) const { return G.aNode(e.sym); }101 Node head(Edge e) const { return G.bNode(e.sym); }100 Node source(Edge e) const { return G.aNode(e.sym); } 101 Node target(Edge e) const { return G.bNode(e.sym); } 102 102 103 103 Node aNode(OutEdgeIt e) const { return G.aNode(e.sym); } … … 225 225 } 226 226 227 Node tail(Edge e) const {227 Node source(Edge e) const { 228 228 return ((e.out_or_in) ? G.aNode(e.out) : G.aNode(e.in)); } 229 Node head(Edge e) const {229 Node target(Edge e) const { 230 230 return ((e.out_or_in) ? G.bNode(e.out) : G.bNode(e.in)); } 231 231 … … 287 287 ResGWOutEdgeIt e=bfs; 288 288 if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 289 Node v=res_graph. tail(e);290 Node w=res_graph. head(e);289 Node v=res_graph.source(e); 290 Node w=res_graph.target(e); 291 291 pred.set(w, e); 292 292 if (res_graph.valid(pred.get(v))) { … … 295 295 free.set(w, res_graph.resCap(e)); 296 296 } 297 if (res_graph. head(e)==t) { _augment=true; break; }297 if (res_graph.target(e)==t) { _augment=true; break; } 298 298 } 299 299 … … 307 307 ResGWEdge e=pred.get(n); 308 308 res_graph.augment(e, augment_value); 309 n=res_graph. tail(e);309 n=res_graph.source(e); 310 310 } 311 311 } … … 324 324 int get(const typename MapGraphWrapper::Node& n) const { return dist[n]; } 325 325 bool get(const typename MapGraphWrapper::Edge& e) const { 326 return (dist.get(g-> tail(e))<dist.get(g->head(e)));326 return (dist.get(g->source(e))<dist.get(g->target(e))); 327 327 } 328 328 }; … … 343 343 ResGWOutEdgeIt e=bfs; 344 344 if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 345 dist.set(res_graph. head(e), dist.get(res_graph.tail(e))+1);345 dist.set(res_graph.target(e), dist.get(res_graph.source(e))+1); 346 346 } 347 347 ++bfs; … … 369 369 typename FilterResGW::EdgeIt e; 370 370 for(filter_res_graph.first(e); filter_res_graph.valid(e); filter_res_graph.next(e)) { 371 //if (dist.get(res_graph. head(e))==dist.get(res_graph.tail(e))+1) {372 typename MG::Edge f=F.addEdge(res_graph_to_F.get(res_graph. tail(e)), res_graph_to_F.get(res_graph.head(e)));371 //if (dist.get(res_graph.target(e))==dist.get(res_graph.source(e))+1) { 372 typename MG::Edge f=F.addEdge(res_graph_to_F.get(res_graph.source(e)), res_graph_to_F.get(res_graph.target(e))); 373 373 original_edge.update(); 374 374 original_edge.set(f, e); … … 423 423 typename MG::Edge e=pred.get(n); 424 424 res_graph.augment(original_edge.get(e), augment_value); 425 n=F. tail(e);425 n=F.source(e); 426 426 if (residual_capacity.get(e)==augment_value) 427 427 F.erase(e); … … 468 468 if (res_graph.valid(e)) { 469 469 if (bfs.isBNodeNewlyReached()) { 470 dist.set(res_graph. head(e), dist.get(res_graph.tail(e))+1);471 typename MG::Edge f=F.addEdge(res_graph_to_F.get(res_graph. tail(e)), res_graph_to_F.get(res_graph.head(e)));470 dist.set(res_graph.target(e), dist.get(res_graph.source(e))+1); 471 typename MG::Edge f=F.addEdge(res_graph_to_F.get(res_graph.source(e)), res_graph_to_F.get(res_graph.target(e))); 472 472 original_edge.update(); 473 473 original_edge.set(f, e); … … 475 475 residual_capacity.set(f, res_graph.resCap(e)); 476 476 } else { 477 if (dist.get(res_graph. head(e))==(dist.get(res_graph.tail(e))+1)) {478 typename MG::Edge f=F.addEdge(res_graph_to_F.get(res_graph. tail(e)), res_graph_to_F.get(res_graph.head(e)));477 if (dist.get(res_graph.target(e))==(dist.get(res_graph.source(e))+1)) { 478 typename MG::Edge f=F.addEdge(res_graph_to_F.get(res_graph.source(e)), res_graph_to_F.get(res_graph.target(e))); 479 479 original_edge.update(); 480 480 original_edge.set(f, e); … … 531 531 typename MG::Edge e=pred.get(n); 532 532 res_graph.augment(original_edge.get(e), augment_value); 533 n=F. tail(e);533 n=F.source(e); 534 534 if (residual_capacity.get(e)==augment_value) 535 535 F.erase(e); … … 557 557 ResGWOutEdgeIt e=bfs; 558 558 if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 559 dist.set(res_graph. head(e), dist.get(res_graph.tail(e))+1);559 dist.set(res_graph.target(e), dist.get(res_graph.source(e))+1); 560 560 } 561 561 ++bfs; … … 633 633 typename ErasingResGW::OutEdgeIt e=pred.get(n); 634 634 res_graph.augment(e, augment_value); 635 n=erasing_res_graph. tail(e);635 n=erasing_res_graph.source(e); 636 636 if (res_graph.resCap(e)==0) 637 637 erasing_res_graph.erase(e); … … 728 728 // AugOutEdgeIt e=bfs; 729 729 // if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 730 // Node v=res_graph. tail(e);731 // Node w=res_graph. head(e);730 // Node v=res_graph.source(e); 731 // Node w=res_graph.target(e); 732 732 // pred.set(w, e); 733 733 // if (res_graph.valid(pred.get(v))) { … … 736 736 // free.set(w, res_graph.free(e)); 737 737 // } 738 // n=res_graph. head(e);738 // n=res_graph.target(e); 739 739 // if (T->get(n) && (used.get(n)<1) ) { 740 740 // //Number u=0; … … 758 758 // AugEdge e=pred.get(n); 759 759 // res_graph.augment(e, augment_value); 760 // n=res_graph. tail(e);760 // n=res_graph.source(e); 761 761 // } 762 762 // used.set(n, 1); //mind2 vegen jav … … 799 799 // // AugOutEdgeIt e=bfs; 800 800 // // if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 801 // // dist.set(res_graph. head(e), dist.get(res_graph.tail(e))+1);801 // // dist.set(res_graph.target(e), dist.get(res_graph.source(e))+1); 802 802 // // } 803 803 … … 821 821 // // //which are in some shortest paths 822 822 // // for(typename AugGraph::EdgeIt e=res_graph.template first<typename AugGraph::EdgeIt>(); res_graph.valid(e); res_graph.next(e)) { 823 // // if (dist.get(res_graph. head(e))==dist.get(res_graph.tail(e))+1) {824 // // typename MutableGraph::Edge f=F.addEdge(res_graph_to_F.get(res_graph. tail(e)), res_graph_to_F.get(res_graph.head(e)));823 // // if (dist.get(res_graph.target(e))==dist.get(res_graph.source(e))+1) { 824 // // typename MutableGraph::Edge f=F.addEdge(res_graph_to_F.get(res_graph.source(e)), res_graph_to_F.get(res_graph.target(e))); 825 825 // // original_edge.update(); 826 826 // // original_edge.set(f, e); … … 874 874 // // typename MutableGraph::Edge e=pred.get(n); 875 875 // // res_graph.augment(original_edge.get(e), augment_value); 876 // // n=F. tail(e);876 // // n=F.source(e); 877 877 // // if (residual_capacity.get(e)==augment_value) 878 878 // // F.erase(e); … … 925 925 // typename ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::OutEdgeIt e=bfs; 926 926 // if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 927 // dist.set(res_graph. head(e), dist.get(res_graph.tail(e))+1);927 // dist.set(res_graph.target(e), dist.get(res_graph.source(e))+1); 928 928 // } 929 929 // ++bfs; … … 1002 1002 // EAugEdge e=pred.get(n); 1003 1003 // res_graph.augment(e, augment_value); 1004 // n=res_graph. tail(e);1004 // n=res_graph.source(e); 1005 1005 // if (res_graph.free(e)==0) 1006 1006 // res_graph.erase(e); … … 1095 1095 // // AugOutEdgeIt e=/*AugOutEdgeIt*/(bfs); 1096 1096 // // if (e.valid() && bfs.isBNodeNewlyReached()) { 1097 // // Node v=res_graph. tail(e);1098 // // Node w=res_graph. head(e);1097 // // Node v=res_graph.source(e); 1098 // // Node w=res_graph.target(e); 1099 1099 // // pred.set(w, e); 1100 1100 // // if (pred.get(v).valid()) { … … 1103 1103 // // free.set(w, e.free()); 1104 1104 // // } 1105 // // if (TMap.get(res_graph. head(e))) {1105 // // if (TMap.get(res_graph.target(e))) { 1106 1106 // // _augment=true; 1107 // // reached_t_node=res_graph. head(e);1107 // // reached_t_node=res_graph.target(e); 1108 1108 // // break; 1109 1109 // // } … … 1119 1119 // // AugEdge e=pred.get(n); 1120 1120 // // e.augment(augment_value); 1121 // // n=res_graph. tail(e);1121 // // n=res_graph.source(e); 1122 1122 // // } 1123 1123 // // } -
src/work/marci/experiment/edmonds_karp_demo.cc
r921 r986 105 105 while (max_flow_test.augmentOnBlockingFlow<MutableGraph>()) { 106 106 // for(EdgeIt e=G.template first<EdgeIt>(); e.valid(); ++e) { 107 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";108 // } 109 // std::cout<<std::endl; 110 ++i; 111 } 112 113 // std::cout << "maximum flow: "<< std::endl; 114 // for(EdgeIt e=G.first<EdgeIt>(); e.valid(); ++e) { 115 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";107 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 108 // } 109 // std::cout<<std::endl; 110 ++i; 111 } 112 113 // std::cout << "maximum flow: "<< std::endl; 114 // for(EdgeIt e=G.first<EdgeIt>(); e.valid(); ++e) { 115 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 116 116 // } 117 117 // std::cout<<std::endl; … … 136 136 while (max_flow_test.augmentOnBlockingFlow1<MutableGraph>()) { 137 137 // for(EdgeIt e=G.template first<EdgeIt>(); e.valid(); ++e) { 138 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";139 // } 140 // std::cout<<std::endl; 141 ++i; 142 } 143 144 // std::cout << "maximum flow: "<< std::endl; 145 // for(EdgeIt e=G.first<EdgeIt>(); e.valid(); ++e) { 146 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";138 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 139 // } 140 // std::cout<<std::endl; 141 ++i; 142 } 143 144 // std::cout << "maximum flow: "<< std::endl; 145 // for(EdgeIt e=G.first<EdgeIt>(); e.valid(); ++e) { 146 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 147 147 // } 148 148 // std::cout<<std::endl; … … 167 167 while (max_flow_test.augmentOnBlockingFlow2()) { 168 168 // for(EdgeIt e=G.template first<EdgeIt>(); e.valid(); ++e) { 169 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";170 // } 171 // std::cout<<std::endl; 172 ++i; 173 } 174 175 // std::cout << "maximum flow: "<< std::endl; 176 // for(EdgeIt e=G.first<EdgeIt>(); e.valid(); ++e) { 177 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";169 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 170 // } 171 // std::cout<<std::endl; 172 ++i; 173 } 174 175 // std::cout << "maximum flow: "<< std::endl; 176 // for(EdgeIt e=G.first<EdgeIt>(); e.valid(); ++e) { 177 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 178 178 // } 179 179 // std::cout<<std::endl; … … 198 198 while (max_flow_test.augmentOnShortestPath()) { 199 199 // for(EdgeIt e=G.template first<EdgeIt>(); e.valid(); ++e) { 200 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";201 // } 202 // std::cout<<std::endl; 203 ++i; 204 } 205 206 // std::cout << "maximum flow: "<< std::endl; 207 // for(EdgeIt e=G.first<EdgeIt>(); e.valid(); ++e) { 208 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";200 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 201 // } 202 // std::cout<<std::endl; 203 ++i; 204 } 205 206 // std::cout << "maximum flow: "<< std::endl; 207 // for(EdgeIt e=G.first<EdgeIt>(); e.valid(); ++e) { 208 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 209 209 // } 210 210 // std::cout<<std::endl; -
src/work/marci/experiment/edmonds_karp_demo_1.cc
r921 r986 105 105 while (max_flow_test.augmentOnBlockingFlow<MutableGraph>()) { 106 106 // for(EdgeIt e=G.template first<EdgeIt>(); e.valid(); ++e) { 107 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";108 // } 109 // std::cout<<std::endl; 110 ++i; 111 } 112 113 // std::cout << "maximum flow: "<< std::endl; 114 // for(EdgeIt e=G.first<EdgeIt>(); e.valid(); ++e) { 115 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";107 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 108 // } 109 // std::cout<<std::endl; 110 ++i; 111 } 112 113 // std::cout << "maximum flow: "<< std::endl; 114 // for(EdgeIt e=G.first<EdgeIt>(); e.valid(); ++e) { 115 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 116 116 // } 117 117 // std::cout<<std::endl; … … 136 136 while (max_flow_test.augmentOnBlockingFlow1<MutableGraph>()) { 137 137 // for(EdgeIt e=G.template first<EdgeIt>(); e.valid(); ++e) { 138 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";139 // } 140 // std::cout<<std::endl; 141 ++i; 142 } 143 144 // std::cout << "maximum flow: "<< std::endl; 145 // for(EdgeIt e=G.first<EdgeIt>(); e.valid(); ++e) { 146 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";138 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 139 // } 140 // std::cout<<std::endl; 141 ++i; 142 } 143 144 // std::cout << "maximum flow: "<< std::endl; 145 // for(EdgeIt e=G.first<EdgeIt>(); e.valid(); ++e) { 146 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 147 147 // } 148 148 // std::cout<<std::endl; … … 167 167 while (max_flow_test.augmentOnBlockingFlow2()) { 168 168 // for(EdgeIt e=G.template first<EdgeIt>(); e.valid(); ++e) { 169 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";170 // } 171 // std::cout<<std::endl; 172 ++i; 173 } 174 175 // std::cout << "maximum flow: "<< std::endl; 176 // for(EdgeIt e=G.first<EdgeIt>(); e.valid(); ++e) { 177 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";169 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 170 // } 171 // std::cout<<std::endl; 172 ++i; 173 } 174 175 // std::cout << "maximum flow: "<< std::endl; 176 // for(EdgeIt e=G.first<EdgeIt>(); e.valid(); ++e) { 177 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 178 178 // } 179 179 // std::cout<<std::endl; … … 198 198 while (max_flow_test.augmentOnShortestPath()) { 199 199 // for(EdgeIt e=G.template first<EdgeIt>(); e.valid(); ++e) { 200 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";201 // } 202 // std::cout<<std::endl; 203 ++i; 204 } 205 206 // std::cout << "maximum flow: "<< std::endl; 207 // for(EdgeIt e=G.first<EdgeIt>(); e.valid(); ++e) { 208 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";200 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 201 // } 202 // std::cout<<std::endl; 203 ++i; 204 } 205 206 // std::cout << "maximum flow: "<< std::endl; 207 // for(EdgeIt e=G.first<EdgeIt>(); e.valid(); ++e) { 208 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 209 209 // } 210 210 // std::cout<<std::endl; -
src/work/marci/experiment/graph_wrapper.h
r921 r986 97 97 It e; first(e, v); return e; } 98 98 99 Node head(const Edge& e) const { return graph->head(e); }100 Node tail(const Edge& e) const { return graph->tail(e); }99 Node target(const Edge& e) const { return graph->target(e); } 100 Node source(const Edge& e) const { return graph->source(e); } 101 101 102 102 template<typename I> bool valid(const I& i) const … … 115 115 116 116 Node addNode() const { return graph->addNode(); } 117 Edge addEdge(const Node& tail, const Node& head) const {118 return graph->addEdge( tail, head); }117 Edge addEdge(const Node& source, const Node& target) const { 118 return graph->addEdge(source, target); } 119 119 120 120 template<typename I> void erase(const I& i) const { graph->erase(i); } … … 246 246 It e; this->first(e, v); return e; } 247 247 248 Node head(const Edge& e) const { return gw.head(e); }249 Node tail(const Edge& e) const { return gw.tail(e); }248 Node target(const Edge& e) const { return gw.target(e); } 249 Node source(const Edge& e) const { return gw.source(e); } 250 250 251 251 template<typename I> bool valid(const I& i) const { return gw.valid(i); } … … 261 261 262 262 Node addNode() const { return gw.addNode(); } 263 Edge addEdge(const Node& tail, const Node& head) const {264 return gw.addEdge( tail, head); }263 Edge addEdge(const Node& source, const Node& target) const { 264 return gw.addEdge(source, target); } 265 265 266 266 template<typename I> void erase(const I& i) const { gw.erase(i); } … … 323 323 // It e; first(e, v); return e; } 324 324 325 // Node head(const Edge& e) const { return graph->tail(e); }326 // Node tail(const Edge& e) const { return graph->head(e); }325 // Node target(const Edge& e) const { return graph->source(e); } 326 // Node source(const Edge& e) const { return graph->target(e); } 327 327 328 328 // template<typename I> bool valid(const I& i) const … … 338 338 339 339 // Node addNode() const { return graph->addNode(); } 340 // Edge addEdge(const Node& tail, const Node& head) const {341 // return graph->addEdge( tail, head); }340 // Edge addEdge(const Node& source, const Node& target) const { 341 // return graph->addEdge(source, target); } 342 342 343 343 // int nodeNum() const { return graph->nodeNum(); } … … 404 404 // // It e; first(e, v); return e; } 405 405 406 // //Node head(const Edge& e) const { return graph->tail(e); }407 // //Node tail(const Edge& e) const { return graph->head(e); }406 // //Node target(const Edge& e) const { return graph->source(e); } 407 // //Node source(const Edge& e) const { return graph->target(e); } 408 408 409 409 // //template<typename I> bool valid(const I& i) const … … 419 419 420 420 // //Node addNode() const { return graph->addNode(); } 421 // //Edge addEdge(const Node& tail, const Node& head) const {422 // // return graph->addEdge( tail, head); }421 // //Edge addEdge(const Node& source, const Node& target) const { 422 // // return graph->addEdge(source, target); } 423 423 424 424 // //int nodeNum() const { return graph->nodeNum(); } … … 468 468 GraphWrapper<GraphWrapper>(_gw) { } 469 469 470 Node head(const Edge& e) const471 { return GraphWrapper<GraphWrapper>:: tail(e); }472 Node tail(const Edge& e) const473 { return GraphWrapper<GraphWrapper>:: head(e); }470 Node target(const Edge& e) const 471 { return GraphWrapper<GraphWrapper>::source(e); } 472 Node source(const Edge& e) const 473 { return GraphWrapper<GraphWrapper>::target(e); } 474 474 }; 475 475 … … 600 600 // OutEdgeIt& next(OutEdgeIt& e) const { 601 601 // if (e.out_or_in) { 602 // Node n=gw. tail(e.out);602 // Node n=gw.source(e.out); 603 603 // gw.next(e.out); 604 604 // if (!gw.valid(e.out)) { … … 613 613 614 614 // Node aNode(const OutEdgeIt& e) const { 615 // if (e.out_or_in) return gw. tail(e); else return gw.head(e); }615 // if (e.out_or_in) return gw.source(e); else return gw.target(e); } 616 616 // Node bNode(const OutEdgeIt& e) const { 617 // if (e.out_or_in) return gw. head(e); else return gw.tail(e); }617 // if (e.out_or_in) return gw.target(e); else return gw.source(e); } 618 618 619 619 // typedef OutEdgeIt InEdgeIt; … … 633 633 // It e; first(e, v); return e; } 634 634 635 // Node head(const Edge& e) const { return gw.head(e); }636 // Node tail(const Edge& e) const { return gw.tail(e); }635 // Node target(const Edge& e) const { return gw.target(e); } 636 // Node source(const Edge& e) const { return gw.source(e); } 637 637 638 638 // template<typename I> bool valid(const I& i) const … … 652 652 // Node addNode() const { return gw.addNode(); } 653 653 // // FIXME: ez igy nem jo, mert nem 654 // // Edge addEdge(const Node& tail, const Node& head) const {655 // // return graph->addEdge( tail, head); }654 // // Edge addEdge(const Node& source, const Node& target) const { 655 // // return graph->addEdge(source, target); } 656 656 657 657 // template<typename I> void erase(const I& i) const { gw.erase(i); } … … 799 799 OutEdgeIt& next(OutEdgeIt& e) const { 800 800 if (e.out_or_in) { 801 Node n=gw. tail(e.out);801 Node n=gw.source(e.out); 802 802 gw.next(e.out); 803 803 if (!gw.valid(e.out)) { e.out_or_in=false; gw.first(e.in, n); } … … 809 809 810 810 EdgeIt& next(EdgeIt& e) const { 811 //NodeIt v= tail(e);811 //NodeIt v=source(e); 812 812 gw.next(e.out); 813 813 while (valid(e.v) && !gw.valid(e.out)) { … … 827 827 It e; first(e, v); return e; } 828 828 829 // Node head(const Edge& e) const { return gw.head(e); }830 // Node tail(const Edge& e) const { return gw.tail(e); }829 // Node target(const Edge& e) const { return gw.target(e); } 830 // Node source(const Edge& e) const { return gw.source(e); } 831 831 832 832 // template<typename I> bool valid(const I& i) const … … 842 842 843 843 Node aNode(const OutEdgeIt& e) const { 844 if (e.out_or_in) return gw. tail(e); else return gw.head(e); }844 if (e.out_or_in) return gw.source(e); else return gw.target(e); } 845 845 Node bNode(const OutEdgeIt& e) const { 846 if (e.out_or_in) return gw. head(e); else return gw.tail(e); }846 if (e.out_or_in) return gw.target(e); else return gw.source(e); } 847 847 848 848 // Node addNode() const { return gw.addNode(); } 849 849 850 850 // FIXME: ez igy nem jo, mert nem 851 // Edge addEdge(const Node& tail, const Node& head) const {852 // return graph->addEdge( tail, head); }851 // Edge addEdge(const Node& source, const Node& target) const { 852 // return graph->addEdge(source, target); } 853 853 854 854 // template<typename I> void erase(const I& i) const { gw.erase(i); } … … 914 914 // It e; first(e, v); return e; } 915 915 916 // Node head(const Edge& e) const { return graph->head(e); }917 // Node tail(const Edge& e) const { return graph->tail(e); }916 // Node target(const Edge& e) const { return graph->target(e); } 917 // Node source(const Edge& e) const { return graph->source(e); } 918 918 919 919 // template<typename I> Node aNode(const I& e) const { … … 929 929 930 930 // Node addNode() { return graph->addNode(); } 931 // Edge addEdge(const Node& tail, const Node& head) {932 // return graph->addEdge( tail, head); }931 // Edge addEdge(const Node& source, const Node& target) { 932 // return graph->addEdge(source, target); } 933 933 934 934 // template<typename I> void erase(const I& i) { graph->erase(i); } … … 1181 1181 } 1182 1182 1183 Node tail(Edge e) const {1183 Node source(Edge e) const { 1184 1184 return ((e.out_or_in) ? gw.aNode(e.out) : gw.aNode(e.in)); } 1185 Node head(Edge e) const {1185 Node target(Edge e) const { 1186 1186 return ((e.out_or_in) ? gw.bNode(e.out) : gw.bNode(e.in)); } 1187 1187 … … 1312 1312 OutEdgeIt f=e; 1313 1313 this->next(f); 1314 first_out_edges->set(this-> tail(e), f);1314 first_out_edges->set(this->source(e), f); 1315 1315 } 1316 1316 }; … … 1382 1382 // It e; first(e, v); return e; } 1383 1383 1384 // //Node head(const Edge& e) const { return gw.head(e); }1385 // //Node tail(const Edge& e) const { return gw.tail(e); }1384 // //Node target(const Edge& e) const { return gw.target(e); } 1385 // //Node source(const Edge& e) const { return gw.source(e); } 1386 1386 1387 1387 // //template<typename I> bool valid(const I& i) const … … 1397 1397 1398 1398 // //Node addNode() const { return gw.addNode(); } 1399 // //Edge addEdge(const Node& tail, const Node& head) const {1400 // // return gw.addEdge( tail, head); }1399 // //Edge addEdge(const Node& source, const Node& target) const { 1400 // // return gw.addEdge(source, target); } 1401 1401 1402 1402 // //void erase(const OutEdgeIt& e) { 1403 // // first_out_edge(this-> tail(e))=e;1403 // // first_out_edge(this->source(e))=e; 1404 1404 // //} 1405 1405 // void erase(const Edge& e) { 1406 1406 // OutEdgeIt f(e); 1407 1407 // next(f); 1408 // first_out_edges.set(this-> tail(e), f);1408 // first_out_edges.set(this->source(e), f); 1409 1409 // } 1410 1410 // //template<typename I> void erase(const I& i) const { gw.erase(i); } … … 1460 1460 // OutEdgeIt& first(OutEdgeIt& e, const Node& n) const { 1461 1461 // ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::first(e, n); 1462 // while (valid(e) && (dist.get( tail(e))/*+1!=*/>=dist.get(head(e))))1462 // while (valid(e) && (dist.get(source(e))/*+1!=*/>=dist.get(target(e)))) 1463 1463 // ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::next(e); 1464 1464 // return e; … … 1471 1471 // OutEdgeIt& next(OutEdgeIt& e) const { 1472 1472 // ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::next(e); 1473 // while (valid(e) && (dist.get( tail(e))/*+1!*/>=dist.get(head(e))))1473 // while (valid(e) && (dist.get(source(e))/*+1!*/>=dist.get(target(e)))) 1474 1474 // ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::next(e); 1475 1475 // return e; … … 1483 1483 // OutEdgeIt f(e); 1484 1484 // ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::next(f); 1485 // while (valid(f) && (dist.get( tail(f))/*+1!=*/>=dist.get(head(f))))1485 // while (valid(f) && (dist.get(source(f))/*+1!=*/>=dist.get(target(f)))) 1486 1486 // ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::next(f); 1487 // first_out_edges.set(this-> tail(e), f);1487 // first_out_edges.set(this->source(e), f); 1488 1488 // } 1489 1489 … … 1508 1508 // It e; first(e, v); return e; } 1509 1509 1510 // //Node head(const Edge& e) const { return gw.head(e); }1511 // //Node tail(const Edge& e) const { return gw.tail(e); }1510 // //Node target(const Edge& e) const { return gw.target(e); } 1511 // //Node source(const Edge& e) const { return gw.source(e); } 1512 1512 1513 1513 // //template<typename I> bool valid(const I& i) const … … 1526 1526 1527 1527 // //Node addNode() const { return gw.addNode(); } 1528 // //Edge addEdge(const Node& tail, const Node& head) const {1529 // // return gw.addEdge( tail, head); }1528 // //Edge addEdge(const Node& source, const Node& target) const { 1529 // // return gw.addEdge(source, target); } 1530 1530 1531 1531 // //template<typename I> void erase(const I& i) const { gw.erase(i); } … … 1670 1670 // It e; first(e, v); return e; } 1671 1671 1672 // Node head(const Edge& e) const { return gw.head(e); }1673 // Node tail(const Edge& e) const { return gw.tail(e); }1672 // Node target(const Edge& e) const { return gw.target(e); } 1673 // Node source(const Edge& e) const { return gw.source(e); } 1674 1674 1675 1675 // template<typename I> Node aNode(const I& e) const { … … 1685 1685 1686 1686 // Node addNode() { return gw.addNode(); } 1687 // Edge addEdge(const Node& tail, const Node& head) {1688 // return gw.addEdge( tail, head); }1687 // Edge addEdge(const Node& source, const Node& target) { 1688 // return gw.addEdge(source, target); } 1689 1689 1690 1690 // template<typename I> void erase(const I& i) { gw.erase(i); } -
src/work/marci/experiment/graph_wrapper_1.h
r921 r986 91 91 It e; this->first(e, v); return e; } 92 92 93 Node head(const Edge& e) const { return graph->head(e); }94 Node tail(const Edge& e) const { return graph->tail(e); }93 Node target(const Edge& e) const { return graph->target(e); } 94 Node source(const Edge& e) const { return graph->source(e); } 95 95 96 96 template<typename I> bool valid(const I& i) const { … … 109 109 110 110 Node addNode() const { return graph->addNode(); } 111 Edge addEdge(const Node& tail, const Node& head) const {112 return graph->addEdge( tail, head); }111 Edge addEdge(const Node& source, const Node& target) const { 112 return graph->addEdge(source, target); } 113 113 114 114 template<typename I> void erase(const I& i) const { graph->erase(i); } … … 236 236 It e; this->first(e, v); return e; } 237 237 238 Node head(const Edge& e) const { return graph->head(e); }239 Node tail(const Edge& e) const { return graph->tail(e); }238 Node target(const Edge& e) const { return graph->target(e); } 239 Node source(const Edge& e) const { return graph->source(e); } 240 240 241 241 template<typename I> bool valid(const I& i) const { … … 254 254 255 255 Node addNode() const { return graph->addNode(); } 256 Edge addEdge(const Node& tail, const Node& head) const {257 return graph->addEdge( tail, head); }256 Edge addEdge(const Node& source, const Node& target) const { 257 return graph->addEdge(source, target); } 258 258 259 259 template<typename I> void erase(const I& i) const { graph->erase(i); } … … 317 317 // It e; first(e, v); return e; } 318 318 319 // Node head(const Edge& e) const { return graph->tail(e); }320 // Node tail(const Edge& e) const { return graph->head(e); }319 // Node target(const Edge& e) const { return graph->source(e); } 320 // Node source(const Edge& e) const { return graph->target(e); } 321 321 322 322 // template<typename I> bool valid(const I& i) const … … 332 332 333 333 // Node addNode() const { return graph->addNode(); } 334 // Edge addEdge(const Node& tail, const Node& head) const {335 // return graph->addEdge( tail, head); }334 // Edge addEdge(const Node& source, const Node& target) const { 335 // return graph->addEdge(source, target); } 336 336 337 337 // int nodeNum() const { return graph->nodeNum(); } … … 379 379 RevGraphWrapper(Graph& _graph) : GraphWrapper<Graph>(_graph) { } 380 380 381 Node head(const Edge& e) const382 { return GraphWrapper<Graph>:: tail(e); }383 Node tail(const Edge& e) const384 { return GraphWrapper<Graph>:: head(e); }381 Node target(const Edge& e) const 382 { return GraphWrapper<Graph>::source(e); } 383 Node source(const Edge& e) const 384 { return GraphWrapper<Graph>::target(e); } 385 385 }; 386 386 … … 512 512 // OutEdgeIt& next(OutEdgeIt& e) const { 513 513 // if (e.out_or_in) { 514 // Node n=gw. tail(e.out);514 // Node n=gw.source(e.out); 515 515 // gw.next(e.out); 516 516 // if (!gw.valid(e.out)) { … … 525 525 526 526 // Node aNode(const OutEdgeIt& e) const { 527 // if (e.out_or_in) return gw. tail(e); else return gw.head(e); }527 // if (e.out_or_in) return gw.source(e); else return gw.target(e); } 528 528 // Node bNode(const OutEdgeIt& e) const { 529 // if (e.out_or_in) return gw. head(e); else return gw.tail(e); }529 // if (e.out_or_in) return gw.target(e); else return gw.source(e); } 530 530 531 531 // typedef OutEdgeIt InEdgeIt; … … 545 545 // It e; first(e, v); return e; } 546 546 547 // Node head(const Edge& e) const { return gw.head(e); }548 // Node tail(const Edge& e) const { return gw.tail(e); }547 // Node target(const Edge& e) const { return gw.target(e); } 548 // Node source(const Edge& e) const { return gw.source(e); } 549 549 550 550 // template<typename I> bool valid(const I& i) const … … 564 564 // Node addNode() const { return gw.addNode(); } 565 565 // // FIXME: ez igy nem jo, mert nem 566 // // Edge addEdge(const Node& tail, const Node& head) const {567 // // return graph->addEdge( tail, head); }566 // // Edge addEdge(const Node& source, const Node& target) const { 567 // // return graph->addEdge(source, target); } 568 568 569 569 // template<typename I> void erase(const I& i) const { gw.erase(i); } … … 693 693 OutEdgeIt& next(OutEdgeIt& e) const { 694 694 if (e.out_or_in) { 695 Node n=graph-> tail(e.out);695 Node n=graph->source(e.out); 696 696 graph->next(e.out); 697 697 if (!graph->valid(e.out)) { e.out_or_in=false; graph->first(e.in, n); } … … 703 703 704 704 EdgeIt& next(EdgeIt& e) const { 705 //NodeIt v= tail(e);705 //NodeIt v=source(e); 706 706 graph->next(e.out); 707 707 while (valid(e.v) && !graph->valid(e.out)) { … … 721 721 It e; this->first(e, v); return e; } 722 722 723 // Node head(const Edge& e) const { return gw.head(e); }724 // Node tail(const Edge& e) const { return gw.tail(e); }723 // Node target(const Edge& e) const { return gw.target(e); } 724 // Node source(const Edge& e) const { return gw.source(e); } 725 725 726 726 // template<typename I> bool valid(const I& i) const … … 736 736 737 737 Node aNode(const OutEdgeIt& e) const { 738 if (e.out_or_in) return graph-> tail(e); else return graph->head(e); }738 if (e.out_or_in) return graph->source(e); else return graph->target(e); } 739 739 Node bNode(const OutEdgeIt& e) const { 740 if (e.out_or_in) return graph-> head(e); else return graph->tail(e); }740 if (e.out_or_in) return graph->target(e); else return graph->source(e); } 741 741 742 742 // Node addNode() const { return gw.addNode(); } 743 743 744 744 // FIXME: ez igy nem jo, mert nem 745 // Edge addEdge(const Node& tail, const Node& head) const {746 // return graph->addEdge( tail, head); }745 // Edge addEdge(const Node& source, const Node& target) const { 746 // return graph->addEdge(source, target); } 747 747 748 748 // template<typename I> void erase(const I& i) const { gw.erase(i); } … … 808 808 // It e; first(e, v); return e; } 809 809 810 // Node head(const Edge& e) const { return graph->head(e); }811 // Node tail(const Edge& e) const { return graph->tail(e); }810 // Node target(const Edge& e) const { return graph->target(e); } 811 // Node source(const Edge& e) const { return graph->source(e); } 812 812 813 813 // template<typename I> Node aNode(const I& e) const { … … 823 823 824 824 // Node addNode() { return graph->addNode(); } 825 // Edge addEdge(const Node& tail, const Node& head) {826 // return graph->addEdge( tail, head); }825 // Edge addEdge(const Node& source, const Node& target) { 826 // return graph->addEdge(source, target); } 827 827 828 828 // template<typename I> void erase(const I& i) { graph->erase(i); } … … 1064 1064 } 1065 1065 1066 Node tail(Edge e) const {1066 Node source(Edge e) const { 1067 1067 return ((e.out_or_in) ? graph->aNode(e.out) : graph->aNode(e.in)); } 1068 Node head(Edge e) const {1068 Node target(Edge e) const { 1069 1069 return ((e.out_or_in) ? graph->bNode(e.out) : graph->bNode(e.in)); } 1070 1070 … … 1193 1193 OutEdgeIt f=e; 1194 1194 this->next(f); 1195 first_out_edges->set(this-> tail(e), f);1195 first_out_edges->set(this->source(e), f); 1196 1196 } 1197 1197 }; … … 1311 1311 // It e; first(e, v); return e; } 1312 1312 1313 // Node head(const Edge& e) const { return gw.head(e); }1314 // Node tail(const Edge& e) const { return gw.tail(e); }1313 // Node target(const Edge& e) const { return gw.target(e); } 1314 // Node source(const Edge& e) const { return gw.source(e); } 1315 1315 1316 1316 // template<typename I> Node aNode(const I& e) const { … … 1326 1326 1327 1327 // Node addNode() { return gw.addNode(); } 1328 // Edge addEdge(const Node& tail, const Node& head) {1329 // return gw.addEdge( tail, head); }1328 // Edge addEdge(const Node& source, const Node& target) { 1329 // return gw.addEdge(source, target); } 1330 1330 1331 1331 // template<typename I> void erase(const I& i) { gw.erase(i); } -
src/work/marci/experiment/graph_wrapper_st_ostream_op.h
r921 r986 167 167 EdgeIt& next(EdgeIt& i) const { graph->next(i.e); return i; } 168 168 169 Node tail(const Edge& e) const {170 return Node(graph-> tail(static_cast<typename Graph::Edge>(e))); }171 Node head(const Edge& e) const {172 return Node(graph-> head(static_cast<typename Graph::Edge>(e))); }169 Node source(const Edge& e) const { 170 return Node(graph->source(static_cast<typename Graph::Edge>(e))); } 171 Node target(const Edge& e) const { 172 return Node(graph->target(static_cast<typename Graph::Edge>(e))); } 173 173 174 174 bool valid(const Node& n) const { … … 186 186 187 187 Node addNode() const { return Node(graph->addNode()); } 188 Edge addEdge(const Node& tail, const Node& head) const {189 return Edge(graph->addEdge( tail, head)); }188 Edge addEdge(const Node& source, const Node& target) const { 189 return Edge(graph->addEdge(source, target)); } 190 190 191 191 void erase(const Node& i) const { graph->erase(i); } … … 273 273 return Node(this->graph->bNode(e.e)); } 274 274 275 Node tail(const Edge& e) const {276 return GraphWrapper<Graph>:: head(e); }277 Node head(const Edge& e) const {278 return GraphWrapper<Graph>:: tail(e); }275 Node source(const Edge& e) const { 276 return GraphWrapper<Graph>::target(e); } 277 Node target(const Edge& e) const { 278 return GraphWrapper<Graph>::source(e); } 279 279 280 280 }; … … 490 490 OutEdgeIt& next(OutEdgeIt& e) const { 491 491 if (e.out_or_in) { 492 typename Graph::Node n=this->graph-> tail(e.out);492 typename Graph::Node n=this->graph->source(e.out); 493 493 this->graph->next(e.out); 494 494 if (!this->graph->valid(e.out)) { … … 507 507 508 508 Node aNode(const OutEdgeIt& e) const { 509 if (e.out_or_in) return this->graph-> tail(e); else510 return this->graph-> head(e); }509 if (e.out_or_in) return this->graph->source(e); else 510 return this->graph->target(e); } 511 511 Node bNode(const OutEdgeIt& e) const { 512 if (e.out_or_in) return this->graph-> head(e); else513 return this->graph-> tail(e); }512 if (e.out_or_in) return this->graph->target(e); else 513 return this->graph->source(e); } 514 514 }; 515 515 … … 725 725 } 726 726 727 Node tail(Edge e) const {728 return ((e.forward) ? this->graph-> tail(e) : this->graph->head(e)); }729 Node head(Edge e) const {730 return ((e.forward) ? this->graph-> head(e) : this->graph->tail(e)); }727 Node source(Edge e) const { 728 return ((e.forward) ? this->graph->source(e) : this->graph->target(e)); } 729 Node target(Edge e) const { 730 return ((e.forward) ? this->graph->target(e) : this->graph->source(e)); } 731 731 732 732 Node aNode(OutEdgeIt e) const { … … 914 914 OutEdgeIt f=e; 915 915 this->next(f); 916 first_out_edges->set(this-> tail(e), f.e);916 first_out_edges->set(this->source(e), f.e); 917 917 } 918 918 }; … … 1042 1042 InEdgeIt& next(InEdgeIt& i) const { this->graph->next(i.e); return i; } 1043 1043 1044 Node tail(const Edge& e) {1045 if (!(*(this->s_false_t_true_map))[this->graph-> tail(e)])1046 return Node(this->graph-> tail(e));1044 Node source(const Edge& e) { 1045 if (!(*(this->s_false_t_true_map))[this->graph->source(e)]) 1046 return Node(this->graph->source(e)); 1047 1047 else 1048 return Node(this->graph-> head(e));1049 } 1050 Node head(const Edge& e) {1051 if (!(*(this->s_false_t_true_map))[this->graph-> tail(e)])1052 return Node(this->graph-> head(e));1048 return Node(this->graph->target(e)); 1049 } 1050 Node target(const Edge& e) { 1051 if (!(*(this->s_false_t_true_map))[this->graph->source(e)]) 1052 return Node(this->graph->target(e)); 1053 1053 else 1054 return Node(this->graph-> tail(e));1054 return Node(this->graph->source(e)); 1055 1055 } 1056 1056 … … 1470 1470 } 1471 1471 1472 Node tail(const Edge& e) const {1472 Node source(const Edge& e) const { 1473 1473 switch (e.spec) { 1474 1474 case 0: 1475 return Node(this->graph-> tail(e));1475 return Node(this->graph->source(e)); 1476 1476 break; 1477 1477 case 1: … … 1484 1484 } 1485 1485 } 1486 Node head(const Edge& e) const {1486 Node target(const Edge& e) const { 1487 1487 switch (e.spec) { 1488 1488 case 0: 1489 return Node(this->graph-> head(e));1489 return Node(this->graph->target(e)); 1490 1490 break; 1491 1491 case 1: … … 1507 1507 } 1508 1508 1509 Node aNode(const OutEdgeIt& e) const { return tail(e); }1510 Node aNode(const InEdgeIt& e) const { return head(e); }1511 Node bNode(const OutEdgeIt& e) const { return head(e); }1512 Node bNode(const InEdgeIt& e) const { return tail(e); }1509 Node aNode(const OutEdgeIt& e) const { return source(e); } 1510 Node aNode(const InEdgeIt& e) const { return target(e); } 1511 Node bNode(const OutEdgeIt& e) const { return target(e); } 1512 Node bNode(const InEdgeIt& e) const { return source(e); } 1513 1513 1514 1514 void addNode() const { } … … 1516 1516 1517 1517 // Node addNode() const { return Node(this->graph->addNode()); } 1518 // Edge addEdge(const Node& tail, const Node& head) const {1519 // return Edge(this->graph->addEdge( tail, head)); }1518 // Edge addEdge(const Node& source, const Node& target) const { 1519 // return Edge(this->graph->addEdge(source, target)); } 1520 1520 1521 1521 // void erase(const Node& i) const { this->graph->erase(i); } -
src/work/marci/experiment/iterator_bfs_demo.cc
r921 r986 23 23 string get(typename Graph::Edge e) const { 24 24 return 25 (node_name_map.get(graph. tail(e))+"->"+node_name_map.get(graph.head(e)));25 (node_name_map.get(graph.source(e))+"->"+node_name_map.get(graph.target(e))); 26 26 } 27 27 }; -
src/work/marci/experiment/iterator_bfs_demo_1.cc
r921 r986 23 23 string get(typename Graph::Edge e) const { 24 24 return 25 (node_name_map.get(graph. tail(e))+"->"+node_name_map.get(graph.head(e)));25 (node_name_map.get(graph.source(e))+"->"+node_name_map.get(graph.target(e))); 26 26 } 27 27 }; -
src/work/marci/experiment/list_graph.h
r921 r986 123 123 //ListGraph* G; 124 124 int id; 125 node_item* _ tail;126 node_item* _ head;125 node_item* _source; 126 node_item* _target; 127 127 edge_item* _next_out; 128 128 edge_item* _prev_out; … … 150 150 } 151 151 152 edge_item* _add_edge(node_item* _ tail, node_item* _head) {152 edge_item* _add_edge(node_item* _source, node_item* _target) { 153 153 edge_item* e=new edge_item; 154 154 e->id=edge_id++; 155 e->_ tail=_tail;156 e->_ head=_head;157 158 e->_prev_out=_ tail->_last_out_edge;159 if (_ tail->_last_out_edge) (_tail->_last_out_edge)->_next_out=e;160 _ tail->_last_out_edge=e;161 if (!_ tail->_first_out_edge) _tail->_first_out_edge=e;155 e->_source=_source; 156 e->_target=_target; 157 158 e->_prev_out=_source->_last_out_edge; 159 if (_source->_last_out_edge) (_source->_last_out_edge)->_next_out=e; 160 _source->_last_out_edge=e; 161 if (!_source->_first_out_edge) _source->_first_out_edge=e; 162 162 e->_next_out=0; 163 163 164 e->_prev_in=_ head->_last_in_edge;165 if (_ head->_last_in_edge) (_head->_last_in_edge)->_next_in=e;166 _ head->_last_in_edge=e;167 if (!_ head->_first_in_edge) { _head->_first_in_edge=e; }164 e->_prev_in=_target->_last_in_edge; 165 if (_target->_last_in_edge) (_target->_last_in_edge)->_next_in=e; 166 _target->_last_in_edge=e; 167 if (!_target->_first_in_edge) { _target->_first_in_edge=e; } 168 168 e->_next_in=0; 169 169 … … 185 185 void _delete_edge(edge_item* e) { 186 186 if (e->_next_out) (e->_next_out)->_prev_out=e->_prev_out; else 187 (e->_ tail)->_last_out_edge=e->_prev_out;187 (e->_source)->_last_out_edge=e->_prev_out; 188 188 if (e->_prev_out) (e->_prev_out)->_next_out=e->_next_out; else 189 (e->_ tail)->_first_out_edge=e->_next_out;189 (e->_source)->_first_out_edge=e->_next_out; 190 190 if (e->_next_in) (e->_next_in)->_prev_in=e->_prev_in; else 191 (e->_ head)->_last_in_edge=e->_prev_in;191 (e->_target)->_last_in_edge=e->_prev_in; 192 192 if (e->_prev_in) (e->_prev_in)->_next_in=e->_next_in; else 193 (e->_ head)->_first_in_edge=e->_next_in;193 (e->_target)->_first_in_edge=e->_next_in; 194 194 195 195 delete e; … … 197 197 } 198 198 199 void _set_ tail(edge_item* e, node_item* _tail) {199 void _set_source(edge_item* e, node_item* _source) { 200 200 if (e->_next_out) (e->_next_out)->_prev_out=e->_prev_out; else 201 (e->_ tail)->_last_out_edge=e->_prev_out;201 (e->_source)->_last_out_edge=e->_prev_out; 202 202 if (e->_prev_out) (e->_prev_out)->_next_out=e->_next_out; else 203 (e->_ tail)->_first_out_edge=e->_next_out;204 205 e->_ tail=_tail;206 207 e->_prev_out=_ tail->_last_out_edge;208 if (_ tail->_last_out_edge) (_tail->_last_out_edge)->_next_out=e;209 _ tail->_last_out_edge=e;210 if (!_ tail->_first_out_edge) _tail->_first_out_edge=e;203 (e->_source)->_first_out_edge=e->_next_out; 204 205 e->_source=_source; 206 207 e->_prev_out=_source->_last_out_edge; 208 if (_source->_last_out_edge) (_source->_last_out_edge)->_next_out=e; 209 _source->_last_out_edge=e; 210 if (!_source->_first_out_edge) _source->_first_out_edge=e; 211 211 e->_next_out=0; 212 212 } 213 213 214 void _set_ head(edge_item* e, node_item* _head) {214 void _set_target(edge_item* e, node_item* _target) { 215 215 if (e->_next_in) (e->_next_in)->_prev_in=e->_prev_in; else 216 (e->_ head)->_last_in_edge=e->_prev_in;216 (e->_target)->_last_in_edge=e->_prev_in; 217 217 if (e->_prev_in) (e->_prev_in)->_next_in=e->_next_in; else 218 (e->_ head)->_first_in_edge=e->_next_in;219 220 e->_ head=_head;221 222 e->_prev_in=_ head->_last_in_edge;223 if (_ head->_last_in_edge) (_head->_last_in_edge)->_next_in=e;224 _ head->_last_in_edge=e;225 if (!_ head->_first_in_edge) { _head->_first_in_edge=e; }218 (e->_target)->_first_in_edge=e->_next_in; 219 220 e->_target=_target; 221 222 e->_prev_in=_target->_last_in_edge; 223 if (_target->_last_in_edge) (_target->_last_in_edge)->_next_in=e; 224 _target->_last_in_edge=e; 225 if (!_target->_first_in_edge) { _target->_first_in_edge=e; } 226 226 e->_next_in=0; 227 227 } … … 248 248 //InEdgeIt firstInEdge(const Node v) const { return InEdgeIt(v); } 249 249 //SymEdgeIt firstSymEdge(const Node v) const { return SymEdgeIt(v); } 250 Node tail(Edge e) const { return e.tailNode(); }251 Node head(Edge e) const { return e.headNode(); }250 Node source(Edge e) const { return e.sourceNode(); } 251 Node target(Edge e) const { return e.targetNode(); } 252 252 253 253 Node aNode(const OutEdgeIt& e) const { return e.aNode(); } … … 278 278 SymEdgeIt& /*getF*/first(SymEdgeIt& e, Node v) const { 279 279 e=SymEdgeIt(*this, v); return e; } 280 //void get Tail(Node& n, const Edge& e) const { n=tail(e); }281 //void get Head(Node& n, const Edge& e) const { n=head(e); }280 //void getSource(Node& n, const Edge& e) const { n=source(e); } 281 //void getTarget(Node& n, const Edge& e) const { n=target(e); } 282 282 283 283 //void getANode(Node& n, const OutEdgeIt& e) const { n=e.aNode(); } … … 346 346 } 347 347 348 void set Tail(Edge e, Node tail) {349 _set_ tail(e.edge, tail.node);350 } 351 352 void set Head(Edge e, Node head) {353 _set_ head(e.edge, head.node);348 void setSource(Edge e, Node source) { 349 _set_source(e.edge, source.node); 350 } 351 352 void setTarget(Edge e, Node target) { 353 _set_target(e.edge, target.node); 354 354 } 355 355 … … 360 360 } 361 361 friend std::ostream& operator<<(std::ostream& os, const Edge& i) { 362 os << "(" << i.edge->_ tail->id << "--" << i.edge->id << "->" << i.edge->_head->id << ")";362 os << "(" << i.edge->_source->id << "--" << i.edge->id << "->" << i.edge->_target->id << ")"; 363 363 return os; 364 364 } … … 427 427 friend bool operator!=(Edge u, Edge v) { return v.edge!=u.edge; } 428 428 protected: 429 Node tailNode() const { return Node(edge->_tail); }430 Node headNode() const { return Node(edge->_head); }429 Node sourceNode() const { return Node(edge->_source); } 430 Node targetNode() const { return Node(edge->_target); } 431 431 public: 432 432 friend std::ostream& operator<<(std::ostream& os, const Edge& i); … … 448 448 EdgeIt(edge_item* _e) : Edge(_e) { } 449 449 EdgeIt& operator++() { 450 node_item* v=edge->_ tail;450 node_item* v=edge->_source; 451 451 edge=edge->_next_out; 452 452 while (v && !edge) { v=v->_next_node; if (v) edge=v->_first_out_edge; } … … 468 468 OutEdgeIt& operator++() { edge=edge->_next_out; return *this; } 469 469 protected: 470 Node aNode() const { return Node(edge->_ tail); }471 Node bNode() const { return Node(edge->_ head); }470 Node aNode() const { return Node(edge->_source); } 471 Node bNode() const { return Node(edge->_target); } 472 472 }; 473 473 … … 485 485 InEdgeIt& operator++() { edge=edge->_next_in; return *this; } 486 486 protected: 487 Node aNode() const { return Node(edge->_ head); }488 Node bNode() const { return Node(edge->_ tail); }487 Node aNode() const { return Node(edge->_target); } 488 Node bNode() const { return Node(edge->_source); } 489 489 }; 490 490 … … 511 511 SymEdgeIt& operator++() { 512 512 if (out_or_in) { 513 node_item* v=edge->_ tail;513 node_item* v=edge->_source; 514 514 edge=edge->_next_out; 515 515 if (!edge) { out_or_in=0; edge=v->_first_in_edge; } … … 521 521 protected: 522 522 Node aNode() const { 523 return (out_or_in) ? Node(edge->_ tail) : Node(edge->_head); }523 return (out_or_in) ? Node(edge->_source) : Node(edge->_target); } 524 524 Node bNode() const { 525 return (out_or_in) ? Node(edge->_ head) : Node(edge->_tail); }525 return (out_or_in) ? Node(edge->_target) : Node(edge->_source); } 526 526 }; 527 527 -
src/work/marci/graph_concept.h
r921 r986 104 104 105 105 106 /// Gives back the headnode of an edge.107 Node head(const Edge&) const { return INVALID; }108 /// Gives back the tailnode of an edge.109 Node tail(const Edge&) const { return INVALID; }106 /// Gives back the target node of an edge. 107 Node target(const Edge&) const { return INVALID; } 108 /// Gives back the source node of an edge. 109 Node source(const Edge&) const { return INVALID; } 110 110 111 111 // Node aNode(SymEdgeIt) const {} … … 143 143 /// \brief Add a new edge to the graph. 144 144 /// 145 /// Add a new edge to the graph with tail node \c tail146 /// and head node \c head.145 /// Add a new edge to the graph with source node \c source 146 /// and target node \c target. 147 147 /// \return the new edge. 148 Edge addEdge(const Node& tail, const Node& head) { return INVALID; }148 Edge addEdge(const Node& source, const Node& target) { return INVALID; } 149 149 150 150 /// \brief Resets the graph. -
src/work/marci/iterator_bfs_demo.cc
r921 r986 24 24 string operator[](typename Graph::Edge e) const { 25 25 return 26 (node_name_map[graph. tail(e)]+"->"+node_name_map[graph.head(e)]);26 (node_name_map[graph.source(e)]+"->"+node_name_map[graph.target(e)]); 27 27 } 28 28 }; … … 96 96 if (Graph::Edge(bfs)!=INVALID) { 97 97 cout << edge_name[bfs] << /*endl*/", " << 98 node_name[G. tail(bfs)] <<99 (bfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 100 node_name[G. head(bfs)] <<98 node_name[G.source(bfs)] << 99 (bfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 100 node_name[G.target(bfs)] << 101 101 (bfs.isBNodeNewlyReached() ? ": is newly reached." : 102 102 ": is not newly reached."); 103 103 } else { 104 104 cout << "invalid" << /*endl*/", " << 105 node_name[bfs. tail()] <<105 node_name[bfs.source()] << 106 106 (bfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 107 107 … … 130 130 if (Graph::Edge(dfs)!=INVALID) { 131 131 cout << edge_name[dfs] << /*endl*/", " << 132 node_name[G. tail(dfs)] <<133 (dfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 134 node_name[G. head(dfs)] <<132 node_name[G.source(dfs)] << 133 (dfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 134 node_name[G.target(dfs)] << 135 135 (dfs.isBNodeNewlyReached() ? ": is newly reached." : 136 136 ": is not newly reached."); 137 137 } else { 138 138 cout << "invalid" << /*endl*/", " << 139 node_name[dfs. tail()] <<139 node_name[dfs.source()] << 140 140 (dfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 141 141 … … 172 172 if (GW::Edge(bfs)!=INVALID) { 173 173 cout << edge_name[GW::Edge(bfs)] << /*endl*/", " << 174 node_name[gw. tail(bfs)] <<175 (bfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 176 node_name[gw. head(bfs)] <<174 node_name[gw.source(bfs)] << 175 (bfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 176 node_name[gw.target(bfs)] << 177 177 (bfs.isBNodeNewlyReached() ? ": is newly reached." : 178 178 ": is not newly reached."); 179 179 } else { 180 180 cout << "invalid" << /*endl*/", " << 181 node_name[bfs. tail()] <<181 node_name[bfs.source()] << 182 182 (bfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 183 183 … … 206 206 if (GW::Edge(dfs)!=INVALID) { 207 207 cout << edge_name[GW::Edge(dfs)] << /*endl*/", " << 208 node_name[gw. tail(dfs)] <<209 (dfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 210 node_name[gw. head(dfs)] <<208 node_name[gw.source(dfs)] << 209 (dfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 210 node_name[gw.target(dfs)] << 211 211 (dfs.isBNodeNewlyReached() ? ": is newly reached." : 212 212 ": is not newly reached."); 213 213 } else { 214 214 cout << "invalid" << /*endl*/", " << 215 node_name[dfs. tail()] <<215 node_name[dfs.source()] << 216 216 (dfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 217 217 … … 311 311 cout << "bfs and dfs iterator demo on the bidirected graph" << endl; 312 312 // for(GW::EdgeIt e(gw); e!=INVALID; ++e) { 313 // cout << node_name[gw. tail(e)] << "->" << node_name[gw.head(e)] << " ";313 // cout << node_name[gw.source(e)] << "->" << node_name[gw.target(e)] << " "; 314 314 // } 315 315 for(GW::NodeIt n(gw); n!=INVALID; ++n) { … … 335 335 if (GW::Edge(bfs)!=INVALID) { 336 336 cout << edge_name[GW::Edge(bfs)] << /*endl*/", " << 337 node_name[gw. tail(bfs)] <<338 (bfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 339 node_name[gw. head(bfs)] <<337 node_name[gw.source(bfs)] << 338 (bfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 339 node_name[gw.target(bfs)] << 340 340 (bfs.isBNodeNewlyReached() ? ": is newly reached." : 341 341 ": is not newly reached."); 342 342 } else { 343 343 cout << "invalid" << /*endl*/", " << 344 node_name[bfs. tail()] <<344 node_name[bfs.source()] << 345 345 (bfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 346 346 … … 369 369 if (GW::Edge(dfs)!=INVALID) { 370 370 cout << edge_name[GW::Edge(dfs)] << /*endl*/", " << 371 node_name[gw. tail(dfs)] <<372 (dfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 373 node_name[gw. head(dfs)] <<371 node_name[gw.source(dfs)] << 372 (dfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 373 node_name[gw.target(dfs)] << 374 374 (dfs.isBNodeNewlyReached() ? ": is newly reached." : 375 375 ": is not newly reached."); 376 376 } else { 377 377 cout << "invalid" << /*endl*/", " << 378 node_name[dfs. tail()] <<378 node_name[dfs.source()] << 379 379 (dfs.isANodeExamined() ? ": is examined, " : ": is not examined, ") << 380 380 -
src/work/marci/leda/bipartite_matching_comparison.cc
r921 r986 130 130 131 131 FOR_EACH_LOC(BGW::EdgeIt, e, bgw) 132 hg.addEdge(b_s_nodes[bgw. tail(e)], b_t_nodes[bgw.head(e)]);132 hg.addEdge(b_s_nodes[bgw.source(e)], b_t_nodes[bgw.target(e)]); 133 133 134 134 ConstMap<SageGraph::Edge, int> cm(1); -
src/work/marci/leda/leda_graph_wrapper.h
r921 r986 214 214 // } 215 215 216 ///Gives back the headnode of an edge.217 Node head(Edge e) const {216 ///Gives back the target node of an edge. 217 Node target(Edge e) const { 218 218 return Node(l_graph->target(e.l_e)); 219 219 } 220 ///Gives back the tailnode of an edge.221 Node tail(Edge e) const {220 ///Gives back the source node of an edge. 221 Node source(Edge e) const { 222 222 return Node(l_graph->source(e.l_e)); 223 223 } 224 224 225 Node aNode(InEdgeIt e) const { return head(e); }226 Node aNode(OutEdgeIt e) const { return tail(e); }225 Node aNode(InEdgeIt e) const { return target(e); } 226 Node aNode(OutEdgeIt e) const { return source(e); } 227 227 // Node aNode(SymEdgeIt) const {} 228 228 229 Node bNode(InEdgeIt e) const { return tail(e); }230 Node bNode(OutEdgeIt e) const { return head(e); }229 Node bNode(InEdgeIt e) const { return source(e); } 230 Node bNode(OutEdgeIt e) const { return target(e); } 231 231 // Node bNode(SymEdgeIt) const {} 232 232 … … 245 245 246 246 Node addNode() const { return Node(l_graph->new_node()); } 247 Edge addEdge(Node tail, Node head) const {248 return Edge(l_graph->new_edge( tail.l_n, head.l_n));247 Edge addEdge(Node source, Node target) const { 248 return Edge(l_graph->new_edge(source.l_n, target.l_n)); 249 249 } 250 250 -
src/work/marci/leda/max_bipartite_matching_demo.cc
r921 r986 104 104 // cout << "out edges: "; 105 105 // for(OutEdgeIt e=G.first<OutEdgeIt>(n); G.valid(e); G.next(e)) 106 // cout << G.id(G. tail(e)) << "->" << G.id(G.head(e)) << " ";106 // cout << G.id(G.source(e)) << "->" << G.id(G.target(e)) << " "; 107 107 // cout << "in edges: "; 108 108 // for(InEdgeIt e=G.first<InEdgeIt>(n); G.valid(e); G.next(e)) 109 // cout << G.id(G. tail(e)) << "->" << G.id(G.head(e)) << " ";109 // cout << G.id(G.source(e)) << "->" << G.id(G.target(e)) << " "; 110 110 // cout << endl; 111 111 // } … … 124 124 while (max_flow_test.augmentOnShortestPath()) { 125 125 // for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e)) 126 // std::cout << G.id(G. tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " ";126 // std::cout << G.id(G.source(e)) << "-" << flow.get(e) << "->" << G.id(G.target(e)) << " "; 127 127 // std::cout<<std::endl; 128 128 ++i; … … 132 132 // for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e)) 133 133 // if (flow.get(e)) 134 // std::cout << G.id(G. tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " ";134 // std::cout << G.id(G.source(e)) << "-" << flow.get(e) << "->" << G.id(G.target(e)) << " "; 135 135 // std::cout<<std::endl; 136 136 // std::cout << "edges which are not in this maximum matching: "<< std::endl; 137 137 // for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e)) 138 138 // if (!flow.get(e)) 139 // std::cout << G.id(G. tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " ";139 // std::cout << G.id(G.source(e)) << "-" << flow.get(e) << "->" << G.id(G.target(e)) << " "; 140 140 // std::cout<<std::endl; 141 141 … … 157 157 // while (max_flow_test.augmentOnBlockingFlow2()) { 158 158 // // for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e)) 159 // // std::cout << G.id(G. tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " ";159 // // std::cout << G.id(G.source(e)) << "-" << flow.get(e) << "->" << G.id(G.target(e)) << " "; 160 160 // // std::cout<<std::endl; 161 161 // ++i; … … 165 165 // // for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e)) 166 166 // // if (flow.get(e)) 167 // // std::cout << G.id(G. tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " ";167 // // std::cout << G.id(G.source(e)) << "-" << flow.get(e) << "->" << G.id(G.target(e)) << " "; 168 168 // // std::cout<<std::endl; 169 169 // // std::cout << "edges which are not in this maximum matching: "<< std::endl; 170 170 // // for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e)) 171 171 // // if (!flow.get(e)) 172 // // std::cout << G.id(G. tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " ";172 // // std::cout << G.id(G.source(e)) << "-" << flow.get(e) << "->" << G.id(G.target(e)) << " "; 173 173 // // std::cout<<std::endl; 174 174 … … 199 199 // for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e)) 200 200 // if (flow.get(e)) 201 // std::cout << G.id(G. tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " ";201 // std::cout << G.id(G.source(e)) << "-" << flow.get(e) << "->" << G.id(G.target(e)) << " "; 202 202 // std::cout<<std::endl; 203 203 // std::cout << "edges which are not in this maximum matching: "<< std::endl; 204 204 // for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e)) 205 205 // if (!flow.get(e)) 206 // std::cout << G.id(G. tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " ";206 // std::cout << G.id(G.source(e)) << "-" << flow.get(e) << "->" << G.id(G.target(e)) << " "; 207 207 // std::cout<<std::endl; 208 208 -
src/work/marci/leda_bfs_dfs.cc
r921 r986 26 26 string get(typename Graph::Edge e) const { 27 27 return 28 (node_name_map.get(graph. tail(e))+"->"+node_name_map.get(graph.head(e)));28 (node_name_map.get(graph.source(e))+"->"+node_name_map.get(graph.target(e))); 29 29 } 30 30 }; -
src/work/marci/leda_graph_demo.cc
r921 r986 39 39 // cout << "out edges: "; 40 40 // for(OutEdgeIt e=G.first<OutEdgeIt>(n); G.valid(e); G.next(e)) 41 // cout << G.id(G. tail(e)) << "-" << cap.get(e) << "->" << G.id(G.head(e)) << " ";41 // cout << G.id(G.source(e)) << "-" << cap.get(e) << "->" << G.id(G.target(e)) << " "; 42 42 // cout << "in edges: "; 43 43 // for(InEdgeIt e=G.first<InEdgeIt>(n); G.valid(e); G.next(e)) 44 // cout << G.id(G. tail(e)) << "-" << cap.get(e) << "->" << G.id(G.head(e)) << " ";44 // cout << G.id(G.source(e)) << "-" << cap.get(e) << "->" << G.id(G.target(e)) << " "; 45 45 // cout << endl; 46 46 // } … … 65 65 while (max_flow_test.augmentOnShortestPath()) { 66 66 // for(EdgeIt e=G.template first<EdgeIt>(); e.valid(); ++e) { 67 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";67 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 68 68 // } 69 69 // std::cout<<std::endl; … … 73 73 // std::cout << "maximum flow: "<< std::endl; 74 74 // for(EdgeIt e=G.first<EdgeIt>(); e.valid(); ++e) { 75 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";75 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 76 76 // } 77 77 // std::cout<<std::endl; -
src/work/marci/lp/max_flow_by_lp.cc
r921 r986 64 64 65 65 FOR_EACH_LOC(Graph::EdgeIt, e, g) { 66 if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])67 std::cout << "Slackness does not hold!" << std::endl; 68 if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)66 if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 67 std::cout << "Slackness does not hold!" << std::endl; 68 if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 69 69 std::cout << "Slackness does not hold!" << std::endl; 70 70 } … … 80 80 81 81 // FOR_EACH_LOC(Graph::EdgeIt, e, g) { 82 // if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])83 // std::cout << "Slackness does not hold!" << std::endl; 84 // if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)82 // if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 83 // std::cout << "Slackness does not hold!" << std::endl; 84 // if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 85 85 // std::cout << "Slackness does not hold!" << std::endl; 86 86 // } … … 107 107 108 108 FOR_EACH_LOC(Graph::EdgeIt, e, g) { 109 if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])110 std::cout << "Slackness does not hold!" << std::endl; 111 if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)109 if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 110 std::cout << "Slackness does not hold!" << std::endl; 111 if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 112 112 std::cout << "Slackness does not hold!" << std::endl; 113 113 } … … 136 136 137 137 FOR_EACH_LOC(Graph::EdgeIt, e, g) { 138 if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])139 std::cout << "Slackness does not hold!" << std::endl; 140 if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)138 if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 139 std::cout << "Slackness does not hold!" << std::endl; 140 if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 141 141 std::cout << "Slackness does not hold!" << std::endl; 142 142 } … … 154 154 155 155 // FOR_EACH_LOC(Graph::EdgeIt, e, g) { 156 // if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])157 // std::cout << "Slackness does not hold!" << std::endl; 158 // if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)156 // if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 157 // std::cout << "Slackness does not hold!" << std::endl; 158 // if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 159 159 // std::cout << "Slackness does not hold!" << std::endl; 160 160 // } … … 172 172 173 173 // FOR_EACH_LOC(Graph::EdgeIt, e, g) { 174 // if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])175 // std::cout << "Slackness does not hold!" << std::endl; 176 // if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)174 // if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 175 // std::cout << "Slackness does not hold!" << std::endl; 176 // if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 177 177 // std::cout << "Slackness does not hold!" << std::endl; 178 178 // } -
src/work/marci/max_flow_demo.cc
r921 r986 48 48 49 49 for(Graph::EdgeIt e(g); e!=INVALID; ++e) { 50 if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])50 if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 51 51 std::cout << "Slackness does not hold!" << std::endl; 52 if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)52 if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 53 53 std::cout << "Slackness does not hold!" << std::endl; 54 54 } … … 64 64 65 65 for(Graph::EdgeIt e(g); e!=INVALID; ++e) { 66 if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])66 if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 67 67 std::cout << "Slackness does not hold!" << std::endl; 68 if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)68 if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 69 69 std::cout << "Slackness does not hold!" << std::endl; 70 70 } … … 91 91 92 92 for(Graph::EdgeIt e(g); e!=INVALID; ++e) { 93 if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])93 if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 94 94 std::cout << "Slackness does not hold!" << std::endl; 95 if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)95 if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 96 96 std::cout << "Slackness does not hold!" << std::endl; 97 97 } … … 109 109 110 110 for(Graph::EdgeIt e(g); e!=INVALID; ++e) { 111 if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])111 if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 112 112 std::cout << "Slackness does not hold!" << std::endl; 113 if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)113 if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 114 114 std::cout << "Slackness does not hold!" << std::endl; 115 115 } … … 127 127 128 128 for(Graph::EdgeIt e(g); e!=INVALID; ++e) { 129 if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])129 if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 130 130 std::cout << "Slackness does not hold!" << std::endl; 131 if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)131 if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 132 132 std::cout << "Slackness does not hold!" << std::endl; 133 133 } … … 145 145 146 146 for(Graph::EdgeIt e(g); e!=INVALID; ++e) { 147 if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])147 if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 148 148 std::cout << "Slackness does not hold!" << std::endl; 149 if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)149 if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 150 150 std::cout << "Slackness does not hold!" << std::endl; 151 151 } -
src/work/marci/oldies/edmonds_karp.h
r921 r986 60 60 ResGWOutEdgeIt e=bfs; 61 61 if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 62 Node v=res_graph. tail(e);63 Node w=res_graph. head(e);62 Node v=res_graph.source(e); 63 Node w=res_graph.target(e); 64 64 pred.set(w, e); 65 65 if (res_graph.valid(pred[v])) { … … 68 68 free.set(w, res_graph.resCap(e)); 69 69 } 70 if (res_graph. head(e)==t) { _augment=true; break; }70 if (res_graph.target(e)==t) { _augment=true; break; } 71 71 } 72 72 … … 80 80 ResGWEdge e=pred[n]; 81 81 res_graph.augment(e, augment_value); 82 n=res_graph. tail(e);82 n=res_graph.source(e); 83 83 } 84 84 } … … 102 102 // return dist[n]; } 103 103 // bool get(const typename MapGraphWrapper::Edge& e) const { 104 // return (dist.get(g-> tail(e))<dist.get(g->head(e))); }104 // return (dist.get(g->source(e))<dist.get(g->target(e))); } 105 105 bool operator[](const typename MapGraphWrapper::Edge& e) const { 106 return (dist[g-> tail(e)]<dist[g->head(e)]);106 return (dist[g->source(e)]<dist[g->target(e)]); 107 107 } 108 108 }; … … 124 124 ResGWOutEdgeIt e=bfs; 125 125 if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 126 dist.set(res_graph. head(e), dist[res_graph.tail(e)]+1);126 dist.set(res_graph.target(e), dist[res_graph.source(e)]+1); 127 127 } 128 128 ++bfs; … … 153 153 typename FilterResGW::EdgeIt e; 154 154 for(filter_res_graph.first(e); filter_res_graph.valid(e); filter_res_graph.next(e)) { 155 //if (dist.get(res_graph. head(e))==dist.get(res_graph.tail(e))+1) {156 typename MG::Edge f=F.addEdge(res_graph_to_F[res_graph. tail(e)], res_graph_to_F[res_graph.head(e)]);155 //if (dist.get(res_graph.target(e))==dist.get(res_graph.source(e))+1) { 156 typename MG::Edge f=F.addEdge(res_graph_to_F[res_graph.source(e)], res_graph_to_F[res_graph.target(e)]); 157 157 original_edge.update(); 158 158 original_edge.set(f, e); … … 207 207 typename MG::Edge e=pred[n]; 208 208 res_graph.augment(original_edge[e], augment_value); 209 n=F. tail(e);209 n=F.source(e); 210 210 if (residual_capacity[e]==augment_value) 211 211 F.erase(e); … … 255 255 if (res_graph.valid(e)) { 256 256 if (bfs.isBNodeNewlyReached()) { 257 dist.set(res_graph. head(e), dist[res_graph.tail(e)]+1);258 typename MG::Edge f=F.addEdge(res_graph_to_F[res_graph. tail(e)], res_graph_to_F[res_graph.head(e)]);257 dist.set(res_graph.target(e), dist[res_graph.source(e)]+1); 258 typename MG::Edge f=F.addEdge(res_graph_to_F[res_graph.source(e)], res_graph_to_F[res_graph.target(e)]); 259 259 original_edge.update(); 260 260 original_edge.set(f, e); … … 262 262 residual_capacity.set(f, res_graph.resCap(e)); 263 263 } else { 264 if (dist[res_graph. head(e)]==(dist[res_graph.tail(e)]+1)) {265 typename MG::Edge f=F.addEdge(res_graph_to_F[res_graph. tail(e)], res_graph_to_F[res_graph.head(e)]);264 if (dist[res_graph.target(e)]==(dist[res_graph.source(e)]+1)) { 265 typename MG::Edge f=F.addEdge(res_graph_to_F[res_graph.source(e)], res_graph_to_F[res_graph.target(e)]); 266 266 original_edge.update(); 267 267 original_edge.set(f, e); … … 317 317 typename MG::Edge e=pred[n]; 318 318 res_graph.augment(original_edge[e], augment_value); 319 n=F. tail(e);319 n=F.source(e); 320 320 if (residual_capacity[e]==augment_value) 321 321 F.erase(e); … … 344 344 ResGWOutEdgeIt e=bfs; 345 345 if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 346 dist.set(res_graph. head(e), dist[res_graph.tail(e)]+1);346 dist.set(res_graph.target(e), dist[res_graph.source(e)]+1); 347 347 } 348 348 ++bfs; … … 441 441 typename ErasingResGW::OutEdgeIt e=pred[n]; 442 442 res_graph.augment(e, augment_value); 443 n=erasing_res_graph. tail(e);443 n=erasing_res_graph.source(e); 444 444 if (res_graph.resCap(e)==0) 445 445 erasing_res_graph.erase(e); … … 536 536 // AugOutEdgeIt e=bfs; 537 537 // if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 538 // Node v=res_graph. tail(e);539 // Node w=res_graph. head(e);538 // Node v=res_graph.source(e); 539 // Node w=res_graph.target(e); 540 540 // pred.set(w, e); 541 541 // if (res_graph.valid(pred.get(v))) { … … 544 544 // free.set(w, res_graph.free(e)); 545 545 // } 546 // n=res_graph. head(e);546 // n=res_graph.target(e); 547 547 // if (T->get(n) && (used.get(n)<1) ) { 548 548 // //Num u=0; … … 566 566 // AugEdge e=pred.get(n); 567 567 // res_graph.augment(e, augment_value); 568 // n=res_graph. tail(e);568 // n=res_graph.source(e); 569 569 // } 570 570 // used.set(n, 1); //mind2 vegen jav … … 607 607 // // AugOutEdgeIt e=bfs; 608 608 // // if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 609 // // dist.set(res_graph. head(e), dist.get(res_graph.tail(e))+1);609 // // dist.set(res_graph.target(e), dist.get(res_graph.source(e))+1); 610 610 // // } 611 611 … … 629 629 // // //which are in some shortest paths 630 630 // // for(typename AugGraph::EdgeIt e=res_graph.template first<typename AugGraph::EdgeIt>(); res_graph.valid(e); res_graph.next(e)) { 631 // // if (dist.get(res_graph. head(e))==dist.get(res_graph.tail(e))+1) {632 // // typename MutableGraph::Edge f=F.addEdge(res_graph_to_F.get(res_graph. tail(e)), res_graph_to_F.get(res_graph.head(e)));631 // // if (dist.get(res_graph.target(e))==dist.get(res_graph.source(e))+1) { 632 // // typename MutableGraph::Edge f=F.addEdge(res_graph_to_F.get(res_graph.source(e)), res_graph_to_F.get(res_graph.target(e))); 633 633 // // original_edge.update(); 634 634 // // original_edge.set(f, e); … … 682 682 // // typename MutableGraph::Edge e=pred.get(n); 683 683 // // res_graph.augment(original_edge.get(e), augment_value); 684 // // n=F. tail(e);684 // // n=F.source(e); 685 685 // // if (residual_capacity.get(e)==augment_value) 686 686 // // F.erase(e); … … 733 733 // typename ErasingResGraphWrapper<Graph, Num, FlowMap, CapMap>::OutEdgeIt e=bfs; 734 734 // if (res_graph.valid(e) && bfs.isBNodeNewlyReached()) { 735 // dist.set(res_graph. head(e), dist.get(res_graph.tail(e))+1);735 // dist.set(res_graph.target(e), dist.get(res_graph.source(e))+1); 736 736 // } 737 737 // ++bfs; … … 810 810 // EAugEdge e=pred.get(n); 811 811 // res_graph.augment(e, augment_value); 812 // n=res_graph. tail(e);812 // n=res_graph.source(e); 813 813 // if (res_graph.free(e)==0) 814 814 // res_graph.erase(e); … … 903 903 // // AugOutEdgeIt e=/*AugOutEdgeIt*/(bfs); 904 904 // // if (e.valid() && bfs.isBNodeNewlyReached()) { 905 // // Node v=res_graph. tail(e);906 // // Node w=res_graph. head(e);905 // // Node v=res_graph.source(e); 906 // // Node w=res_graph.target(e); 907 907 // // pred.set(w, e); 908 908 // // if (pred.get(v).valid()) { … … 911 911 // // free.set(w, e.free()); 912 912 // // } 913 // // if (TMap.get(res_graph. head(e))) {913 // // if (TMap.get(res_graph.target(e))) { 914 914 // // _augment=true; 915 // // reached_t_node=res_graph. head(e);915 // // reached_t_node=res_graph.target(e); 916 916 // // break; 917 917 // // } … … 927 927 // // AugEdge e=pred.get(n); 928 928 // // e.augment(augment_value); 929 // // n=res_graph. tail(e);929 // // n=res_graph.source(e); 930 930 // // } 931 931 // // } -
src/work/marci/oldies/marci_graph_demo.cc
r921 r986 32 32 std::cout << " outdegree (OutEdgeIt): " << count(G.first<OutEdgeIt>(i)) << " "; 33 33 for(OutEdgeIt j=G.first<OutEdgeIt>(i); G.valid(j); G.next(j)) { 34 std::cout << "(" << G.id(G. tail(j)) << "--" << G.id(j) << "->" << G.id(G.head(j)) << ") ";34 std::cout << "(" << G.id(G.source(j)) << "--" << G.id(j) << "->" << G.id(G.target(j)) << ") "; 35 35 } 36 36 std::cout << std::endl; … … 90 90 } 91 91 92 std::cout << "node and edge property values on the tails and heads of edges..." << std::endl;92 std::cout << "node and edge property values on the sources and targets of edges..." << std::endl; 93 93 for(EdgeIt j=G.first<EdgeIt>(); G.valid(j); G.next(j)) { 94 std::cout << my_property_vector.get(G. tail(j)) << "--" << my_edge_property.get(j) << "-->" << my_property_vector.get(G.head(j)) << " ";94 std::cout << my_property_vector.get(G.source(j)) << "--" << my_edge_property.get(j) << "-->" << my_property_vector.get(G.target(j)) << " "; 95 95 } 96 96 std::cout << std::endl; … … 159 159 std::cout << "out edges: "; 160 160 for(OutEdgeIt j=flowG.first<OutEdgeIt>(i); flowG.valid(j); flowG.next(j)) 161 std::cout << node_name.get(flowG. tail(j)) << "-"<< cap.get(j) << "->" << node_name.get(flowG.head(j)) << " ";161 std::cout << node_name.get(flowG.source(j)) << "-"<< cap.get(j) << "->" << node_name.get(flowG.target(j)) << " "; 162 162 std::cout << "in edges: "; 163 163 for(InEdgeIt j=flowG.first<InEdgeIt>(i); flowG.valid(j); flowG.next(j)) 164 std::cout << node_name.get(flowG. tail(j)) << "-"<< cap.get(j) << "->" << node_name.get(flowG.head(j)) << " ";164 std::cout << node_name.get(flowG.source(j)) << "-"<< cap.get(j) << "->" << node_name.get(flowG.target(j)) << " "; 165 165 std::cout << std::endl; 166 166 } … … 172 172 173 173 174 //flowG.set Tail(v3_t, v2);175 //flowG.set Head(v3_t, s);174 //flowG.setSource(v3_t, v2); 175 //flowG.setTarget(v3_t, s); 176 176 /* 177 177 for(NodeIt i=flowG.first<NodeIt>(); flowG.valid(i); flowG.next(i)) { … … 179 179 std::cout << "out edges: "; 180 180 for(OutEdgeIt j=flowG.first<OutEdgeIt>(i); flowG.valid(j); flowG.next(j)) 181 std::cout << node_name.get(flowG. tail(j)) << "-"<< cap.get(j) << "->" << node_name.get(flowG.head(j)) << " ";181 std::cout << node_name.get(flowG.source(j)) << "-"<< cap.get(j) << "->" << node_name.get(flowG.target(j)) << " "; 182 182 std::cout << "in edges: "; 183 183 for(InEdgeIt j=flowG.first<InEdgeIt>(i); flowG.valid(j); flowG.next(j)) 184 std::cout << node_name.get(flowG. tail(j)) << "-"<< cap.get(j) << "->" << node_name.get(flowG.head(j)) << " ";184 std::cout << node_name.get(flowG.source(j)) << "-"<< cap.get(j) << "->" << node_name.get(flowG.target(j)) << " "; 185 185 std::cout << std::endl; 186 186 } 187 187 188 188 for(EdgeIt e=flowG.first<EdgeIt>(); flowG.valid(e); flowG.next(e)) { 189 std::cout << node_name.get(flowG. tail(e)) << "-"<< cap.get(e) << "->" << node_name.get(flowG.head(e)) << " ";189 std::cout << node_name.get(flowG.source(e)) << "-"<< cap.get(e) << "->" << node_name.get(flowG.target(e)) << " "; 190 190 } 191 191 */ … … 197 197 std::cout << "out edges: "; 198 198 for(OutEdgeIt j=flowG.first<OutEdgeIt>(i); flowG.valid(j); flowG.next(j)) 199 std::cout << node_name.get(flowG. tail(j)) << "-"<< cap.get(j) << "->" << node_name.get(flowG.head(j)) << " ";199 std::cout << node_name.get(flowG.source(j)) << "-"<< cap.get(j) << "->" << node_name.get(flowG.target(j)) << " "; 200 200 std::cout << "in edges: "; 201 201 for(InEdgeIt j=flowG.first<InEdgeIt>(i); flowG.valid(j); flowG.next(j)) 202 std::cout << node_name.get(flowG. tail(j)) << "-"<< cap.get(j) << "->" << node_name.get(flowG.head(j)) << " ";202 std::cout << node_name.get(flowG.source(j)) << "-"<< cap.get(j) << "->" << node_name.get(flowG.target(j)) << " "; 203 203 std::cout << std::endl; 204 204 } … … 211 211 std::cout << "out edges: "; 212 212 for(OutEdgeIt j=flowG.first<OutEdgeIt>(i); flowG.valid(j); flowG.next(j)) 213 std::cout << node_name.get(flowG. tail(j)) << "-"<< cap.get(j) << "->" << node_name.get(flowG.head(j)) << " ";213 std::cout << node_name.get(flowG.source(j)) << "-"<< cap.get(j) << "->" << node_name.get(flowG.target(j)) << " "; 214 214 std::cout << "in edges: "; 215 215 for(InEdgeIt j=flowG.first<InEdgeIt>(i); flowG.valid(j); flowG.next(j)) 216 std::cout << node_name.get(flowG. tail(j)) << "-"<< cap.get(j) << "->" << node_name.get(flowG.head(j)) << " ";216 std::cout << node_name.get(flowG.source(j)) << "-"<< cap.get(j) << "->" << node_name.get(flowG.target(j)) << " "; 217 217 std::cout << std::endl; 218 218 } … … 229 229 max_flow_test.augmentOnBlockingFlow<ListGraph>(); 230 230 for(EdgeIt e=flowG.template first<EdgeIt>(); flowG.valid(e); flowG.next(e)) { 231 std::cout<<"("<<flowG. tail(e)<< "-"<<flow.get(e)<<"->"<<flowG.head(e)<<") ";231 std::cout<<"("<<flowG.source(e)<< "-"<<flow.get(e)<<"->"<<flowG.target(e)<<") "; 232 232 } 233 233 std::cout<<std::endl; 234 234 max_flow_test.augmentOnBlockingFlow<ListGraph>(); 235 235 for(EdgeIt e=flowG.template first<EdgeIt>(); flowG.valid(e); flowG.next(e)) { 236 std::cout<<"("<<flowG. tail(e)<< "-"<<flow.get(e)<<"->"<<flowG.head(e)<<") ";236 std::cout<<"("<<flowG.source(e)<< "-"<<flow.get(e)<<"->"<<flowG.target(e)<<") "; 237 237 } 238 238 std::cout<<std::endl;*/ … … 242 242 while (max_flow_test.augmentOnShortestPath()) { 243 243 for(EdgeIt e=flowG.template first<EdgeIt>(); flowG.valid(e); flowG.next(e)) { 244 std::cout<<"("<<flowG. tail(e)<< "-"<<flow.get(e)<<"->"<<flowG.head(e)<<") ";244 std::cout<<"("<<flowG.source(e)<< "-"<<flow.get(e)<<"->"<<flowG.target(e)<<") "; 245 245 } 246 246 std::cout<<std::endl; … … 261 261 std::cout << "maximum flow: "<< std::endl; 262 262 for(EdgeIt e=flowG.template first<EdgeIt>(); flowG.valid(e); flowG.next(e)) { 263 std::cout<<"("<<flowG. tail(e)<< "-"<<flow.get(e)<<"->"<<flowG.head(e)<<") ";263 std::cout<<"("<<flowG.source(e)<< "-"<<flow.get(e)<<"->"<<flowG.target(e)<<") "; 264 264 } 265 265 std::cout<<std::endl; -
src/work/marci/preflow_bug.cc
r921 r986 46 46 Graph::EdgeIt e; 47 47 for (g.first(e); g.valid(e); g.next(e)) 48 cout << 1+g.id(g. tail(e)) << "->" << 1+g.id(g.head(e)) << " cap: " << cap[e] << " preflow: " << flow[e] << endl;48 cout << 1+g.id(g.source(e)) << "->" << 1+g.id(g.target(e)) << " cap: " << cap[e] << " preflow: " << flow[e] << endl; 49 49 } 50 50 { … … 76 76 Graph::EdgeIt e; 77 77 for (g.first(e); g.valid(e); g.next(e)) { 78 if (cut[g. tail(e)] && !cut[g.head(e)]) {79 cout << 1+g.id(g. tail(e)) << "->" << 1+g.id(g.head(e))78 if (cut[g.source(e)] && !cut[g.target(e)]) { 79 cout << 1+g.id(g.source(e)) << "->" << 1+g.id(g.target(e)) 80 80 << "(forward edge) flow: " << flow[e] 81 81 << " cap: " << cap[e]<< endl; … … 83 83 std::cout << "Slackness does not hold!" << std::endl; 84 84 } 85 if (!cut[g. tail(e)] && cut[g.head(e)]) {86 cout << 1+g.id(g. tail(e)) << "->" << 1+g.id(g.head(e))85 if (!cut[g.source(e)] && cut[g.target(e)]) { 86 cout << 1+g.id(g.source(e)) << "->" << 1+g.id(g.target(e)) 87 87 << "(backward edge) flow: " << flow[e] << endl; 88 88 if (flow[e]!=0) … … 106 106 107 107 // FOR_EACH_LOC(Graph::EdgeIt, e, g) { 108 // if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])109 // std::cout << "Slackness does not hold!" << std::endl; 110 // if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)108 // if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 109 // std::cout << "Slackness does not hold!" << std::endl; 110 // if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 111 111 // std::cout << "Slackness does not hold!" << std::endl; 112 112 // } … … 122 122 123 123 // FOR_EACH_LOC(Graph::EdgeIt, e, g) { 124 // if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])125 // std::cout << "Slackness does not hold!" << std::endl; 126 // if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)124 // if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 125 // std::cout << "Slackness does not hold!" << std::endl; 126 // if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 127 127 // std::cout << "Slackness does not hold!" << std::endl; 128 128 // } … … 149 149 150 150 // FOR_EACH_LOC(Graph::EdgeIt, e, g) { 151 // if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])152 // std::cout << "Slackness does not hold!" << std::endl; 153 // if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)151 // if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 152 // std::cout << "Slackness does not hold!" << std::endl; 153 // if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 154 154 // std::cout << "Slackness does not hold!" << std::endl; 155 155 // } … … 178 178 179 179 // FOR_EACH_LOC(Graph::EdgeIt, e, g) { 180 // if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])181 // std::cout << "Slackness does not hold!" << std::endl; 182 // if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)180 // if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 181 // std::cout << "Slackness does not hold!" << std::endl; 182 // if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 183 183 // std::cout << "Slackness does not hold!" << std::endl; 184 184 // } … … 196 196 197 197 // FOR_EACH_LOC(Graph::EdgeIt, e, g) { 198 // if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])199 // std::cout << "Slackness does not hold!" << std::endl; 200 // if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)198 // if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 199 // std::cout << "Slackness does not hold!" << std::endl; 200 // if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 201 201 // std::cout << "Slackness does not hold!" << std::endl; 202 202 // } … … 214 214 215 215 // FOR_EACH_LOC(Graph::EdgeIt, e, g) { 216 // if (cut[g. tail(e)] && !cut[g.head(e)] && !flow[e]==cap[e])217 // std::cout << "Slackness does not hold!" << std::endl; 218 // if (!cut[g. tail(e)] && cut[g.head(e)] && flow[e]>0)216 // if (cut[g.source(e)] && !cut[g.target(e)] && !flow[e]==cap[e]) 217 // std::cout << "Slackness does not hold!" << std::endl; 218 // if (!cut[g.source(e)] && cut[g.target(e)] && flow[e]>0) 219 219 // std::cout << "Slackness does not hold!" << std::endl; 220 220 // } -
src/work/marci/preflow_demo_athos.cc
r921 r986 29 29 //int cut_value=0; 30 30 //for(EachEdgeIt e=G.first<EachEdgeIt>(); e.valid(); ++e) { 31 // if (cut.get(G. tail(e)) && !cut.get(G.head(e))) cut_value+=cap.get(e);31 // if (cut.get(G.source(e)) && !cut.get(G.target(e))) cut_value+=cap.get(e); 32 32 //} 33 33 double post_time=currTime(); 34 34 //std::cout << "maximum flow: "<< std::endl; 35 35 //for(EachEdgeIt e=G.first<EachEdgeIt>(); e.valid(); ++e) { 36 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";36 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 37 37 //} 38 38 //std::cout<<std::endl; -
src/work/marci/preflow_demo_jacint.cc
r921 r986 32 32 int cut_value=0; 33 33 for(EachEdgeIt e=G.first<EachEdgeIt>(); e.valid(); ++e) { 34 if (cut.get(G. tail(e)) && !cut.get(G.head(e))) cut_value+=cap.get(e);34 if (cut.get(G.source(e)) && !cut.get(G.target(e))) cut_value+=cap.get(e); 35 35 } 36 36 double post_time=currTime(); 37 37 //std::cout << "maximum flow: "<< std::endl; 38 38 //for(EachEdgeIt e=G.first<EachEdgeIt>(); e.valid(); ++e) { 39 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";39 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 40 40 //} 41 41 //std::cout<<std::endl; … … 56 56 int cut_value=0; 57 57 for(EachEdgeIt e=G.first<EachEdgeIt>(); e.valid(); ++e) { 58 if (cut.get(G. tail(e)) && !cut.get(G.head(e))) cut_value+=cap.get(e);58 if (cut.get(G.source(e)) && !cut.get(G.target(e))) cut_value+=cap.get(e); 59 59 } 60 60 double post_time=currTime(); 61 61 //std::cout << "maximum flow: "<< std::endl; 62 62 //for(EachEdgeIt e=G.first<EachEdgeIt>(); e.valid(); ++e) { 63 // std::cout<<"("<<G. tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";63 // std::cout<<"("<<G.source(e)<< "-"<<flow.get(e)<<"->"<<G.target(e)<<") "; 64 64 //} 65 65 //std::cout<<std::endl;
Note: See TracChangeset
for help on using the changeset viewer.