【需要解决的问题】 对一个有向无环图(DAG)拓扑排序。 拓扑排序就是,对图上的点进行排序,使得排在后面的点不能通过一条路径到前面的点。 比如下面这个图: 其中一个拓扑排序是1,2,3,4,5;而1,2,5,3,4就不行,因为3能到达5。 因此可以得出: 用一个队列实现,先把入度为0的点放入队列,每...
分类:
编程语言 时间:
2016-02-02 23:14:09
阅读次数:
293
广度优先遍历广度优先遍历是非经常见和普遍的一种图的遍历方法了,除了BFS还有DFS也就是深度优先遍历方法。我在我下一篇博客里面会写。遍历过程相信每一个看这篇博客的人,都能看懂邻接链表存储图。 不懂的人。请先学下图的存储方法。在我的之前博客里。 传送门:图表示方法然后我们如果有一个图例...
分类:
编程语言 时间:
2015-12-25 13:05:47
阅读次数:
171
深度优先搜索算法和广度优先搜索算法是图论中两个有意思也很实用的算法,下面我们来看看这两个算法。严书中,给出的利用深度优先搜索(Deep First Search)算法进行图的遍历伪码如下 1 Boolean visited[MAX]; //标志数组 2 Status (*VisitFunction....
分类:
编程语言 时间:
2015-12-06 22:49:03
阅读次数:
607
一:定义邻接表结构储存图package 图的遍历;//邻接表实现图的建立//储存边class EdgeNode { int index; // 习惯了用index,其实标准写法是(adjVertex) int value; // 权值 EdgeNode nextArc; // 指向下一条弧}// 邻...
分类:
编程语言 时间:
2015-11-21 14:27:02
阅读次数:
518
看《算法竞赛入门经典》 第七章, 隐式图的遍历,八数码一题。学到了全排列的编码与解码。用处: 每一个排列代表一个图的状态, 比如 8,3,2,4,5,6,7,0,1表示成图就是8 3 24 5 67 0 1我们将0~8的全排列和0~9!一一映射起来。比如0, 1, 2, 3, 4, 5,...
分类:
其他好文 时间:
2015-11-07 14:46:36
阅读次数:
231
本文是[数据结构基础系列(7):图]中第6课时[图的遍历]的例程。1、深度优先遍历——DFS(linklist.h是图存储结构的“算法库”中的头文件,详情请单击链接…)#include
#include
#include "graph.h"
int visited[MAXV];
void DFS(ALGraph *G, int v)
{
ArcNod...
分类:
其他好文 时间:
2015-11-03 00:47:34
阅读次数:
260
图主要有深度优先遍历(DFS)和广度优先遍历(BFS)。1 深度优先遍历——DFS 深度优先类似于树的先序遍历,从要访问的节点(0)出发,选取和它相邻的任何一个节点(3),访问之,再访问和3相邻的节点(4),访问之,直到访问到没有相邻节点的节点,比如4没有相邻节点了,那么就回溯一层,访问3的未被访....
分类:
其他好文 时间:
2015-10-19 17:00:13
阅读次数:
247
深度优先搜索(depth-first search)是对先序遍历(preorder traversal)的推广。”深度优先搜索“,顾名思义就是尽可能深的搜索一个图。想象你是身处一个迷宫的入口,迷宫中的路每一个拐点有一盏灯是亮着的,你的任务是将所有灯熄灭,按照DFS的做法如下:1. 熄灭你当前所在的拐...
分类:
其他好文 时间:
2015-09-28 23:42:50
阅读次数:
228
深度优先搜索(DepthFirstSearch,DFS):voidDFS(VertexV){visited[V]=true;for(V点的每个邻接点W)if(!visited[W])DFS(W);}若有N个顶点、E条边,时间复杂度是用邻接表存储图,有O(N+E)用邻接矩阵存储图,有O(N2)广度优先搜索(BreadthFirstSearch,BFS)voidBFS(VertexV){visited[V]..
分类:
其他好文 时间:
2015-09-16 01:07:28
阅读次数:
186
下午去考了CCF认证考试,关于字符处理的部分和图论的部分确实需要加强了。第三道题是关于字符串替换的简单处理,竟然没有顺利A掉。。。哎,。。哎。。第四题是有向图的遍历,拥有图论的基础编程基础便可解决,要分两个阶段,分别加强对这两部分的训练!考后100分啊.......还有第五题,没有弄明白出题人的.....
分类:
其他好文 时间:
2015-09-13 23:08:36
阅读次数:
252