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)); }