void PPETask::dataPreHandle() { //all edges adjustAntiClockWise(getAllEdges()); if (farmEdge.size() < 3) printLog("farmEdge.size() < 3", true); if (farmEdge.size() == 0) printLog("farmEdge.size() == 0", true); //offsetSprayInflation farmEdge.inflate(sprayingOffset); for (int i = 0; i < (int)nsz_blank.size(); i++) nsz_blank[i].deflate(sprayingOffset); //offsetSprayInflation for (int i = 0; i < (int)nsz_around.size(); i++) nsz_around[i].inflate(sprayingOffset); for (int i = 0; i < (int)nsz_height.size(); i++) nsz_height[i].inflate(sprayingOffset); for (int i = 0; i < (int)obs_around_outside.size(); i++) obs_around_outside[i].inflate(sprayingOffset); //all edges vector<DjiEdge* > tem=getAllEdges(); for (int i = 0; i < (int)tem.size(); i++) { tem[i]->calOuterRect(); } tem = getAllEdges(); for (int i = 0; i < (int)tem.size(); i++) { for (int j = i + 1; j < (int)tem.size(); j++) { if (isIntersection(*tem[i], *tem[j])) printLog("two edge intersected, in dataPreHandle",true); } } }
string SeqTreeAPI::layoutSeqTree(int maxX, int maxY, int yInt, vector<SeqTreeEdge>& edges) { if (!m_seqTree) return ""; SeqTreeRootedLayout treeLayout(yInt); treeLayout.calculateNodePositions(*m_seqTree, maxX, maxY); getAllEdges(edges); string param = GetTreeAlgorithmName(m_treeOptions.clusteringMethod); param.append(" / " + DistanceMatrix::GetDistMethodName(m_treeOptions.distMethod)); if (DistanceMatrix::DistMethodUsesScoringMatrix(m_treeOptions.distMethod) ) { param.append(" / " + GetScoringMatrixName(m_treeOptions.matrix)); } return param; }
CGraph CPathFinder::kruskalFindMST() const { std::vector<CEdge> edges = getAllEdges(); std::sort(edges.begin(), edges.end()); CDisjointSetUnion disjointSetUnion; disjointSetUnion.makeFullUnion(points.size()); CGraph minimumSpanningTree(pointsAmount); for (CEdge currentEdge : edges) { if (disjointSetUnion.find(currentEdge.firstVertexIndex) != disjointSetUnion.find(currentEdge.secondVertexIndex)) { minimumSpanningTree.addEdgeUndirected(currentEdge); disjointSetUnion.unite(currentEdge.firstVertexIndex, currentEdge.secondVertexIndex); } } return minimumSpanningTree; }
int bellman(int startNode) { printf("\nBellman Ford Algorithm started\n"); int i; int * distances = (int*)malloc(nrOfVerteces * sizeof(int)); int * previous = (int*)malloc(nrOfVerteces * sizeof(int)); for(i=0; i<nrOfVerteces; i++) { distances[i] = MAX; previous[i]=UNDEFINED; } distances[startNode]=0; edgeT* edges=getAllEdges(); int nrOfEdges=getNumberOfEdges(); for(i=1;i<nrOfVerteces;i++) { int j; for(j=0;j<nrOfEdges;j++) { int u=edges[j].source; int v=edges[j].destination; ///relax the edge if (distances[v]>distances[u]+edges[j].weight) { distances[v]=distances[u]+edges[j].weight; previous[v]=u; } } } for(i=0; i<nrOfVerteces; i++) { int u=i; if(i!=startNode) { while(previous[u] != UNDEFINED) { push(u); u = previous[u]; } printf("Path from %c to %c is: %c ",startNode + 65, i+65, startNode + 65); while(!isEmptyStack()) { printf("-> %c ",peekStack()->content + 65); pop(); } printf("\n"); } } for(i=0;i<nrOfEdges;i++) { int u=edges[i].source; int v=edges[i].destination; ///relax the edge if (distances[v]>distances[u]+edges[i].weight) { printf("Bellman Ford Algorithm ended\n"); return 0; } } printf("Bellman Ford Algorithm ended\n"); }