[算法导论]DFS @ Python
class Graph:
def __init__(self):
self.V = [] class Vertex:
def __init__(self, x):
self.key = x
self.color = 'white'
self.d = 10000
self.f = 10000
self.pi = None
self.adj = [] class Solution:
def Dfs(self, G):
for u in G.V:
u.color = 'white'
u.pi = None
global time
time = 0
for u in G.V:
if u.color == 'white':
self.DfsVisit(G, u) def DfsVisit(self, G, u):
global time
time = time + 1
u.d = time
u.color = 'gray'
for v in u.adj:
if v.color == 'white':
v.pi = u
self.DfsVisit(G, v)
u.color = 'black'
time = time + 1
u.f = time if __name__ == '__main__':
u,v,w,x,y,z = [Vertex(i) for i in ['u','v','w','x','y','z']] u.adj = [v, x]
v.adj = [y]
w.adj = [y, z]
x.adj = [v]
y.adj = [x]
z.adj = [z] G = Graph()
G.V = [u,v,w,x,y,z] m = Solution()
m.Dfs(G) for v in G.V:
print v.key, v.color, v.d, v.f
[算法导论]DFS @ Python的更多相关文章
- [算法导论]BFS @ Python
		
class Graph: def __init__(self): self.V = [] class Vertex: def __init__(self, x): self.key = x self. ...
 - 算法导论之python实现插入排序
		
插入排序的花费时间 c*n2, c 是常数 伪代码 INSERTION-SORT(A) for i to A.length key = A[j] //Insert A[j] into the sor ...
 - [算法导论]插入排序 @ Python
		
class insertionsort(): def insertion_sort(self,Array): for i in range(1, len(Array)): key = Array[i] ...
 - 算法导论 第一章and第二章(python)
		
算法导论 第一章 算法 输入--(算法)-->输出 解决的问题 识别DNA(排序,最长公共子序列,) # 确定一部分用法 互联网快速访问索引 电子商务(数值算 ...
 - [算法导论]二叉查找树的实现 @ Python
		
<算法导论>第三版的BST(二叉查找树)的实现: class Tree: def __init__(self): self.root = None # Definition for a b ...
 - [算法导论]quicksort algorithm @ Python
		
算法导论上面快速排序的实现. 代码: def partition(array, left, right): i = left-1 for j in range(left, right): if arr ...
 - [Algorithm] 如何正确撸<算法导论>CLRS
		
其实算法本身不难,第一遍可以只看伪代码和算法思路.如果想进一步理解的话,第三章那些标记法是非常重要的,就算要花费大量时间才能理解,也不要马马虎虎略过.因为以后的每一章,讲完算法就是这样的分析,精通的话 ...
 - 算法导论第十八章 B树
		
一.高级数据结构 本章以后到第21章(并查集)隶属于高级数据结构的内容.前面还留了两章:贪心算法和摊还分析,打算后面再来补充.之前的章节讨论的支持动态数据集上的操作,如查找.插入.删除等都是基于简单的 ...
 - "《算法导论》之‘图’":深度优先搜索、宽度优先搜索(无向图、有向图)
		
本文兼参考自<算法导论>及<算法>. 以前一直不能够理解深度优先搜索和广度优先搜索,总是很怕去碰它们,但经过阅读上边提到的两本书,豁然开朗,马上就能理解得更进一步. 下文将会用 ...
 
随机推荐
- Hibernate框架—简介
			
ORM对象/关系数据库映射 ORM全称Object/Relation Mapping,对象/关系数据库映射,可以理解成一种规范.该框架的基本特征:完成面向对象的编程语言到关系数据库之间的映射. ORM ...
 - linux下进度条的编写和实现
			
实现了一个简单的进度条,主要技术啥的算不上,但有几个需要注意的点 首先是回车符,回车符可不是\n,我们可以把\n看成是两个动作的合体,分别是,回车和换行,都有自己对应的符号,这利用回车符一直在同一个位 ...
 - 数据库 sql
			
近期项目中会用到oracle,mysql,两者的建表sql 类型,函数都会混淆.现在特意整理一下: mysql :now(), CONCAT("","",& ...
 - Android双向滑动菜单完全解析,教你如何一分钟实现双向滑动特效
			
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9671609 记得在很早之前,我写了一篇关于Android滑动菜单的文章,其中有一个 ...
 - .Net中的Debug模式和Release模式
			
1.Debug模式和Release模式 在vs中,运行程序有两种模式:Debug和Release 在bin目录下也会生成对应的文件夹,用于存放生成的dll等文件,这两种模式的区别如下: Debug:用 ...
 - (状压) Brush (IV)  (Light OJ  1018)
			
http://www.lightoj.com/volume_showproblem.php?problem=1018 Mubashwir returned home from the contes ...
 - commons-logging和log4j
			
1.Apache通用日志接口(commons-logging.jar)介绍 Apache Commons包中的一个,包含了日志功能,必须使用的jar包.这个包本身包含了一个Simple Logger, ...
 - 做php网站后台开发,在Linux系统上进行更好吗?
			
1. PHP是开源软件,它在bsd/linux/win下都有很好的正式版及孪生版.并非开发php就必须要在linux下进行.主机服务商们习惯性的把asp与php分为两个主机系列几进行销售.由于asp只 ...
 - 基于 IdentityServer3 实现 OAuth 2.0 授权服务【客户端模式(Client Credentials Grant)】
			
github:https://github.com/IdentityServer/IdentityServer3/ documentation:https://identityserver.githu ...
 - Linux:Linux 重要人物
			
1.Ken Thompson:C 语言之父和 UNIX 之父 2.Dennis Ritchie:C 语言之父和 UNIX 之父 3.Stallman:著名黑客,GNU 创始人,开发了 Emacs.gc ...