① 无向图能用Dijkstra算法吗
可以的。。。
设d[i]表示原点到第i个点的最短路径,共n个顶点,p是原点,g[i][j]表示从点i到点j的距离,如果不存在i到j的路径,则g[i][j]=inf
初始d[1....n]=inf,d[p]=0
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(g[i][j]<inf)
{
d[j]=min(d[i]+g[i][j],d[j]);
}
不会PASCAL,见谅。。。
② 无向无权图求All Pairs Shortest Path哪种算法效率最高
据我所知枚举起点+堆优化dijkstra是最快的了,复杂度O(n(nlogn+m)),但是编程复杂度比较高,常数也大
floyd算是常数最小的O(n^3)算法了,而且很好写
③ 请教无向无环图最长路径算法
无向无环图就是树,
从根出发:
如果是计算最多的路径,就用广度优先(层次遍历)就可以了,最后访问的顶点一定是最多的路径的
如果是计算最长的路径长度,直接将上面的算法改一下,每个顶点时记下前面的来路的值加上现在的,就可以求出最大值
或者直接用Dijkstra 算法就可以了
④ 锲炬墍绀烘槸涓涓镞犲悜甯︽潈锲,璇峰垎鍒鎸埘rim绠楁硶鍜孠ruskal绠楁硶姹傛渶灏忕敓鎴愭爲.
•鏅閲屽嗭纸Prim锛夌畻娉
锘烘湰镐濇兂
锅囱綨=(V,E)鏄涓涓鍏锋湁n涓椤剁偣镄勮繛阃氱绣锛孴=(U,TE)鏄镓姹傜殑链灏忕敓鎴愭爲锛屽叾涓璘鏄疶镄勯《镣归泦锛孴E鏄疶镄勮竟闆嗐
锛1锛夊埯濮婾={u0}(u0鈭圴),TE=蠁锛
锛2锛夊湪镓链塽鈭圲,v鈭圴-U镄勮竟涓阃変竴𨱒′唬浠锋渶灏忕殑杈癸纸u0锛寁0锛夊苟鍏ラ泦钖圱E锛屽悓镞跺皢v0骞跺叆U锛
锛3锛夐吨澶嶏纸2锛夛纴鐩村埌U=V涓烘銆
姝ゆ椂锛孴E涓蹇呭惈链塶-1𨱒¤竟锛屽垯T=锛圴锛寋TE}锛変负N镄勬渶灏忕敓鎴愭爲銆
娉ㄦ剰锛1.链灏忕敓鎴愭爲涓嶅敮涓銆
2.璇ュ浘浠庤妭镣规渶灏忓紑濮嬨
⑤ 无向有权的图的深度、广度优先遍历怎么做的啊,他的遍历序列怎么求呢
总结深度优先与广度优先的区别
1、区别
1) 二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。
2) 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历、中序遍历、后序遍历。具体说明如下:
先序遍历:对任一子树,先访问根,然后遍历其左子树,最后遍历其右子树。
中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树。
后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。
广度优先遍历:又叫层次遍历,从上往下对每一层依次访问,在每一层中,从左往右(也可以从右往左)访问结点,访问完一层就进入下一层,直到没有结点可以访问为止。
3)深度优先搜素算法:不全部保留结点,占用空间少;有回溯操作(即有入栈、出栈操作),运行速度慢。
广度优先搜索算法:保留全部结点,占用空间大; 无回溯操作(即无入栈、出栈操作),运行速度快。