圖的一些心得

       關於圖的一些心得,

        圖是繼樹之後,一個更加複雜的數據類型,樹解決了一對多的問題,而圖用來表示多對多的問題,圖的實際應用有:尋找兩個地方之間的最短路徑,如何使用最短的距離把所有的地方都連起啦,比如說鋪路,用最少的材料使得道路到達所有的城市(或者村子),又或者說使用最短的線路把所有的村子都連起來,使其都有電可以用,


        一般解決使用最小的距離來把所有的點連起來的算法是最小生成樹,兩點間的最短距離使用的是最短距離的方法,


        最小生成樹一般有兩種方法: prim(普林)算法,krustal(克魯斯卡而)算法,

        prim算法:他的具體過程是,從任意一個點A開始,找到離他最短的那個點B(也就是鄰接點中,權重最小的那個),然後連接起來,這個時候,AB兩個點已經被標出來,然後找出下一個距AB這兩個點中任意一個距離最小的(權重最小),知道找出所有的點~~~~(這是從一個點開始,從臨界點不斷擴張)

       krustal算法:這個算法的具體過程是:從邊出發,找出所有邊中,最短的那個邊,接下來找出第二小的邊,不必和第一條邊有相鄰關係,只要不是第一條邊就行,在不成環的情況下,把所有的點都連起來


       以上的兩個算法解決了最小生成樹的問題,接下來是另外一個問題,兩點間的最短距離的問題,使用的是dijkstra(迪傑斯特拉)算法

       這個算法和prim算法有點點像,在選定的那個點A開始找出最短的鄰接點,繼續從A開始找出第二小距離的點,再A開始找出距離A第三短的點,一直到B找到爲止,這個和prim算法不一樣的地方是,prim是選定點後,所有選定點中最短的新點,dijkstra中總是從A開始,因爲本來就是要找到距離A最短的距離,和B之間,所以一旦找到B那肯定是最短的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章