找到图中所有生成树的matlab实现

寻找所有生成树的算法可以非常复杂,可以找到与此相关的研究论文。如果要追求效率则需要非常复杂的算法。但是本文介绍的是非常简单暴力搜索的方法。想法很简单:如果一个图有n个点,就在这张图的所有m个边中选出n-1条边,再判断这n-1条边和这n个点组成的是不是连通图,如果是连通图,则这n个点和n-1条边组成了一个生成树。

判断连通图算法

网上有什么矩阵幂和warshell算法,warshell算法好像挺高端的,但是网上搜索的大部分代码有问题(除非使用专业函数),在我们要解决的问题里也不需要复杂,从第一个点开始找连通的点,再依次找连通点的联通点,最后要是找到的点的个数就是图中点的个数,就说明是连通图。

    current = zeros(1,size);
    current(1) = 1;
    %这里的mark标记找到了多少点,要是找到就标记为1
    mark = zeros(1,size);
    mark(1) = 1;
    while sum(current) > 0
        next = zeros(1,size);
        for j = 1:size
        
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值