请查看原文:
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/
如果您想转载本博客,请注明出处
如果您对本文有意见或者建议,欢迎留言
分享到:
相关推荐
资源中包含完整的C4.5决策树算法Python代码和测试数据,其中有4个文件:C45.py是算法的实现代码,treePlotter.py是绘制决策树代码,PlayData.txt是样本数据,C45test.py用来构建、绘制并测试决策树,您可以运行该...
本项目"决策树算法C5.0-in-Python-master"很可能是一个包含C5.0决策树算法Python实现的代码仓库,可能包括教程、示例和相关的数据集。 决策树是一种模型,通过创建分叉结构来做出预测或决策。它通过学习特征的重要...
决策树,决策树算法及Python实现内含PYTHON源码决策树算法及Python实现内含PYTHON源码
数学建模常用的30个常用算法(Python代码)数学建模常用的30个常用算法(Python代码)数学建模常用的30个常用算法(Python代码)数学建模常用的30个常用算法(Python代码)数学建模常用的30个常用算法(Python代码)数学建模...
在这个“FJSP的遗传算法Python实现”项目中,开发者提供了一种将遗传算法应用于FJSP的解决方案。Python作为一种强大的编程语言,因其简洁的语法和丰富的库支持,常被用于科学计算和数据分析,包括优化问题的求解。 ...
这里提到的"去雨算法(python代码)"是一种基于Python实现的解决方案,对于进行气象数据分析、自动驾驶、监控视频处理等场景非常有用。下面将详细介绍去雨算法的原理以及Python实现的关键点。 去雨算法通常分为两大...
在Python中实现LM算法,我们可以利用这些库提供的功能,简化代码编写并提高效率。 以下是LM算法在Python中实现的一般步骤: 1. **定义目标函数**:这是我们要最小化的函数,通常表示为模型预测值与真实值之差的...
"SSA_python"这个文件名很可能是一个包含了SSA算法Python实现的代码文件。它可能包括了以上提到的所有步骤,使用Python的数据结构和控制流语句来模拟麻雀的群体行为,实现搜索和优化的过程。对于初学者,阅读并理解...
本项目演示了如何使用 Gravitational Search Algorithm(GSA)优化算法来解决优化问题,并绘制优化过程中的收敛曲线。Gravitational Search Algorithm(GSA)是一种群体智能算法,灵感来自于物体之间的引力和质量...
我用Python写的一些算法 #算法 ##排序算法:sort文件夹下面 冒泡排序 插入排序 归并排序 快速排序 随机快速排序 选择排序 堆排序 计数排序 ##查找算法 二分查找算法 第k小数选择算法 随机第k小数选择算法 计算...
### Python算法趣味题目详解 #### 题目背景与概述 本文将介绍并解析两道有趣的Python算法题目,旨在帮助读者更好地理解Python语言的特点及其在处理字符串方面的优势。通过具体的示例代码,我们将深入探讨Python...
SCE-UA优化算法,python和MATLAB代码,已通过常见的测试函数。 更多算法实现可参考以下博客,感谢原博主的精彩讲解。 【算法】02 SCE-UA简介及源代码 ...
灰狼优化算法python源代码,可直接运行,关键部分注释清楚。适应度函数是sphere,GWO.py运行结果包括最优解和最佳适应度,以及进化曲线图像
在"**EclatOne**"这个文件中,可能包含了实现上述步骤的Python代码。实际使用时,你可以根据自己的数据集调整参数,如最小支持度和最小置信度,以获得有意义的频繁项集和关联规则。理解并应用Eclat算法可以帮助我们...
标题中的“货位优化遗传算法python代码”是指利用遗传算法解决货位布局优化问题的Python实现。遗传算法是一种模拟自然选择和遗传机制的全局优化方法,广泛应用于解决复杂优化问题,如物流仓储中的货位分配。 在描述...
Python代码实现时,可能会用到`heapq`库来实现优先队列,`numpy`库处理数组操作,以及`random`库生成随机障碍物。通过运行`my_Astar_test.py`,我们可以看到算法在不同地图上的寻路效果,直观地理解A*算法的工作原理...
第1章 Python语言快速入门 第2章 数据处理与可视化 第3章 Python在高等数学和工程数学的应用 第4章 概率论与数理统计 第5章 线性规划 第6章 整数规划与非线性规划 第7章 插值与拟合 第8章 微分方程模型 第9章 综合...
算法步骤: (1) 首先我们选择一些类/组,并随机初始化它们各自的中心点。中心点是与每个数据点向量长度相同的位置。这需要我们提前预知类的数量(即中心点的数量)。 (2) 计算每个数据点到中心点的距离,数据点距离...
- **代码可读性强**:Python的代码可读性高,易于维护,这有助于快速开发和调试算法。 - **丰富的第三方库支持**:Python拥有大量的第三方库,如NumPy、Pandas等,可以高效地处理大量数据,简化算法实现过程。 - ...
亚像素边缘定位算法 的纯Python实现_python代码_下载_subpixel-edges