为了工作学习中防止忘记,特记下如此笔记,以供查阅。
最近在学图论,涉及到了最小生成树算法。
参考了两篇文章
并集查询
图论最小生成树
原代码复制后格式破坏,特意贴一下我清理后的python代码

# 构建图G,使用了邻接矩阵表示法,9999代表非直连
G =[[0,10,9999,9999,9999,11,9999,9999,9999],# a的邻居表[10,0,18,9999,9999,9999,12,12,9999],# b的邻居表
[9999,18,0,22,9999,9999,9999,8,9999],# c的邻居表
[9999,9999,22,0,20,9999,24,21,16],# d的邻居表
[9999,9999,9999,20,0,26,9999,9999,7],# e的邻居表
[11,9999,9999,9999,26,0,17,9999,9999],# f的邻居表
[9999,12,9999,24,9999,17,0,9999,19],# g的邻居表
[9999,12,8,21,9999,9999,9999,0,9999],# h的邻居表
[9999,9999,9999,16,7,9999,19,9999,0]]# i的邻居表# 构建顶点序号与符号对应集
v_dict ={}
v_strdict ={}
v_str ='abcdefghi'
for i in range(len(G)):v_dict[i]= v_str[i]
print(v_dict)
for i, value in enumerate(v_str):v_strdict[value]= i
print('v_strdict',v_strdict)# 构建边集
E =[(v_dict[u], v_dict[v], G[u][v])  for u in range(len(G)) for v in range(len(G[u])) if 0< G[u][v]< 9999 and u< v]print('E:',E)
# 对边集进行排序
E =sorted(E,key=lambda x:x[2])# 构建最小生成树
T =set()# 构建顶点连通子图
V =[0]* len(G)# 判断是否属于同一连通子图
def find_connect(V,v):while V[v]> 0:v= V[v]return v# 循环边
for e in E:#边的两个顶点是否已连通v1, v2= find_connect(V, v_strdict[e[0]]), find_connect(V, v_strdict[e[1]])if v1 !=v2:V[v1]= v2T.add(e) #将边加入最小生成树# 输出最小生成树
print(T)
# 输出代价
print(sum([t[2] for t in T]))

原来的博客对代码解释不够,通过我在并集查询中得到的信息,现在作出如下补充。
find_connect(V,v) 此函数中的V是一个保存每个节点父节点的列表,key是节点自身,value是父节点的代表值。所谓并集查询就是用集合中的一个元素代表集合,举个简单的例子,张三有儿子,他儿子有孙子,但是每个人只知道他的儿子在哪,现在需要为他全家办理医保,现在只要找到他爷爷一代一代往下问就能都知道他们的住址了。
可以利用此原理来判断一个节点是否在一棵树(联通图,因为树就是连通图,连通图的概念中包含树)中,只要依次将图中的边根据权重排序,逐个加入结果集T中,并保存当前节点为父节点,只要两个点不构成一个环即可。这就是最小生成树的算法思路。

最小生成树python算法实践相关推荐

  1. 大学计算机python期末考试用什么软件_大学计算机--Python算法实践_章节测验,期末考试,慕课答案查询公众号...

    [单选题]IP 地址10.0.10.65 和掩码255.255.255.224 代表的是一个 A. 主机地址 B. 网络地址 C. 广播地址 D. 以上都不对 [单选题]一般而言,在常年定期.定量交易 ...

  2. 大学计算机python答案在哪找_中国大学大学计算机Python算法实践答案网课MOOC考试期末慕课答案...

    [判断题] 如果组件全部自由度被限制,则称完全约束,在图形窗口中看不到约束符号.如果组件有几个自由度没有被限制,则称为欠约束.在装配中,允许欠约束存在. [单选] 男,2岁,出生时正常.3个月后皮肤和 ...

  3. python统计套利_清华编程高手尹成带你基于算法实践python量化交易

    清华编程高手尹成带你基于算法实践python量化交易 量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种"大概率"事件以制定策 ...

  4. python一元线性回归算法_6一元线性回归_清华编程高手尹成带你基于算法实践python量化交易_其他视频-51CTO学院...

    清华编程高手尹成带你基于算法实践python量化交易 量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种"大概率"事件以制定策 ...

  5. 莫烦Python代码实践(一)——Q-Learning算法工程化解析

    提示:转载请注明出处,若本文无意侵犯到您的合法权益,请及时与作者联系. 莫烦Python代码实践(一)--Q-Learning算法工程化解析 声明 一.Q-Learning算法是什么? 二.Q-Lea ...

  6. python算法交易工程师_清华编程高手尹成带你基于算法实践python量化交易

    清华编程高手尹成带你基于算法实践python量化交易 量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种"大概率"事件以制定策 ...

  7. python实训总结报告书_20172304 实验四python综合实践报告

    20172304 实验四python综合实践报告 姓名:段志轩 学号:20172304 指导教师:王志强 课程:Python程序设计 实验时间:2020年5月13日至2020年6月14日 实验分析 本 ...

  8. java python算法_用Python,Java和C ++示例解释的排序算法

    java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...

  9. 这可能是史上最全的Python算法集!

    来源 | CSDN(ID:CSDNnews ) 本文是一些机器人算法(特别是自动导航算法)的Python代码合集. 其主要特点有以下三点:选择了在实践中广泛应用的算法:依赖最少:容易阅读,容易理解每个 ...

最新文章

  1. Python 读取文本时的 read/readline/readlines
  2. 程序员应该学习C语言的十个理由
  3. 如何让python调用C和C++代码
  4. 【sprinb-boot】@ComponentScan 使用
  5. Machinations——可视化游戏设计
  6. linux做定时数据库备份,Linux实现定时备份数据库
  7. centos中配置java视频教程_安装CentOs
  8. 织梦cms响应式站长导航分类网站模板(自适应手机版)
  9. 程序员删库被判 6 年,公司损失近亿,云原生时代如何打造安全防线?
  10. 兼容浏览器的insertAdjacentHTML
  11. 阿里P7跳槽后曝光薪资截图:新公司月入税后五万多,很满足!
  12. SHELL中获取函数返回值
  13. apache http自动跳转https_NGINX使用rewrite实现http 跳转 https
  14. Java面试题--搜索(solrelasticsearch)
  15. CPC软件使用 专利申请说明书附图插入(简单粗暴)CPC软件安装
  16. 华为认证hcia含金量_华为HCIA认证含金量如何?
  17. fences(桌面整理软件)与eDiary3.3.3下载链接
  18. 八皇后问题 (25分)
  19. 游戏开发技术帖:光线追踪技术的误点和难点
  20. 投稿时文章脚注数字如何去掉

热门文章

  1. SpringSecurity启动流程源码解析
  2. 三十多岁就别转行做算法了
  3. 经典.net面试(net面试题汇总)20200227版本
  4. 江苏省二级c语言考试电子书,江苏省二级c语言上机考试例题集1-20
  5. CentOS6安装nginx+Tomcat7集群并实现自启动
  6. 网络骨架:Backbone(神经网络基本组成——卷积层)
  7. Qt for Bluetooth 蓝牙开发系列文章总纲
  8. 【Linux操作系统】实验一
  9. Windows 打开cmd/dos窗口的12种方式(全网最全)
  10. GXT4.0 BorderLayoutContainer布局