1. 程式人生 > >知識隨手記(壹)

知識隨手記(壹)

1 隨機圖(Random Graph)

隨機圖實際上是將給定的頂點之間隨機地連上邊,邊的產生可以依賴於不同的隨機方式,這樣就產生了不同的隨機圖模型。隨著邊概率的不同,隨機圖可能會呈現不同的屬性。

from random import randrange
n = 100
G = [[randrange(2) for _ in range(n)] for _ in range(n)]
                            # randrange(2):產生 0/1 

2 無標度網路(Power-Law|Scale-Free Network)

無標度網路具有嚴重的異質性,其各節點之間的連線狀況(度數)具有嚴重的不均勻分佈性:網路中少數稱之為Hub點的節點擁有極其多的連線,而大多數節點只有很少量的連線。少數Hub點對無標度網路的執行起著主導的作用。從廣義上說,無標度網路的無標度性是描述大量複雜系統整體上嚴重不均勻分佈的一種內在性質。

3 小世界網路(Smart-World Network)

在數學、物理學和社會學中,小世界網路是一種數學之圖的型別,在這種圖中大部分的結點不與彼此鄰接,但大部分結點可以從任一其他點經少數幾步就可到達。若將一個小世界網路中的點代表一個人,而連結線代表人與人認識,則這小世界網路可以反映陌生人由彼此共同認識的人而連結的小世界現象。

4 最短路徑(Shortest Path)

  • 迪傑斯特拉(Dijkstra)演算法,dijkstra只能用於邊權都為正的圖中。 時間複雜度O( n
    2 n^2
    );
  • Bellman-Ford可以用於邊權為負的圖中,圖裡有負環也可以,如果有負環,演算法會檢測出負環。 時間複雜度O(VE);
  • SPFA是個Bellman-Ford的優化演算法,本質是Bellman-Ford,所以適用性和Bellman-Ford一樣。(用佇列和鄰接表優化)。 時間複雜度O(KE);
  • Floyd可以用於有負權的圖中,即使有負環,演算法也可以檢測出來,可以求任意點的最短路徑,有向圖和無向圖的最小環和最大環。 時間複雜度O( n
    3 n^3
    );