【算法】广度遍历算法的应用 求出距离顶点v0的最短路径长度为最长的一个顶点,图结构的bfs生成树及其双亲表示形式
生活随笔
收集整理的這篇文章主要介紹了
【算法】广度遍历算法的应用 求出距离顶点v0的最短路径长度为最长的一个顶点,图结构的bfs生成树及其双亲表示形式
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
例: 求出距離頂點(diǎn)v0的最短路徑長度為最長的一個(gè)頂點(diǎn),并要求盡可能節(jié)省時(shí)間
分析:
用bfs算法(利用bfs算法的層次特性):
從v0出發(fā)進(jìn)行廣度遍歷時(shí), 最后一層的頂點(diǎn)距離v0的最短路徑長度最長。因而可能有多個(gè)解,按照本題要求,只要能求出其中一個(gè)便可。
圖結(jié)構(gòu)的bfs生成樹及其雙親表示形式
簡便起見,選擇雙親表示法,即對每個(gè)頂點(diǎn),僅給出其父結(jié)點(diǎn)信息。
這種表示方法的優(yōu)點(diǎn)是簡便、節(jié)省空間
不足是:不直觀,在輸出各路徑時(shí)需要反向求解
其中printpath算法描述如下:
void printpath(int parentof[], int i){ // 輸出v0到頂點(diǎn)i的最短路徑 if (i!=0){if (i== v0) cout<< v0;else { printpath(parentof, parentof[i]);cout<<”?”<<i; // 輸出路徑上的頂點(diǎn)}} }總結(jié)
以上是生活随笔為你收集整理的【算法】广度遍历算法的应用 求出距离顶点v0的最短路径长度为最长的一个顶点,图结构的bfs生成树及其双亲表示形式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【算法】深度优先搜索遍历的应用 设计算法
- 下一篇: 【项目】springboot中使用kap