復(fù)雜網(wǎng)絡(luò)和networkx(一)

圖的基本概念

  • 圖的定義
  • 圖的數(shù)學(xué)表示
  • 路徑
  • 圖的連通性
  • 最小生成樹
  • 度眶俩,平均度
  • 網(wǎng)絡(luò)的密度
  • 網(wǎng)絡(luò)平均路徑長(zhǎng)度
  • 網(wǎng)絡(luò)的聚類(clustering coefficient)系數(shù)
1. 圖(網(wǎng)絡(luò))的定義
  • 定義:一個(gè)具體的網(wǎng)絡(luò)可以抽象為由一個(gè)點(diǎn)集邊集組成的圖G = (V, E), 如下圖1所示快鱼。以編程的角度來(lái)看,邊集和點(diǎn)集中的點(diǎn)可以稱之為一個(gè)對(duì)象(類)纲岭。

  • 應(yīng)用價(jià)值:網(wǎng)絡(luò)這種數(shù)據(jù)結(jié)構(gòu)在很多方面都具有很強(qiáng)的應(yīng)用抹竹,如:

    1. 醫(yī)學(xué)專家希望了解傳染病在社會(huì)網(wǎng)絡(luò)中的傳播途徑并找到預(yù)防與控制策略

    2. 社會(huì)學(xué)家關(guān)心觀點(diǎn)和流言蜚語(yǔ)如何在社會(huì)網(wǎng)絡(luò)上進(jìn)行傳播

    3. 工程師希望找到由局部故障而引起大規(guī)模故障原因,如由美國(guó)次級(jí)房屋信貸危機(jī)而引起的全球金融危機(jī)


      圖1 簡(jiǎn)單網(wǎng)絡(luò)拓?fù)鋱D.png
2. 圖的數(shù)學(xué)表示
  • 定義:將圖表示為可以在計(jì)算機(jī)中處理的形式

  • 常見表示方式:

    1. 鄰接矩陣
    2. 鄰接表
    3. 三元組
3. 路徑
  • 定義:無(wú)向圖G = (V, E) 的一條路徑指的是一個(gè)序列 P = v_1v_2v_3...v_k 其中每一對(duì)相鄰節(jié)點(diǎn)之間都存在著邊止潮,則稱P為節(jié)點(diǎn)v_1 和節(jié)點(diǎn)v_k 的一條路徑

  • 含義:路徑在網(wǎng)絡(luò)的實(shí)際應(yīng)用中具有巨大的作用窃判,如:

    1. 社交網(wǎng)絡(luò)中,如果兩個(gè)節(jié)點(diǎn)之間沒(méi)有路徑則可以表示兩個(gè)人不相互認(rèn)識(shí)
    2. 在Internet中喇闸,如果兩個(gè)節(jié)點(diǎn)之間沒(méi)有路徑則可以表示這兩個(gè)PC之間不能進(jìn)行通信
  • 問(wèn)1:如何求解兩個(gè)節(jié)點(diǎn)之間是否有路徑呢袄琳?如果有路徑的條數(shù)是多少询件?其中最短路徑的長(zhǎng)度及其序列是什么?

4. 圖的連通性
  • 定義: 圖G = (V, E) 中唆樊,任意兩個(gè)節(jié)點(diǎn)直接都存在路徑宛琅,則稱該圖是連通的

  • 含義:如一個(gè)Internet圖是連通的則表明圖中的每一個(gè)定點(diǎn)都能相互通信

  • 問(wèn)2: 如何判斷一個(gè)圖是否是連通的,如果不連通又如何求解出最大連通圖逗旁?

5. 最小生成樹
  • 定義:在有權(quán)無(wú)向(有向)連通圖G = (V, E) 中嘿辟,其中N表示節(jié)點(diǎn)的數(shù)目。僅通過(guò)N-1 條邊使圖G連通并且N-1條邊上的權(quán)重最小則稱該圖為最小生成樹片效。

  • 含義:最小生成樹表示的是使圖G連通的最小代價(jià)(邊數(shù)和權(quán)重)红伦,比如,在修路中淀衣,節(jié)點(diǎn)表示村莊昙读,道路表示邊。最小生成樹則可以表示使得所有村莊之間都連通時(shí)修建道路所耗費(fèi)最少的代價(jià)膨桥。從另一個(gè)角度來(lái)看蛮浑,最小生成樹象征著一個(gè)網(wǎng)絡(luò)的骨架。

6. 度国撵,平均度
  • 定義:節(jié)點(diǎn)i的度表示與節(jié)點(diǎn)i所連接的邊的數(shù)目陵吸,其是刻畫節(jié)點(diǎn)特征的指標(biāo)之一。平均度<k>表示網(wǎng)絡(luò)中所有節(jié)點(diǎn)的度的平均值介牙。
7. 網(wǎng)絡(luò)的密度
  • 定義:網(wǎng)絡(luò)的密度p等于網(wǎng)絡(luò)中實(shí)際的邊的個(gè)數(shù) / 網(wǎng)絡(luò)最大可能的邊數(shù)

  • 含義:網(wǎng)絡(luò)的密度越大表示網(wǎng)絡(luò)的邊數(shù)越多壮虫,網(wǎng)絡(luò)的邊數(shù)越多則表示網(wǎng)絡(luò)越稠密,反之环础,則表示網(wǎng)絡(luò)越稀疏

8. 網(wǎng)絡(luò)平均路徑長(zhǎng)度
  • 定義:節(jié)點(diǎn)i和節(jié)點(diǎn)j的距離d_{ij}定義為連接這兩個(gè)節(jié)點(diǎn)的最短路徑上邊的數(shù)目囚似。網(wǎng)絡(luò)的平均路徑L定義為網(wǎng)絡(luò)中任意兩個(gè)節(jié)點(diǎn)之間的距離的平均值,即L = \frac{1}{\frac{1}{2}N(N-1)}\sum d_{ij}
  • 含義:六度空間理論线得,如社交網(wǎng)絡(luò)中饶唤,任意兩個(gè)人之間想取得聯(lián)系,則需要少于六個(gè)人進(jìn)行信息的傳遞即可
9. 網(wǎng)絡(luò)的聚類(clustering coefficient)系數(shù)
  • 定義:網(wǎng)絡(luò)中有一節(jié)點(diǎn)i的度為k_i贯钩,那么在其所有的鄰居節(jié)點(diǎn)中募狂,有多少也是鄰居,即在你的兩個(gè)朋友中角雷,他們是否也是朋友祸穷。節(jié)點(diǎn)的聚類系數(shù)記為C_i = \frac{E_i}{k_i(k_i -1) / 2},其中E_i 是節(jié)點(diǎn)ik_i個(gè)鄰接點(diǎn)之間實(shí)際存在的邊數(shù)。網(wǎng)絡(luò)的聚類系數(shù)為所有節(jié)點(diǎn)的聚類系數(shù)的平均值

  • 含義:就社交網(wǎng)絡(luò)而言勺三,某一人的聚類系數(shù)可以表示該人朋友圈的緊密程度


networkx實(shí)現(xiàn)

  • 圖的創(chuàng)建
  • 圖的使用

問(wèn)題往往比答案更重要雷滚,以下所有實(shí)現(xiàn)都基于一個(gè)實(shí)際的問(wèn)題而言

#  圖的創(chuàng)建
# 1. 由圖的定義可知,圖由點(diǎn)集對(duì)象和邊集對(duì)象所組成吗坚。因此我們定義好點(diǎn)和邊即定義出一個(gè)圖祈远,定義一個(gè)圖1所示的圖
import networkx as nx
# 定義節(jié)點(diǎn)集
nodes = [1,2,3,4,5,6,7,8,9,10]
G.add_nodes_from([1,2,3,4,5,6,7,8,9,10])
# 定義邊集
edges = [(1, 2),(1, 3),(1, 4),(1, 6),(2, 4),(2, 5),(3, 4),(3, 6),(4, 5),(4, 6),(4, 7),(5, 7),(6, 7),(6, 8),(7, 8),(8, 9)]
G.add_edges_from(edges)

# 圖的使用
# 定義節(jié)點(diǎn)集
nodes = [1,2,3,4,5,6,7,8,9,10]
G.add_nodes_from([1,2,3,4,5,6,7,8,9,10])
# 定義邊集
edges = [(1, 2),(1, 3),(1, 4),(1, 6),(2, 4),(2, 5),(3, 4),(3, 6),(4, 5),(4, 6),(4, 7),(5, 7),(6, 7),(6, 8),(7, 8),(8, 9)]
G.add_edges_from(edges)
# 幫我看看1號(hào)節(jié)點(diǎn)有多少個(gè)朋友呆万?(判斷節(jié)點(diǎn)的度)
print('1號(hào)節(jié)點(diǎn)有%d個(gè)朋友'%G.degree(1))
# 幫我看看1號(hào)節(jié)點(diǎn)和10節(jié)點(diǎn),9節(jié)點(diǎn)分別是不是朋友车份?(判斷節(jié)點(diǎn)之間是否有路徑)
print('1 和 9 是朋友') if nx.algorithms.shortest_paths.generic.has_path(G, 1, 9) else print('1 和 9 不是朋友')
print('1 和 10 是朋友') if nx.algorithms.shortest_paths.generic.has_path(G, 1, 10) else print('1 和 9 不是朋友')
# 幫我看看網(wǎng)絡(luò)中所有的節(jié)點(diǎn)能不能相互通信(判斷網(wǎng)絡(luò)是不是連通的)
print('網(wǎng)絡(luò)中所有的節(jié)點(diǎn)能相互通信')if approx.node_connectivity(G) == 0 else print('網(wǎng)絡(luò)中所有的節(jié)點(diǎn)不能相互通信')
# 幫我看看這個(gè)網(wǎng)絡(luò)的平均路徑長(zhǎng)度谋减,聚類系數(shù)?我等會(huì)有大用
print('聚類系數(shù)%f'%nx.algorithms.cluster.average_clustering(G))
print('平均路徑長(zhǎng)度%d'%nx.algorithms.shortest_paths.generic.average_shortest_path_length(G))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末躬充,一起剝皮案震驚了整個(gè)濱河市逃顶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌充甚,老刑警劉巖以政,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異伴找,居然都是意外死亡盈蛮,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門技矮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)抖誉,“玉大人,你說(shuō)我怎么就攤上這事衰倦√宦” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵樊零,是天一觀的道長(zhǎng)我磁。 經(jīng)常有香客問(wèn)我,道長(zhǎng)驻襟,這世上最難降的妖魔是什么夺艰? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮沉衣,結(jié)果婚禮上郁副,老公的妹妹穿的比我還像新娘。我一直安慰自己豌习,他們只是感情好存谎,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著肥隆,像睡著了一般愕贡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上巷屿,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音墩虹,去河邊找鬼嘱巾。 笑死憨琳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的旬昭。 我是一名探鬼主播篙螟,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼问拘!你這毒婦竟也來(lái)了遍略?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤骤坐,失蹤者是張志新(化名)和其女友劉穎绪杏,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纽绍,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蕾久,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拌夏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片僧著。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖障簿,靈堂內(nèi)的尸體忽然破棺而出盹愚,到底是詐尸還是另有隱情,我是刑警寧澤站故,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布皆怕,位于F島的核電站,受9級(jí)特大地震影響世蔗,放射性物質(zhì)發(fā)生泄漏端逼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一污淋、第九天 我趴在偏房一處隱蔽的房頂上張望顶滩。 院中可真熱鬧,春花似錦寸爆、人聲如沸礁鲁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)仅醇。三九已至,卻和暖如春魔种,著一層夾襖步出監(jiān)牢的瞬間析二,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叶摄,地道東北人属韧。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蛤吓,于是被迫代替她去往敵國(guó)和親宵喂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348