演算法分析與實踐 作業2 Floyd演算法

2021-10-03 17:01:18 字數 840 閱讀 7377

用floyd演算法求解下圖各個頂點的最短距離。

//最大容量

#define vertextype int 頂點型別

#define inf 65535

//象徵無窮大

typedef

struct graph

;//鄰接矩陣

int p[num]

[num]

;//前驅表

int vexnum,arcnum;

//vernum為頂點個數,arcnum為邊數

} graph;

//初始化圖

void

createg

(graph &g)

//flod演算法

void

floyd

(graph &g)}}

}//輸出距離矩陣

for(

int i =

1; i <= g.vexnum;

++i)

printf

("\n");

}}intmain()

三重f

or迴圈

導致時間

複雜度為

o(n3

)三重for迴圈導致時間複雜度為o(n^3)

三重for循

環導致時

間複雜度

為o(n

3)

(學習2)Floyd和Dijkstra演算法

floyd演算法 演算法解析 因為一張連通圖中不是所有點到其他點都是有一條直接路徑的,所以我們可以借助別的和終點相連的點到達終點,便是起點 中轉.終點 以小推大,小 假設當前只有1可以當中轉點,start為起點,end為終點 因此當start點需要借助點1到end點時,便需要進行if edge st...

演算法分析與實踐 作業5

在包含有n個點的集合s中,找出距離最近的兩個點。設 p1 x1,y1 p2 x2,y2 pn xn,yn 是平面的n個點。嚴格地講,最近點對可能不止一對,此例輸出一對即可。利用分治求解 首先對所有的點按照x座標 或者y 從小到大排序 排序方法時間複雜度o nlogn o nlogn o nlogn ...

演算法分析與實踐 大作業

給定n個圓的半徑序列,將它們放到矩形框中,各圓與矩形底邊相切,求具有最小排列長度的原序列。一般而言我們會想到這種做法 但是這種只是其中一種,我們並沒有考慮完全,還有一些如 小球本來可以放到兩個大球的中間,不增加長度的 這個就類似於最短路的問題,由此我們想到了回溯演算法。開始時設a r1,r2,rn ...