`
把酒泯恩仇
  • 浏览: 27095 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

#树算法#最奇葩的PYTHON代码

阅读更多

请查看原文:

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生成

附上代码:

  1. def reduced_graph(subtree, v, graph):  
  2.     n = graph[subtree]  
  3.     if len(n) == 0:  
  4.         v[subtree] = []  
  5.         return [subtree]  
  6.     elif len(n) == 1#one child  
  7.         r = reduced_graph(n[0], v, graph)  
  8.         v[subtree] = r  
  9.         if len(v[n[0]]) == 1:  
  10.             del v[n[0]]  
  11.         return v[subtree]  
  12.     else:  
  13.         next_sub = []  
  14.         for c in n:  
  15.             r = reduced_graph(c, v, graph)  
  16.             next_sub.append(r[0])  
  17.             if len(v[c]) == 1:  
  18.                 del v[c]  
  19.         v[subtree] = next_sub  
  20.         return [subtree]  

调用方法:

  1. v = {}  
  2. graph = {0:[1], 1:[2], 2:[34], 3:[5], 4:[6], 5:[7,8], 6:[9], 9:[], 7:[11], 11:[], 8:[]}  
  3. root = 0  
  4. 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代码和数据样本

    资源中包含完整的C4.5决策树算法Python代码和测试数据,其中有4个文件:C45.py是算法的实现代码,treePlotter.py是绘制决策树代码,PlayData.txt是样本数据,C45test.py用来构建、绘制并测试决策树,您可以运行该...

    决策树算法C5.0-in-Python-master

    本项目"决策树算法C5.0-in-Python-master"很可能是一个包含C5.0决策树算法Python实现的代码仓库,可能包括教程、示例和相关的数据集。 决策树是一种模型,通过创建分叉结构来做出预测或决策。它通过学习特征的重要...

    决策树算法及Python实现内含PYTHON源码

    决策树,决策树算法及Python实现内含PYTHON源码决策树算法及Python实现内含PYTHON源码

    数学建模常用的30个常用算法(Python代码).zip

    数学建模常用的30个常用算法(Python代码)数学建模常用的30个常用算法(Python代码)数学建模常用的30个常用算法(Python代码)数学建模常用的30个常用算法(Python代码)数学建模常用的30个常用算法(Python代码)数学建模...

    FJSP 的遗传算法的 Python 实现_python_代码_下载

    在这个“FJSP的遗传算法Python实现”项目中,开发者提供了一种将遗传算法应用于FJSP的解决方案。Python作为一种强大的编程语言,因其简洁的语法和丰富的库支持,常被用于科学计算和数据分析,包括优化问题的求解。 ...

    去雨算法(python代码)

    这里提到的"去雨算法(python代码)"是一种基于Python实现的解决方案,对于进行气象数据分析、自动驾驶、监控视频处理等场景非常有用。下面将详细介绍去雨算法的原理以及Python实现的关键点。 去雨算法通常分为两大...

    列文伯格-马夸尔特算法LM算法(基于Python编程语言实现)

    在Python中实现LM算法,我们可以利用这些库提供的功能,简化代码编写并提高效率。 以下是LM算法在Python中实现的一般步骤: 1. **定义目标函数**:这是我们要最小化的函数,通常表示为模型预测值与真实值之差的...

    麻雀搜索算法(Sparrow Search Algorithm , SSA)的python实现_python_代码_下载

    "SSA_python"这个文件名很可能是一个包含了SSA算法Python实现的代码文件。它可能包括了以上提到的所有步骤,使用Python的数据结构和控制流语句来模拟麻雀的群体行为,实现搜索和优化的过程。对于初学者,阅读并理解...

    引力搜索算法 Gravitational Search Algorithm(GSA)优化算法 Python示例代码

    本项目演示了如何使用 Gravitational Search Algorithm(GSA)优化算法来解决优化问题,并绘制优化过程中的收敛曲线。Gravitational Search Algorithm(GSA)是一种群体智能算法,灵感来自于物体之间的引力和质量...

    我用Python写的一些算法

    我用Python写的一些算法 #算法 ##排序算法:sort文件夹下面 冒泡排序 插入排序 归并排序 快速排序 随机快速排序 选择排序 堆排序 计数排序 ##查找算法 二分查找算法 第k小数选择算法 随机第k小数选择算法 计算...

    python算法趣味题目

    ### Python算法趣味题目详解 #### 题目背景与概述 本文将介绍并解析两道有趣的Python算法题目,旨在帮助读者更好地理解Python语言的特点及其在处理字符串方面的优势。通过具体的示例代码,我们将深入探讨Python...

    SCE-UA优化算法,python和MATLAB代码

    SCE-UA优化算法,python和MATLAB代码,已通过常见的测试函数。 更多算法实现可参考以下博客,感谢原博主的精彩讲解。 【算法】02 SCE-UA简介及源代码 ...

    灰狼优化算法python源代码,可直接运行

    灰狼优化算法python源代码,可直接运行,关键部分注释清楚。适应度函数是sphere,GWO.py运行结果包括最优解和最佳适应度,以及进化曲线图像

    Eclat算法Python实现

    在"**EclatOne**"这个文件中,可能包含了实现上述步骤的Python代码。实际使用时,你可以根据自己的数据集调整参数,如最小支持度和最小置信度,以获得有意义的频繁项集和关联规则。理解并应用Eclat算法可以帮助我们...

    货位优化遗传算法python代码.zip

    标题中的“货位优化遗传算法python代码”是指利用遗传算法解决货位布局优化问题的Python实现。遗传算法是一种模拟自然选择和遗传机制的全局优化方法,广泛应用于解决复杂优化问题,如物流仓储中的货位分配。 在描述...

    A*算法学习(python代码实现)

    Python代码实现时,可能会用到`heapq`库来实现优先队列,`numpy`库处理数组操作,以及`random`库生成随机障碍物。通过运行`my_Astar_test.py`,我们可以看到算法在不同地图上的寻路效果,直观地理解A*算法的工作原理...

    数学建模常用算法 Python 程序代码+数据

    第1章 Python语言快速入门 第2章 数据处理与可视化 第3章 Python在高等数学和工程数学的应用 第4章 概率论与数理统计 第5章 线性规划 第6章 整数规划与非线性规划 第7章 插值与拟合 第8章 微分方程模型 第9章 综合...

    聚类算法聚类算法代码附MATLAB & python代码

    算法步骤: (1) 首先我们选择一些类/组,并随机初始化它们各自的中心点。中心点是与每个数据点向量长度相同的位置。这需要我们提前预知类的数量(即中心点的数量)。 (2) 计算每个数据点到中心点的距离,数据点距离...

    算法分析和数据结构 Python描述版

    - **代码可读性强**:Python的代码可读性高,易于维护,这有助于快速开发和调试算法。 - **丰富的第三方库支持**:Python拥有大量的第三方库,如NumPy、Pandas等,可以高效地处理大量数据,简化算法实现过程。 - ...

    亚像素边缘定位算法 的纯Python实现_python代码_下载_subpixel-edges

    亚像素边缘定位算法 的纯Python实现_python代码_下载_subpixel-edges

Global site tag (gtag.js) - Google Analytics