图的广度优先搜索 (参考算法导论)
2011-10-03 19:52
169 查看
#__author__=lx #__date__=2011-10-03 #__brief__=BFS from collections import deque def BFS( G, s ): d = [] color = [] p = [] L = deque() for i in range( len( G ) ): if i != s: color.append( 'white' ) d.append( 'helloworld' ) p.append( None ) else: color.append( 'gray' ) d.append( 0 ) p.append( None ) L.append( s ) while ( len( L ) != 0 ): u = L.popleft() for v in G[u]: if cmp( color[v-1],'white' ) == 0: color[v-1] = 'gray' d[v-1] = d[u] + 1 p[v-1] = u L.append(v-1) color[u] = 'black' print u + 1 if __name__ == "__main__": l1 = [ 2, 3 ] l2 = [ 4, 5, 1 ] l3 = [ 6, 7, 1 ] l4 = [ 2, 8 ] l5 = [ 2, 8 ] l6 = [ 3, 7 ] l7 = [ 3, 6 ] l8 = [ 4, 5 ] l = [ l1, l2, l3, l4, l5, l6, l7, l8 ] BFS( l, 1 )
相关文章推荐
- 【算法导论】C++参考源码之线性时间排序
- 图的深度优先搜索(参考算法导论)
- 【算法导论】C++参考源码之堆排序中的优先级队列
- 【算法导论】C++参考源码之队列、二叉树
- 快速排序--(参考算法导论p146)
- 图的广度优先搜索----算法导论
- 【算法导论】C++参考源码之堆排序
- 【算法导论】22.7 无向图的广度优先搜索--C++实现
- 关于堆排序(参考自算法导论)
- 关于 优先队列(C语言) ——(参考算法导论)
- 广度优先搜索(算法导论第22章-基本的图算法)
- Java实现算法导论中图的广度优先搜索(BFS)和深度优先搜索(DFS)
- 算法导论 第22章 图算法 22.2 广度优先搜索
- 关于 栈(C语言) ——(参考算法导论)
- 【算法导论】C++参考源码之基础排序
- 关于 队列(C语言) ——(参考算法导论)
- 七大排序问题之快速排序(参考算法导论PHP版)
- [算法导论 12章练习答案] 12.2 12.3
- 算法导论5.4-6
- 开始学习算法导论这本书咯~