Beispiel #1
0
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());
}
Beispiel #2
0
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);
	}
}
Beispiel #3
0
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;




}