有向图基本算法 -- 遍历算法
来源:互联网 发布:中国足球 知乎 编辑:程序博客网 时间:2024/05/17 07:21
1. 图的表示
2. 有向图的遍历算法:深度优先
3. 有向图的遍历算法:广度优先
4 代码反思
5. 下载
1. 图的表示
1.1 图的定义
图G定义为V和E的集合G={V, E},其中V表示图中的所有的顶点集合,E表示的是G中的所有的边的集合。图按照E中的元素是否有方向,分为有向图和无向图。
1.2 图的表示方法
上面给出的数学上图的定义,那么在计算机中如何表示图?通常意义上,有下面的两种方法:邻接表和邻接矩阵表示法。
无向图的邻接表和邻接矩阵表示如下所示:
有向图的邻接表和邻接矩阵表示如下所示:
根据上面的表示方法,下面定义图G的这种数据结构(邻接表),首先定义图的顶点GraphVertex:
public List<GraphEdge> FollowEdges { get; set; }
定义图G的边的数据结构:
public int Weight { get; set; }
定义图:
private int time = 0;
整体上的结构如下:
2. 有向图的深度优先算法
2.1 基本算法
其中d表明的是某个节点第一次被发现的时间点,f表明从节点出发的全部节点已经被发现的时间。
2.2 设计实现
}
3. 有向图的遍历算法:广度优先
3.1 基本算法
其中color域表示的是当前某个节点被发现的状态。如果是white表明没有被发现,gray表示当前顶点已经被发现,但是从该节点出发的节点还没有被全部发现。parent域定义的是在搜索算法时父节点。distance域表明的是从节点s到某个发现的节点v的路径距离。
3.2 设计实现
}
4. 代码反思
上面的搜索代码结构是比较典型的搜索结构:首先定义队列或者是栈来保存程序运行状态,如果容器不空,取出元素,然后对取出的元素做一些处理。
5. 代码下载
/Files/xuqiang/DirectedGraph1.rar
- 有向图基本算法 -- 遍历算法
- 有向图基本算法 -- 遍历算法
- 有向图基本遍历算法
- 有向图的遍历算法
- 【算法导论】有向图的深度优先搜索遍历
- 【算法】图的深度优先遍历(有向)
- 无向图基本算法 -- 遍历及最小生成树算法
- Floyd算法 有向图。
- 算法4.2 有向图
- 有向图的DFS遍历及判断是否有环(算法导论)
- 【算法】有向无环图
- 图的深度优先遍历递归算法主针对邻接表有向图
- 图的广度优先遍历算法运用队列主针对邻接表有向图
- 图遍历算法应用--有向图的顶点可达性(无向图的连通性)(2)
- 十六、图算法之有向图
- 有向图的Dijkstra算法
- 有向图强连通算法
- 【数据结构】有向图->dijkstra算法详解
- WINCE中的bib文件 .
- C语言多文件编译时,编译器不检测其声明的变量类型与定义时的类型是否匹配
- 当内部类定义在局部时
- Objective-C 基本语法(1)
- 学习hibernate 所遇到的一些Exception
- 有向图基本算法 -- 遍历算法
- seo每日学习1
- (短信、彩信、语音)协议
- splunk解析数据动作
- linux 各文件的含义
- Linux 信号
- python __set__ __get__ 等解释
- codec_engine 创建属于自己的例子
- 软件测试人员的简历~~