首页 > 代码库 > 数据结构之图应用最小生成树

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

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

最小生成树说白了就是用最少的边把所有的顶点连接起来。最小生成树是不唯一的,但是最小生成树满足边的数量比点的数量少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走过的路径必定是最小生成树。

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