蘭州網(wǎng)絡(luò)推廣效果關(guān)于seo的行業(yè)崗位有哪些
- (??? ),Hello我是祐言QAQ
- 我的博客主頁:C/C++語言,Linux基礎(chǔ),ARM開發(fā)板,軟件配置等領(lǐng)域博主🌍
- 快上🚘,一起學(xué)習(xí),讓我們成為一個強大的攻城獅!
- 送給自己和讀者的一句雞湯🤔:集中起來的意志可以擊穿頑石!
- 作者水平很有限,如果發(fā)現(xiàn)錯誤,可在評論區(qū)指正,感謝🙏
一、什么是圖
???????? 圖是一種由節(jié)點(頂點)和連接這些節(jié)點的邊構(gòu)成的非線性數(shù)據(jù)結(jié)構(gòu)。每個節(jié)點可以表示一個實體,而邊則表示節(jié)點之間的關(guān)系。圖的設(shè)計可以用于模擬現(xiàn)實世界中的各種復(fù)雜關(guān)系和連接,從社交網(wǎng)絡(luò)到通信網(wǎng)絡(luò),都可以通過圖來更好地理解和分析。
二、圖的分類
????????圖可以根據(jù)多個維度進行分類:
- 有向圖(Directed Graph)和無向圖(Undirected Graph): 有向圖中的邊具有方向,表示從一個節(jié)點指向另一個節(jié)點的關(guān)系;而無向圖中的邊沒有方向,表示兩個節(jié)點之間的對等關(guān)系。
- 有權(quán)圖(Weighted Graph)和無權(quán)圖(Unweighted Graph): 在有權(quán)圖中,每條邊都有一個權(quán)重,可以表示節(jié)點之間的某種度量,如距離、成本等;而在無權(quán)圖中,邊沒有權(quán)重,只表示連接關(guān)系。
- 簡單圖和多重圖(Multigraph): 簡單圖中不存在自環(huán)和重復(fù)的邊;而多重圖允許自環(huán)和可能具有相同的邊。
三、圖的邊
????????圖的邊是連接節(jié)點的實體,它可以包含以下信息:
- 權(quán)重(Weight): 如果是有權(quán)圖,每條邊都有一個權(quán)重,代表節(jié)點之間的某種度量。
- 方向: 在有向圖中,邊從一個節(jié)點指向另一個節(jié)點,有方向性;在無向圖中,邊沒有方向,表示雙向關(guān)系。
- 標(biāo)簽(Label): 可以為邊添加標(biāo)簽,表示連接的類型或特性。
????????有些圖的邊或弧具有與它相關(guān)的數(shù)字,這種與圖的邊或弧相關(guān)的數(shù)叫做權(quán),表示從一個頂點到另一個頂點的距離或花費或時間。我們稱這種帶權(quán)的圖為網(wǎng)。如下圖所示,即為網(wǎng)。
?
四、圖的表達(dá)方式
????????圖可以使用不同的數(shù)據(jù)結(jié)構(gòu)來表示:
- 鄰接矩陣(Adjacency Matrix): 使用二維數(shù)組表示圖的頂點之間的連接關(guān)系。矩陣的行和列分別代表頂點,矩陣元素表示邊的存在與否或權(quán)重。
????????????????????????????????????????????????????????圖中 1 表示相連接,0 表示不相連
- 鄰接表(Adjacency List): 使用鏈表或數(shù)組表示圖的頂點以及與其相鄰的頂點。每個頂點對應(yīng)一個列表,包含與之相連的頂點。
?
五、圖的遍歷
????????圖遍歷是訪問圖中所有節(jié)點的方法,有兩種主要方法:
- 深度優(yōu)先搜索(DFS): 從起始節(jié)點開始,沿著一條路徑盡可能深入,直到無法繼續(xù)為止,然后回溯到之前的節(jié)點,繼續(xù)探索其他路徑。
1.遍歷思路
- 訪問頂點v;
- 從v的未被訪問的鄰接點中選取一個頂點w,從w出發(fā)進行深度優(yōu)先遍歷;
- 重復(fù)上述兩步,直至圖中所有和v有路徑相通的頂點都被訪問到。
2.列舉
????????按深度優(yōu)先遍歷就是:A B C D E F G H(此時這條線路已經(jīng)走到盡頭,可是還有一個I頂點沒有遍歷,所以回到G,發(fā)現(xiàn)G的鄰接點都遍歷過了,再回到F,發(fā)現(xiàn)F的鄰接點也都遍歷過了,直到D頂點,發(fā)現(xiàn)I這個頂點沒有遍歷,所以把I再遍歷,繼續(xù)回溯,最終回到起點A。
??????
- 廣度優(yōu)先搜索(BFS): 從起始節(jié)點開始,先訪問所有與其直接相鄰的節(jié)點,然后逐層向外擴展,確保先訪問離起始節(jié)點近的節(jié)點。
1.遍歷思路
- 從圖中某個頂點V0出發(fā),并訪問此頂點;
- 從V0出發(fā),訪問V0的各個未曾訪問的鄰接點W1,W2,…,Wk;然后,依次從W1,W2,…,Wk出發(fā)訪問各自未被訪問的鄰接點;
- 重復(fù)步驟2,直到全部頂點都被訪問為止。
2.列舉?
六、圖的算法
????????圖的算法是一個重要的主題,包括最短路徑、連通性、最大流、最小生成樹等問題。比如Dijkstra算法可以用于尋找圖中的最短路徑,Kruskal算法和Prim算法可以用于求解最小生成樹問題。這些算法的選擇和應(yīng)用取決于圖的特性和問題的需求。
七、適用說明
????????圖的應(yīng)用范圍廣泛,包括但不限于:
- 社交網(wǎng)絡(luò)分析: 用于分析人際關(guān)系、社區(qū)發(fā)現(xiàn)、信息傳播等。
- 路線規(guī)劃: 幫助找到最短路徑、最優(yōu)路線,應(yīng)用于導(dǎo)航和交通規(guī)劃。
- 計算機網(wǎng)絡(luò): 描述計算機之間的連接、拓?fù)浣Y(jié)構(gòu),用于網(wǎng)絡(luò)設(shè)計和分析。
- 編譯器: 用于構(gòu)建控制流圖、數(shù)據(jù)依賴圖,進行代碼優(yōu)化和分析。
????????圖還可以用于生物信息學(xué)(比如在蛋白質(zhì)相互作用網(wǎng)中尋找功能模塊)、物聯(lián)網(wǎng)(比如在設(shè)備間建立最優(yōu)的通信路徑)等領(lǐng)域。
????????總之,圖是一個強大的數(shù)據(jù)結(jié)構(gòu),能夠捕捉和表示各種實體之間的關(guān)系,為解決各種復(fù)雜問題提供了有效的工具。不同類型的圖和圖遍歷算法可以根據(jù)問題的性質(zhì)和需求來選擇使用。
????????更多C語言、Linux系統(tǒng)、ARM板實戰(zhàn)和數(shù)據(jù)結(jié)構(gòu)相關(guān)文章,關(guān)注專欄:
? ?手撕C語言
? ? ? ? ? ? 玩轉(zhuǎn)linux
????????????????????腳踢數(shù)據(jù)結(jié)構(gòu)
?? ? ? ? ? ? ? ? ?? ? ? ? ? 6818(ARM)開發(fā)板實戰(zhàn)
📢寫在最后
- 今天的分享就到這啦~
- 覺得博主寫的還不錯的煩勞?
一鍵三連喔
~ - 🎉感謝關(guān)注🎉