圖論基礎理論

在我看來,想要掌握圖的基礎應用,僅需要三步走。

什么是圖(基本概念)、圖的構造(打地基)、圖的遍歷方式(應用的基礎)

只要能OK的掌握這三步、就算圖論入門了!!!

當然新手也不要恐懼啥的,新知識嘛,就是需要一個接受的過程。

學術上,是這么稱圖的:?

圖由頂點(Vertex)集合和(Edge)集合組成,通常表示G(v,e)

當然,這太學術了(~﹃~)~zZ

換句話說,圖,就是由頂點與邊組成的。

頂點就是各個節點。邊就是各個節點的關系or性質。

基本概念:

首先就是圖的種類,畢竟人還分不同膚色呢,就更不用說圖了。

圖分無向圖有向圖

無向圖,邊之間沒有方向。

有向圖,邊之間存在方向。

接下來,咱們講講的概念。他在有向圖與無向圖中,分別有不同的含義。

無向圖中,只有統一的 “”(因為邊無方向)

:與該節點有幾條邊相鄰。

如圖,節點1,有4條邊與其相連。故度為4。

有向圖中,他分別是出度入度總度

出度: 指向其他節點的邊。

入度: 其他節點指向本節點的邊。

總度: 出度+入度的總和。

如圖,節點1:出度(3)、入度(1)、總度(3+1=4)

接下來就講到,連通圖強連通圖的概念。

連通圖是 圖中的概念。意思是每個節點之間,都能相互到達。

但是如果節點之間,無法相互抵達,就是非連通圖

如下所示,左側每個節點之間,都能相互到達,為連通圖,而右側不是卻不能。為非連通圖。

強連通圖同樣也是每個節點之間,都能相互抵達,但是有個前提條件,必須按照邊的方向。

如圖左側,直接形成了閉環。故為 強連通圖。

而圖的右側,為非強連通圖(舉例:節點4 無法到達 節點3)

構造:

有三種構造方式。

拓撲儲存鄰接矩陣鄰接表

拓撲儲存,雖然是Carl自創的名字,但我挺認同的(。?ω?。)

如圖,一共有8個節點,如果,想要將這8個節點儲存,需要8*2個單位。

如果存在二維數組中,大概需要建立一個二維數組儲存。

但是這樣的前提是,想要遍歷所有內容非常麻煩。(用map儲存,用的是同樣的效果)

鄰接矩陣

鄰接矩陣,通過二維數組來儲存。是從節點的角度來考慮的。有多大的節點,就分配,其平方大的數組。

如圖grid[2][5]=6,代表節點2與節點5之間,有一條節點,權值為6;

在有向圖中,grid[2][5]=6 表示為,節點2指向節點6;

在無向圖中,若向表示2與5之間有節點。grid[2][5]=6、grid[5][2]=6。

這樣聯動著表示。

優點:可以迅速查詢,兩點直接是否有聯通。

缺點:適用于稠密圖,若果節點變很少,會造成空間極大的浪費。

鄰接表

鄰接表是通過,數組+鏈表來儲存的。

優點:需要多少邊,就申請多少節點。

缺點:若要查詢兩點之間,是否連通。無法很快查詢到。

應用:

其實最后一部分,叫做圖的遍歷方式更好。

但為啥叫做應用呢,圖的應用不就是圖的遍歷嗎,通過各種遍歷解決問題。

圖的遍歷方式大概分為兩大類:

深度優先搜索(DFS),與廣度優先搜索(BFS)

其實圖的遍歷方式與樹的遍歷方式大差不差。

主要還是需要借助實戰。

從下一篇博客,就要開始實戰嘍。

注意??????,用Carl的話說,圖論是非常龐大的知識體系,以上只是一小部分理論基礎。

更多的,還是要考刷題積累。

接下來,我們要面對,深度優先搜索(dfs)、廣度優先搜索(bfs)、并查集、拓撲排序、最小生成樹系列、最短路徑系列....熱血沸騰吧!


借鑒博客:

1、圖論理論基礎


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/901268.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/901268.shtml
英文地址,請注明出處:http://en.pswp.cn/news/901268.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

詳細解讀react框架中的hooks

React Hooks 是 React 16.8 引入的一項革命性特性,它允許你在函數組件中使用狀態(state)和其他 React 特性,而無需編寫 class 組件。下面將詳細解讀 React Hooks 的核心概念、常用 Hooks 及其工作原理。 一、Hooks 的核心概念 1. 什么是 Hooks Hooks …

主機IP動態變化時如何通過固定host.docker.internal訪問本機服務

場景需求——主機IP動態變化時,通過固定的 http://host.docker.internal:11555 訪問本機服務,核心問題在于 host.docker.internal 的解析邏輯與動態IP的適配。以下是分步解決方案: 一、核心原理:host.docker.internal 的本質與局…

插值算法 - 最近鄰插值實現

目錄 1. 導入必要的庫 2. nearest_neighbor_interpolation 3. 測試代碼 數學原理 完整代碼 本文實現了基于最近鄰插值算法的圖像縮放功能。 它使用 Python 編寫,主要依賴于NumPy和PIL(Python Imaging Library)庫。 NumPy用于高效的數值計算,而PIL僅用于圖像的加載和…

windows中搭建Ubuntu子系統

windows中搭建虛擬環境 1.配置2.windows中搭建Ubuntu子系統2.1windows配置2.1.1 確認啟用私有化2.1.2 將wsl2設置為默認版本2.1.3 確認開啟相關配置2.1.4重啟windows以加載更改配置 2.2 搭建Ubuntu子系統2.2.1 下載Ubuntu2.2.2 遷移位置 3.Ubuntu子系統搭建docker環境3.1安裝do…

MySQL事務機制

目錄 原子性 持久性 隔離性 隔離級別(并發事務之間的關系) 讀未提交 讀已提交 可重復讀 串行化(最嚴格的隔離級別) 一致性 問題 不可重復讀性(已經提交的數據) 什么是臟讀問題(未提交的數據)? 幻讀 保存點 自動提交機制--autocommit 會話隔離級別與全局隔離級…

Cadence學習筆記之---直插元件的封裝制作

目錄 01 | 引 言 02 | 環境描述 03 | 操作步驟 04 | 結 語 01 | 引 言 在之前發布的Cadence小記中,已經講述了怎樣制作熱風焊盤,貼片(SMD)焊盤、通孔、過孔,以及貼片元件的封裝。 本篇關于Cadence的小記主要講如何制作直插元件的封裝。 …

【第四十周】文獻閱讀:用于檢索-增強大語言模型的查詢與重寫

目錄 摘要Abstract用于檢索-增強大語言模型的查詢與重寫研究背景方法論基于凍結LLM的重寫方案基于可訓練重寫器的方案重寫器預熱訓練(Rewriter Warm-up)強化學習(Reinforcement Learning) 創新性實驗結果局限性總結 摘要 這篇論文…

java學習總結(if switch for)

一.基本結構 1.單分支if int num 10; if (num > 5) {System.out.println("num 大于 5"); } 2.雙分支if-else int score 60; if (score > 60) {System.out.println("及格"); } else {System.out.println("不及格"); } 3.多分支 int…

yum的基本操作和vim指令

在我們的手機端或者Windows上下載軟件,可以在相應的應用商店或者官網進行下載,這樣對于用戶來說十分的方便和便捷。而在Linux上,也有類似的安裝方式,我們來一一了解一下。 Linux安裝軟件的3種方法 源代碼安裝 在Linux下安裝軟件…

C++ CUDA開發入門

CUDA開發筆記 文章目錄 CUDA開發筆記[toc]1 概述2 環境3 命令行編譯4 CMAKE引入CUDA5 vscode開發CUDA6 Qt中使用CUDA-CMake7 QMake配置CUDA8 核函數9 核函數調用9.1 核函數調用語法9.2 執行配置參數詳解9.3 關鍵調用步驟9.4 重要注意事項9.5 調用示例分析9.6 最佳實踐建議 10 線…

llm開發框架新秀

原文鏈接:https://i68.ltd/notes/posts/20250404-llm-framework3/ google開源ADK-Agent Development Kit 開源的、代碼優先的 Python 工具包,用于構建、評估和部署具有靈活性和控制力的復雜智能體項目倉庫:https://github.com/google/adk-python 2.6k項目文檔:Age…

VM——相機拍照失敗

1、問題:相機頻閃觸發,在MVS中正常出圖,在VM中出現拍照失敗 2、解決: 1、首先排查網絡設置(巨幀是否設置) 2、電腦的所有防火墻是否關閉 3、在MVS中恢復相機的設置參數為默認參數,刪除VM中的全…

【時頻譜分析】小波分析

算法配置頁面,也可以一鍵導出結果數據 報表自定義繪制 獲取和下載【PHM學習軟件PHM源碼】的方式 獲取方式:Docshttps://jcn362s9p4t8.feishu.cn/wiki/A0NXwPxY3ie1cGkOy08cru6vnvc

怎么免費下載GLTF/GLB格式模型文件,還可以在線編輯修改

? 現在非常流行glb格式模型,和gltf格式文件,可是之類模型網站非常非常少 1,咱們先直接打開http://glbxz.com 官方glb下載網站 glbxz.com 2 可以搜索,自己想要的模型關鍵詞 3,到自己想下載素材頁面 4,…

【6】深入學習http模塊(萬字)-Nodejs開發入門

深入學習http模塊 前言http一個Web服務器項目創建代碼運行代碼解析 Server屬性:keepAlive屬性:keepAliveTimeout屬性:maxHeaderSize屬性:requestTimeout屬性:maxRequestsPerSocket方法:close()方法&#xf…

buuctf sql注入類練習

BUU SQL COURSE 1 1 實例無法訪問 / Instance cant be reached at that time | BUUCTF但是這個地方很迷惑就是這個 一個 # 我們不抓包就不知道這個是sql注入類的判斷是 get 類型的sql注入直接使用sqlmap我們放入到1.txt中 目的是 優先檢測 ?id1>python3 sqlmap.py -r 1.t…

(即插即用模塊-特征處理部分) 三十二、(TGRS 2024) MDAF 多尺度雙表示對齊過濾器

文章目錄 1、Multiscale Dual-Representation Alignment Filter2、代碼實現 paper:SFFNet: A Wavelet-Based Spatial and Frequency Domain Fusion Network for Remote Sensing Segmentation Code:https://github.com/yysdck/SFFNet 1、Multiscale Dual-…

Python 中為什么 hash(-1) == hash(-2)?

推薦超級課程: 本地離線DeepSeek AI方案部署實戰教程【完全版】Docker快速入門到精通Kubernetes入門到大師通關課AWS云服務快速入門實戰目錄 讓我們從哪里開始?獲取源代碼!讓我們瀏覽一下這是正確/完整的答案嗎?結論前幾天在瀏覽 Reddit 時,我在 r/Python 上看到了這樣一個…

基于PySide6與pycatia的CATIA繪圖比例智能調節工具開發全解析

引言:工程圖紙自動化處理的技術革新 在機械設計領域,CATIA圖紙的比例調整是高頻且重復性極強的操作。傳統手動調整方式效率低下且易出錯。本文基于PySide6pycatia技術棧,提出一種支持智能比例匹配、實時視圖控制、異常自處理的圖紙批處理方案…

macos下 ragflow二次開發環境搭建

參考官網鏈接 https://ragflow.io/docs/dev/launch_ragflow_from_source虛擬環境 git clone https://github.com/infiniflow/ragflow.git cd ragflow/ # if not pipx, please install it at first pip3 install pipxpipx install uv uv sync --python 3.10 --all-extras 安裝 …