[x] 徹底圖(complete graph):含有最多條邊的無向圖
html
無向圖(undirected graph)
java
有向圖(directed graph)
node
(Boston ,New York ,120)
、(Boston ,Philadeiphia , 199)等
最小生成樹(minimum spanning tree):所含邊權值之和小於其餘生成樹的邊的權值之和。
git
斷定最短路徑:算法
① 斷定起始頂點和目標頂點之間是否存在最短路徑(兩個頂點之間邊數最少的路徑)。
② 在加權圖中找到最短路徑。(Dijkstra算法)數組
鄰接矩陣:用一種叫鄰接矩陣的二維數組來表示任意兩個頂點的交接狀況。網絡
無向圖的鄰接矩陣必定是對稱的,有向圖的鄰接矩陣不必定對稱。數據結構
「拓撲序(topological order):若是有向圖中沒有環路,且有一條從A到B的邊,則能夠把頂點A安排到頂點B以前,這種排列獲得的頂點次序稱爲拓撲序。」 |
從上能夠看出,關鍵是尋找入度爲0的頂點。oop
一種方式是遍歷整個圖中的頂點,找出入度爲0的頂點,而後標記刪除該頂點,更新相關頂點的入度,因爲圖中有n個頂點,每次找出入度爲0的頂點後會更新相關頂點的入度,所以下一次又要從新掃描圖中全部的頂點。故時間複雜度爲O(n^2)。學習
一、圖中頂點用一個一維數組存儲,另外,對於頂點數組中,每一個數據元素還須要存儲指向第一個鄰接點的指針,以便於查找該頂點的邊信息。
二、圖中每一個頂點vi的全部鄰接點構成一個線性表,因爲鄰接點的個數不定,因此用單鏈表存儲,無向圖稱爲頂點vi的邊表,有向圖稱爲頂點vi做爲弧尾的出邊表。
(1) 初始時,S只包含起點s;U包含除s外的其餘頂點,且U中頂點的距離爲"起點s到該頂點的距離"[例如,U中頂點v的距離爲(s,v)的長度,而後s和v不相鄰,則v的距離爲∞]。
(2) 從U中選出"距離最短的頂點k",並將頂點k加入到S中;同時,從U中移除頂點k。
(3) 更新U中各個頂點到起點s的距離。之因此更新U中頂點的距離,是因爲上一步中肯定了k是求出最短路徑的頂點,從而能夠利用k來更新其它頂點的距離;例如,(s,v)的距離可能大於(s,k)+(k,v)的距離。
(4) 重複步驟(2)和(3),直到遍歷完全部頂點。
經過理解及其博客裏面的代碼講解,就能夠明白該算法的奧妙啦。
問題2:在作pp15.1的時候出現了越界的問題。
問題2的解決:正在改正····
問題1的改正:本題應該是錯誤的,選B。堆是一個徹底二叉樹而不是一個二叉查找樹,過低級的錯誤了,徹底粗心所致。
圖這一章頗有趣。不少算法實現很新穎,須要好好理解消化。 還有代碼實現確實很費時間呀(繞來繞去繞不過來)
正在繼續告訴本身,請對專業課更加虔誠一點。
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | |
---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 |
第一週 | 0/0 | 1/1 | 8/8 |
第二週 | 621/621 | 1/2 | 12/20 |
第三週 | 678/1299 | 1/3 | 10/30 |
第四周 | 2734/4033 | 1/4 | 20/50 |
第五週 | 1100/5133 | 1/5 | 20/70 |
第六週 | 1574/6707 | 2/7 | 15/85 |
第七週 | 1803/8510 | 1/8 | 20/105 |
第八週 | 2855/11365 | 2/10 | 25/130 |
第九周 | 2076/13441 | 1/11 | 25/155 |