请查看原文:
http://www.ibaiyang.org/2012/12/09/%E6%A0%91%E7%AE%97%E6%B3%95%E6%9C%80%E5%A5%87%E8%91%A9%E7%9A%84python%E4%BB%A3%E7%A0%81/
这一个月是最苦逼的日子,因为在深圳先进研究院的最后实习的日子里,我和我导师在为了siggraph奋斗着,也希望能在本科阶段发上一篇论文,哈哈。
空闲之余,来分享一下研究过程中用到的一个树的算法吧。本算法的目的非常简单,就是剔除树的中间节点,保留分支节点。如下图要求:

转化如下

以上图是由http://www.graphviz.org/doc/info/lang.html生成
附上代码:
- def reduced_graph(subtree, v, graph):
- n = graph[subtree]
- if len(n) == 0:
- v[subtree] = []
- return [subtree]
- elif len(n) == 1:
- r = reduced_graph(n[0], v, graph)
- v[subtree] = r
- if len(v[n[0]]) == 1:
- del v[n[0]]
- return v[subtree]
- else:
- next_sub = []
- for c in n:
- r = reduced_graph(c, v, graph)
- next_sub.append(r[0])
- if len(v[c]) == 1:
- del v[c]
- v[subtree] = next_sub
- return [subtree]
调用方法:
- v = {}
- graph = {0:[1], 1:[2], 2:[3, 4], 3:[5], 4:[6], 5:[7,8], 6:[9], 9:[], 7:[11], 11:[], 8:[]}
- root = 0
- reduced_graph(root, v, graph)
图表示方法是:邻接矩阵表示法。
为什么说这个python代码非常奇怪呢,因为reduced_graph函数本身也返回值,其实参数V也是返回值。等项目结束后,希望能重构一下这个奇葩的代码。
在过程中还发现 len(n) == 0 没有 n==[] 高效,我也测试了二者的代码,后者快了N倍,可能是由于函数调用开销比较大吧。
-----------------打造高质量的文章 更多关注 把酒泯恩仇---------------
为了打造高质量的文章,请 推荐 一下吧。。。。谢谢了,请关注我后续的文章,会更精彩哦
请关注sina微博:http://weibo.com/baiyang26
把酒泯恩仇官方博客:http://www.ibaiyang.org 【推荐用google reader订阅】
把酒泯恩仇官方豆瓣:http://www.douban.com/people/baiyang26/
如果您想转载本博客,请注明出处
如果您对本文有意见或者建议,欢迎留言
分享到:
相关推荐
Entropy = 系统的凌乱程度,使用算法ID3, C4.5和C5.0生成树算法使用熵。这一度量是基于信息学理论中熵的概念。 决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点...
Hoeffding 树算法的 Python 实现,也称为超快速决策树 (VFDT)。 霍夫丁树是用于数据流中分类任务的决策树。 这个实现最初是基于Weka的 Hoeffding Tree 以及 Geoff Hulten 和 Pedro Domingos 的原创作品,VFML。...
1、资源配合博文《【python代码实现】决策树分类算法》、《【python代码实现】朴素贝叶斯分类算法》、《【python代码实现】人工神经网络分类算法及其实战案例(股票价格波动分析)》实操可掌握: 2、决策树分类算法...
本项目"决策树算法C5.0-in-Python-master"很可能是一个包含C5.0决策树算法Python实现的代码仓库,可能包括教程、示例和相关的数据集。 决策树是一种模型,通过创建分叉结构来做出预测或决策。它通过学习特征的重要...
决策树,决策树算法及Python实现内含PYTHON源码决策树算法及Python实现内含PYTHON源码
数学建模常用的30个常用算法(Python代码)数学建模常用的30个常用算法(Python代码)数学建模常用的30个常用算法(Python代码)数学建模常用的30个常用算法(Python代码)数学建模常用的30个常用算法(Python代码)数学建模...
鲸鱼优化算法python代码
在这个“FJSP的遗传算法Python实现”项目中,开发者提供了一种将遗传算法应用于FJSP的解决方案。Python作为一种强大的编程语言,因其简洁的语法和丰富的库支持,常被用于科学计算和数据分析,包括优化问题的求解。 ...
在 Python 中使用 MUSIC 和 ESPRIT 算法估计到达方向 效果展示: https://github.com/dengjunquan/DoA-Estimation-MUSIC-ESPRIT/blob/master/Figure_1.png
Python-louvain是一个用于执行社区检测的Python库,它实现了著名的Louvain算法。这个算法是一种高效的网络社区结构发现方法,特别适用于大规模图数据。在本文中,我们将深入探讨Louvain算法及其在Python中的应用。 ...
最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最
这是 APTED 算法的 Python 实现,它是计算树编辑距离的最先进的解决方案 ,它取代了 RTED 算法 输入 目前,我们只支持输入树的所谓括号表示法,例如,编码{A{B{X}{Y}{F}}{C}}对应于以下树: A / \ B C /|\ X Y...
python代码 算法设计 源代码 python代码 算法设计 源代码 python代码 算法设计 源代码 python代码 算法设计 源代码 python代码 算法设计 源代码 python代码 算法设计 源代码 python代码 算法设计 源代码 ...
2024版遗传算法详解 附python代码实现2024版遗传算法详解 附python代码实现2024版遗传算法详解 附python代码实现2024版遗传算法详解 附python代码实现2024版遗传算法详解 附python代码实现2024版遗传算法详解 附...
在Python中实现LM算法,我们可以利用这些库提供的功能,简化代码编写并提高效率。 以下是LM算法在Python中实现的一般步骤: 1. **定义目标函数**:这是我们要最小化的函数,通常表示为模型预测值与真实值之差的...
"SSA_python"这个文件名很可能是一个包含了SSA算法Python实现的代码文件。它可能包括了以上提到的所有步骤,使用Python的数据结构和控制流语句来模拟麻雀的群体行为,实现搜索和优化的过程。对于初学者,阅读并理解...
本项目演示了如何使用 Gravitational Search Algorithm(GSA)优化算法来解决优化问题,并绘制优化过程中的收敛曲线。Gravitational Search Algorithm(GSA)是一种群体智能算法,灵感来自于物体之间的引力和质量...
我用Python写的一些算法 #算法 ##排序算法:sort文件夹下面 冒泡排序 插入排序 归并排序 快速排序 随机快速排序 选择排序 堆排序 计数排序 ##查找算法 二分查找算法 第k小数选择算法 随机第k小数选择算法 计算...
光线追踪算法_100行python代码pdf.pdf 光线追踪算法(Ray Tracing)是一种用于生成照片级真实感图像的技术。该技术通过模拟光线在三维场景中的行为,生成高质量的图像。以下是关于光线追踪算法的知识点: 1. 场景...
2014 年 段 海 滨 教 授 通 过 归 纳 总 结 , 提 出 鸽 群 算 法(Pigeon-inspired Optimization PIO),PIO 是模拟鸽子归巢行为而设计出来的群智能优化算法。PIO 具有原理简明的特点、需要调整参数极少、易于被...