コード例 #1
0
ファイル: PPETask.cpp プロジェクト: JonLee9527/AGR_Algorithm
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);
		}
	}
}
コード例 #2
0
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;
}
コード例 #3
0
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;
}
コード例 #4
0
ファイル: graphAlgorithms.c プロジェクト: Alecs94/DSA-lab
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");
}