1. 程式人生 > >12.3日+佛洛依德處理無向圖最小環+dijkstra處理有向圖最小環

12.3日+佛洛依德處理無向圖最小環+dijkstra處理有向圖最小環

  昨天的資料庫考試,題目本身都簡單的,但是感覺時間有點緊張,可能和自己有點墨跡有關。題目不怕不會做,就怕讀錯題,上了大學養成了考試“做完一遍要檢查的壞習慣”,這次沒時間檢查,所以有種做的不好的感覺。

   

  弗洛伊德演算法是運用的動態規劃的思想。常用於求圖中任意兩點間的最短路,同時也能表示任一兩點之間是否有可達關係

  用該演算法的思想還可以求無向圖中的“最小”環

例如poj1743:判斷一張無向圖上是否有至少包含3個點的環,有列印最短的一條路徑,否則,沒有。

思想:

   列舉環中一個點k,另外兩個點從<k的點集中取,對比更新最小環長度;擴充套件 經過“點K(<=k)”的最短路,繼續取點k+1更新最小環。

   列印路徑的話,利用記錄的兩點之間最短路的中間點二分即可。

 

有向圖求最小環:

     分別對將每個點當做起點做dijkstra,當起點再次從待擴充套件優先佇列中取出時,即求出經過該點的最小環。