在我的实现中,我需要在2D圆环中找到4个不相交的生成树。假设所有链接都是双向的。和双向链接不相交。
Ex:我的2D圆环是3 * 3
| | |
--0-1-2--
| | |
--3-4-5--
| | |
--6-7-8--
| | |
所以,这里的每个链接实际上代表一个双向链接,例如0和3之间有两条边。一条从0到3,一条从3到0。
在输出中,我应该得到4个不相交的生成树。
虽然我已经考虑过某种算法,但它以某种方式失败了。
算法:
我有以邻接矩阵形式表示的圆环。并且在位置AM [0] [3]和AM [3] [0]的邻接矩阵中,0和3之间的链接由1表示。 节点由(node_number,parent,weight)组成 最初我维护一个priorList,其中所有节点都设置为它们的(node_number,-1,INT_MAX),但生成树的根设置为(node_number,-1,0)
它将给出1 MST,但是在从第一个MST的计算中得到的第二个MST从第一个MST的计算中留下作为输出的第二个MST时被卡住(我的意思是,如果我已经在第一个MST中使用了一些边缘,那么我会从矩阵中删除那些边缘。)
请记住,所有4个生成树应该从相同的给定根开始,并尝试使用Prim算法的变体(http://en.wikipedia.org/wiki/Prim%27s_algorithm)。
到目前为止,我还不知道任何其他算法,但请查看是否有人可以提供帮助。