void network::randomizeWeights (function<baseType()> r, nodeBlueprint *n1 , nodeBlueprint *n2 ) { network::edgeList toChange; edgesBetween(toChange,n1, n2); edgeIterator it; for (it = toChange.begin(); it != toChange.end(); it++) if (getEdgeInfo(*it).theEdgeKind & _weighted_) setWeight(*it,r()); }
void network::edgesBetween(list<edgeDescriptor> &res, nodeBlueprint *sourceNode, nodeBlueprint *targetNode) { nodeIterator va; // edgeIterator ea,ee; for (va = theNodes.begin(); va != theNodes.end(); va++) { if ( match ( sourceNode,*va )) edgesBetween(res, *va, targetNode); } }
bool network::isGraph() { nodeList vl; nodeIterator vi; verticesMatching (vl, _dynNode_); edgeList el; for (vi = vl.begin(); vi != vl.end(); vi++) { edgesBetween (el, *vi, _dynNode_); // el.sort ([&](edgeDescriptor l, edgeDescriptor r) -> bool { return getTarget(l) < getTarget (r); } ) el.sort (compareByTargets); edgeIterator ePrev = el.begin(); if (getTarget (*ePrev) == getSource(*ePrev)) return 0; edgeIterator eSucc = el.begin(); eSucc ++; for (; eSucc != el.end(); ePrev++, eSucc++) { if ((getTarget(*ePrev) == getTarget (*eSucc)) || (getTarget(*eSucc) == getSource (*eSucc))) return 0; } el.clear(); } return 1; }