Example #1
0
int ParseTree::addEdge(int fromNode, int toNode, int gEdge)
{
    int idx = edgeSet().size();

    for ( int i = 0; i < idx; ++i ) {
        if ( edgeSet()[i]->idx()[PtEdge::IDX_FROM] == fromNode &&
                edgeSet()[i]->idx()[PtEdge::IDX_TO] == toNode ) {
            RGM_LOG(error, "duplicated pt edge" );
            return -1;
        }
    }

    getEdgeSet().push_back( new PtEdge(fromNode, toNode, gEdge));
    getEdgeSet().back()->getIdx()[PtEdge::IDX_MYSELF] = idx;

    getNodeSet()[fromNode]->getIdxOutEdges().push_back(idx);
    getNodeSet()[toNode]->getIdxInEdges().push_back(idx);

    return idx;
}
EdgeSetIF* TabuSearchUtils::getEdgeSet(
		NeighborSolution const & spanningTreeNeighborWithCost) {
	return getEdgeSet(getMove(spanningTreeNeighborWithCost));
}