博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图的遍历
阅读量:4564 次
发布时间:2019-06-08

本文共 656 字,大约阅读时间需要 2 分钟。

1. 深度优先

  • 深度优先遍历的非递归算法

    def dfs_nonrec(graph, v0):    vnum = graph.vertex_num()    visited = [0]*vnum    visited[v0] = 1    st = []                               # 作为堆栈使用    dfs_seq = []            st.append((0, graph.out_edges(v0)))    while len(st) > 0:        i, edges = st.pop()        st.append((i+1, edges))        v, e = edges[i]        if not visited[v]:            dfs_seq.append(v)            visited[v] = 1            st.append((0, graph.out_edges(v)))

    堆栈中的元素形式为为 (i, edges),其中 edges 表示是某个顶点的出边表(比如 graph.out_edges(v0)),i 是目前访问的边表的下标,因为是深度优先,先访问 v0 的第一个出边,v0 的第一个出边能够达到的点全部遍历完毕之后,回过头来(回溯) v0 的第二个出边;

转载于:https://www.cnblogs.com/mtcnn/p/9423995.html

你可能感兴趣的文章
SQL COOKBOOK (Ch.1-10)
查看>>
创建数组
查看>>
dict使用
查看>>
[转] 移动平台Html5的viewport使用经验
查看>>
ASP.NET MVC的帮助类HtmlHelper和UrlHelper
查看>>
《Python数据科学手册》第五章机器学习的笔记
查看>>
ubuntu16.04 配置爬虫环境
查看>>
Centos7,PHP7安装swoole
查看>>
02_ListActive中响应事件 并LogCat输出
查看>>
doubleclick adx note
查看>>
Celery框架
查看>>
[c#]asp.net开发微信公众平台(4)关注事件、用户记录、回复文本消息
查看>>
[转载,感觉写的非常详细]DUBBO配置方式详解
查看>>
linux Valgrind使用说明-内存泄漏
查看>>
Android在Eclipse上的环境配置
查看>>
面向对象(五)
查看>>
android平台下使用点九PNG技术
查看>>
Python学习3,列表
查看>>
最长回文子串
查看>>
JAVA基础-JDBC(一)
查看>>