十個基礎圖論演算法介紹 - Franc0
10個基本的圖演算法:
bfs廣度優先搜尋:
這是一種遍歷演算法。它從給定的頂點開始,並在移動到下一層的頂點之前探索當前級別的所有鄰居。它是使用佇列資料結構實現的。
用途:
- 確定未加權圖中的最短路徑和最小生成樹
- 構建網頁索引
- 在社交網路上搜尋
- 在對等網路中找到可用的鄰居節點
dfs深度優先搜尋:
這是一種遍歷演算法。它從給定的頂點開始,並在回溯之前沿著每個分支儘可能地探索。它是使用堆疊資料結構實現的。
用途:
- 找到 2 個頂點之間的路徑
- 檢測圖中的迴圈
- 拓撲排序
- 解決迷宮難題
最短路徑:
在 2 個給定頂點之間找到一條路徑,使得應該經過的邊的權重之和最小。有兩種主要演算法:
- Dijkstra
- Bellman–Ford
用途:
- 在地圖軟體中查詢從一個位置到另一位置的行進方向
- 解決網路中的最小延遲路徑問題
- 透過不同狀態之間的轉換確定到達目標狀態的選擇
迴圈檢測:
檢測是否存在首尾頂點相同的路徑。有兩種主要演算法:
- 弗洛伊德迴圈檢測
- 布倫特
用途:
- 基於分散式訊息的演算法
- 檢測併發系統中的死鎖
- 在分散式叢集上處理大規模圖
- 確定可以將訊息對映到相同加密值的鍵。
最小生成樹:
找到連線所有頂點的邊的子集,沒有迴圈的權重總和最小。有兩種主要演算法:
- Prim
- Kruskal
用途:
- 影像註冊
- 避免網路迴圈的協議
- 基於圖形的資料叢集的分析
強連線部件
尋找頂點的子集,其中每個頂點都可以從其他每個頂點到達。
有2種主要演算法:
- Kosaraju
- Tarjan
用途:
- 對二元圖的邊進行分類
- 形式驗證中的模型檢查。
- 在社交網路中找到強聯絡的人群,並根據共同興趣進行推薦
拓撲排序
找到一個DAG中頂點的線性排序,使排序中的每條有向邊(x,y),頂點x都在y之前。
有2種主要演算法。
- Kahn
- 深度優先搜尋
用途:
- 指令排程
- 資料序列化
- 確定編譯任務的順序
- 解決連結器中的符號依賴問題
圖形著色:
為頂點(或邊)分配k種顏色,同時確保任何兩個相鄰的頂點(或邊)不具有相同的顏色。
有2種主要演算法。
- 廣度優先搜尋
- 深度優先搜尋
用途:
- 檢查一個圖是否是二方bipartite的
- 著色日程安排時間表
- 分配移動無線電頻率
- 給國家的地理地圖著色
最大流動
一個圖也可以被建模為一個流動網路,邊的權重為流動能力。最大流動是指能夠獲得最大可能流量的流動路徑。
有3種主要演算法。
- 福特-福爾克森
- 埃德蒙茲-卡普
- Dinic
用途:
- 流通需求問題
- 航空公司的機組人員安排
- 拋棄那些在剩下的比賽中無法到達當前領導者的團隊
- 影像分割以區分影像中的背景和前景
匹配
尋找沒有共同頂點的邊的子集。
有3種主要演算法:
- Hopcroft-Karp
- Hungarian
- Blossom
用途:
- 在兩組人之間牽線搭橋
- 資源分配問題
- 旅行中的資源分配和最佳化
相關文章
- 圖論演算法遍歷基礎圖論演算法
- Pandas基礎介紹
- Elasticsearch 基礎介紹Elasticsearch
- 基礎圖論圖論
- 圖論基礎圖論
- 圖論(三)--各種基礎圖演算法總結圖論演算法
- 1、Oracle 基礎介紹Oracle
- JDBC的基礎介紹JDBC
- ActiveMq的基礎介紹MQ
- MySQL 教程基礎介紹MySql
- 蟻群演算法理論介紹演算法
- OSPF介紹及基礎配置
- RocketMQ系列1:基礎介紹MQ
- Django基礎教程之介紹Django
- 圖神經網路的介紹(基礎,DeepWalk和GraphSage)神經網路
- 圖論(一)--基礎概念圖論
- 圖論入門基礎圖論
- 通俗地說決策樹演算法(一)基礎概念介紹演算法
- 演算法資料結構 | 圖論基礎演算法——拓撲排序演算法資料結構圖論排序
- Android RxJava:基礎介紹與使用AndroidRxJava
- 資料倉儲基礎介紹
- Jumpserver基礎運維-01介紹Server運維
- 02-ASP.Net(基礎介紹)ASP.NET
- 【ES6基礎】const介紹
- Python介紹和基礎運用Python
- Linux shell 指令碼基礎介紹Linux指令碼
- Qwt開發筆記(二):Qwt基礎框架介紹、折線圖介紹、折線圖Demo以及程式碼詳解筆記框架
- 圖片基礎知識及不同格式的特點介紹
- 演算法基礎第三章搜尋與圖論演算法圖論
- ComfyUI 基礎教程(二) —— Stable Diffusion 文生圖基礎工作流及模型、常用節點介紹UI模型
- 【重溫基礎】17.WebAPI介紹WebAPI
- PEG.js 介紹與基礎使用JS
- 前端系列文章-html之基礎介紹前端HTML
- 前端基礎之HTTP協議介紹前端HTTP協議
- 金融反欺詐-交易基礎介紹
- 比特幣入門一基礎介紹比特幣
- 詳解javascript拖拽(一)基礎介紹JavaScript
- Sql介紹 與 Sql基礎查詢SQL