matlab 无向拓扑图,无向图绘画树状拓扑图算法

基于目前Network项目需要,研究相关树形算法

该需求难点如下:

1、目前拓扑图是无向图,而树大多数都是基于有向图来画的,无法确定根节点

2、网络拓扑中存在回环问题,导致链路可能会存在重叠问题

针对问题1,目前根据所有节点的连通度来计算得出连通度最大的点作为根节点。

问题2目前没有完美的解决方案。

目前这边demo的算法分为2种

1、根据每层叶子节点个数切割X轴坐标,然后平均分布在一条直线上。

效果图如下:

0bc6b890a961?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

代码比较简单,暂时就不公布了。

2、类似于一种递归的方式,从第一层叶子节点开始切割X轴,第二层叶子节点的范围不能超过上层节点之间的节点间距。

直接看图:

0bc6b890a961?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

这种方式的弊端显而易见,如果后面存在大量叶子节点的枝节点,那么这里的叶子会非常密集

改变一下根节点样子或许会好一些,但是这边会出现回路重合链路问题:

0bc6b890a961?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

下面贴上部分代码:

public ResponseEntity getTreeTopo() {

NodeList nodeList = new NodeList();

HashMap nodeCountMap = new HashMap<>();

//统计所有节点的连通度

for

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值