數(shù)據(jù)結(jié)構(gòu)(七):圖

定義

圖是由若干給定的頂點(diǎn)及連接兩頂點(diǎn)的邊所構(gòu)成的圖形,這種圖形通常用來(lái)描述某些事物之間的某種特定關(guān)系。頂點(diǎn)用于代表事物,連接兩頂點(diǎn)的邊則用于表示兩個(gè)事物間具有這種關(guān)系。

定義來(lái)自維基百科:圖論

結(jié)構(gòu)

圖中只包含兩種類型的元素:頂點(diǎn)(vertex)和邊(edge),所以圖可以由頂點(diǎn)集合和邊集合進(jìn)行表示,即:G=(V,E)。根據(jù)邊是否具有方向,可以將圖分為有向圖和無(wú)向圖兩種。

無(wú)向圖
graph
有向圖
digraph

上面兩張圖 graphdigraph 具有相同的頂點(diǎn)集合 V,但是邊集合 E 不同,所以屬于不同的兩個(gè)圖。

權(quán)重

上述圖定義中提到,邊的作用是用來(lái)描述兩個(gè)頂點(diǎn)之間的關(guān)系,圖 graphdigraph 兩個(gè)示例中的邊僅能表示兩個(gè)頂點(diǎn)之間是連通的,可達(dá)的,并不能代表別的意義??梢越o邊設(shè)置大小值,即權(quán)重,表示兩個(gè)頂點(diǎn)之間連通的程度。例如當(dāng)圖中頂點(diǎn)表示城市的坐標(biāo)時(shí),則可以設(shè)置連接兩個(gè)頂點(diǎn)的邊的權(quán)重為距離,或某種交通方式消耗的時(shí)間。

graph

從一個(gè)頂點(diǎn)出發(fā),到相鄰頂點(diǎn)的邊的個(gè)數(shù)稱為該頂點(diǎn)的出度,以該頂點(diǎn)為終點(diǎn)的邊的個(gè)數(shù)稱為該頂點(diǎn)的入度。因?yàn)闊o(wú)向圖的邊不具有方向性,所以無(wú)向圖中頂點(diǎn)的出度與入度相等。

路徑與回路

從頂點(diǎn)集合 V 中選擇 v_1 作為起點(diǎn),v_2 作為終點(diǎn),從起點(diǎn)出發(fā)到達(dá)終點(diǎn)的過(guò)程中,經(jīng)過(guò)的邊的集合稱為路徑,路徑中邊的個(gè)數(shù)稱為路徑長(zhǎng)度。若路徑中不重復(fù)經(jīng)過(guò)一個(gè)頂點(diǎn),則稱為簡(jiǎn)單路徑。若起點(diǎn)和終點(diǎn)是同一個(gè)頂點(diǎn),則該路徑也稱之為回路。

連通圖、連通分量與生成樹(shù)

對(duì)于無(wú)向圖,若圖中任意兩個(gè)頂點(diǎn)之間存在路徑,則該無(wú)向圖為連通圖;對(duì)于有向圖,若圖中任意兩個(gè)頂點(diǎn)之間存在路徑,則該有向圖為強(qiáng)連通圖。

對(duì)于無(wú)向圖,其極大連通子圖稱為該無(wú)向圖的連通分量;對(duì)于有向圖,其極大強(qiáng)連通子圖稱為該無(wú)向圖的強(qiáng)連通分量。

根據(jù)連通分量定義可知,對(duì)于連通圖,極大連通子圖是其自身,所以圖的連通分量就是其自身。對(duì)于非連通圖,因?yàn)榭梢源嬖诙鄠€(gè)極大連通子圖,所以可以具有多個(gè)連通分量。

連通圖的極小連通子圖也稱之為生成樹(shù),即包含頂點(diǎn)集合 V,但是邊的個(gè)數(shù)為 |V|-1。生成樹(shù)可以有多個(gè),經(jīng)常提到的最小生成樹(shù),也就是帶權(quán)連通圖中權(quán)值之和最小的生成樹(shù)。

圖相關(guān)的概念較多,再次強(qiáng)調(diào)一點(diǎn),就像在介紹二叉樹(shù)時(shí)所說(shuō),概念只是起到輔助說(shuō)明的角色,為了方便理解和傳播事物而誕生的產(chǎn)物,不應(yīng)該過(guò)分糾結(jié)概念而忽略了真正的目的。

github 鏈接:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容