首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

一些惯用的数据结构(四):图

2012-10-31 
一些常用的数据结构(四):图?队列比栈更简单,无非就是个有队头和队尾指针,两端操作的FIFO结构罢了,不写了。。

一些常用的数据结构(四):图

?队列比栈更简单,无非就是个有队头和队尾指针,两端操作的FIFO结构罢了,不写了。。。

图的广度优先遍历算法:

1.将顶点加入队列,标记为已到达

2.将队首元素出队,找到与他相邻且未标记的元素入队。

3.循环2直到队空。

深度优先遍历算法:

对于最新发现的顶点,如果它还有以此为起点而未探测到的边,就沿此边继续汉下去。当结点v的所有边都己被探寻过,搜索将回溯到发现结点v有那条边的始结点。这一过程一直进行到已发现从源结点可达的所有结点为止。如果还存在未被发现的结点,则选择其中一个作为源结点并重复以上过程,整个进程反复进行直到所有结点都被发现为止。

?

迪杰斯特拉算法描述如下:
1)arcs[i,j]表示弧<vi,vj>上的权值。若<vi,vj>不存在,则置arcs[i,j]为∞(在本程序中为MAXCOST)。S为已找到从v出发的最短路径的终点的集合,初始状态为空集。那么,从v出发到图上其余各顶点vi可能达到的最短路径长度的初值为D[i]=arcs[Locate Vex(G,v),i] vi∈V
2)选择vj,使得D[j]=Min{D[i] | vi∈V-S}
3)修改从v出发到集合V-S上任一顶点vk可达的最短路径长度。如果D[j]+arcs[j,k]<D[k] 则修改D[k]为D[k]=D[j]+arcs[j,k]

?

热点排行