数据结构之图应用最小生成树

数据结构之图应用最小生成树

最小生成树说白了就是用最少的边把所有的顶点连接起来。最小生成树是不唯一的,但是最小生成树满足边的数量比点的数量少1.最小生成树不关心边的长度也不需要找到最短的路径,而是要找到最少数量的边,创建最小生成树的算法与图的搜索算法几乎相同。下边的例子是基于深度优先搜索算法实现的,在执行深度搜索的时候记录走过的边,就可以创建一个最小的生成树。

代码:

//最小生成树的算法
    public void mst()
    {
        //从0开始
        vertexs[0].wasVisited = true;
        //把这个点压入栈中
        myStack.push(0);
        while(!myStack.isEmpty())
        {
            int v1 = myStack.peek();
            int v = getAdjUnvisitedVertex(v1);
            if(v == -1)
            {
                myStack.pop();
            }else{
                vertexs[v].wasVisited = true;
                myStack.push(v);
                displayVertex(v1);
                displayVertex(v);
                System.out.print(" ");
            }
        }
        
        //如果栈已经为空就结束
        for(int i = 0;i<currentVertexs;i++)
        {
            vertexs[i].wasVisited = false;
        }
        
        
    }
    

最小生成树比较容易从深度优先搜索得到,这是因为DFS访问所有的点只访问了一次,因此DFS走过的路径必定是最小生成树。

posted on 2014-12-18 15:22  aicpcode  阅读(220)  评论(0编辑  收藏  举报

导航