`
把酒泯恩仇
  • 浏览: 27173 次
  • 性别: 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/

如果您想转载本博客,请注明出处

如果您对本文有意见或者建议,欢迎留言

分享到:
评论

相关推荐

    决策树算法python代码实现

    Entropy = 系统的凌乱程度,使用算法ID3, C4.5和C5.0生成树算法使用熵。这一度量是基于信息学理论中熵的概念。 决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点...

    Hoeffding 树算法 的Python实现_python_代码_下载

    Hoeffding 树算法的 Python 实现,也称为超快速决策树 (VFDT)。 霍夫丁树是用于数据流中分类任务的决策树。 这个实现最初是基于Weka的 Hoeffding Tree 以及 Geoff Hulten 和 Pedro Domingos 的原创作品,VFML。...

    【python代码实现】决策树分类算法、朴素贝叶斯分类算法以及人工神经网络分类算法的代码及数据

    1、资源配合博文《【python代码实现】决策树分类算法》、《【python代码实现】朴素贝叶斯分类算法》、《【python代码实现】人工神经网络分类算法及其实战案例(股票价格波动分析)》实操可掌握: 2、决策树分类算法...

    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代码)数学建模...

    报告(全英文)图像处理-图片找不同#Matlab下调用Python接口#SIFT算法应用

    报告(全英文)图像处理-图片找不同Find the differences of the two images #Matlab下调用Python接口#SIFT算法应用 博客链接: https://blog.csdn.net/qq_34243930/article/details/85316240

    去雨算法(python代码)

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

    python-louvain-0.14_python-louvain包_Louvain算法_Louvain-python_lou

    Python-louvain是一个用于执行社区检测的Python库,它实现了著名的Louvain算法。这个算法是一种高效的网络社区结构发现方法,特别适用于大规模图数据。在本文中,我们将深入探讨Louvain算法及其在Python中的应用。 ...

    代码 最小生成树Prim算法代码

    最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最

    树编辑距离的 Python APTED算法_python_代码_下载

    这是 APTED 算法的 Python 实现,它是计算树编辑距离的最先进的解决方案 ,它取代了 RTED 算法 输入 目前,我们只支持输入树的所谓括号表示法,例如,编码{A{B{X}{Y}{F}}{C}}对应于以下树: A / \ B C /|\ X Y...

    一个致力于打破matlab垄断的, 混沌系统仿真工具, 基于python实现,业余时间持续开发中.zip

    python代码 算法设计 源代码 python代码 算法设计 源代码 python代码 算法设计 源代码 python代码 算法设计 源代码 python代码 算法设计 源代码 python代码 算法设计 源代码 python代码 算法设计 源代码 ...

    2024版遗传算法详解 附python代码实现

    2024版遗传算法详解 附python代码实现2024版遗传算法详解 附python代码实现2024版遗传算法详解 附python代码实现2024版遗传算法详解 附python代码实现2024版遗传算法详解 附python代码实现2024版遗传算法详解 附...

    Python中的 GSP(广义序列模式)算法_python_代码_下载

    例如,以下是一个简单的使用GSP算法的Python代码示例: ```python from gsppy import GSP # 假设你有一个名为"data"的时间序列数据 data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 设置最小支持度 min_support = 0.6 ...

    列文伯格-马夸尔特算法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小数选择算法 计算...

    光线追踪算法_100行python代码pdf.pdf

    光线追踪算法_100行python代码pdf.pdf 光线追踪算法(Ray Tracing)是一种用于生成照片级真实感图像的技术。该技术通过模拟光线在三维场景中的行为,生成高质量的图像。以下是关于光线追踪算法的知识点: 1. 场景...

Global site tag (gtag.js) - Google Analytics