圖的基本術語——非八股文

? ? ? ? 我之前只看到了數據結構與算法的冰山一角感覺這些術語只會讓知識越來越難理解,現在來看,他們完美抽象一些概念和知識,非常重要。

????????本篇概念肯定總結不全,只有遇到的會寫上,持續更新,之前文章已經提過的如并查集、最短路徑、鄰接表等不再重復,這里為補充。


????????圖形結構中的元素之間存在多對多的聯系。

? ? ? ? 圖形結構中,每一個元素前驅結點可以有多個,后繼結點也可以有多個。? ??

?????????首先我們肯定都知道圖可以分為有向圖無向圖,它們各自有一些獨屬于自己的術語和共同的術語,下面這個思維導圖幫大家理清一些概念:??


共同術語?

我們先從共同的概念說起 :

  • 完全圖:針對有向圖無向圖,每兩個頂點都有一條邊(有向圖至少?n(n-1)?條邊,無向圖至少\frac{n(n-1)}{2}條邊),如圖所示。

  • 稀疏圖與稠密圖?:根據概念來說,有很少條邊或弧(如?e<nlog_2n?,其中e為邊的數目,n為頂點的個數)。需要注意的的是,因為這兩個概念常用于選擇鄰接矩陣或鄰接表,具體選用要與算法結合。
  • 權和網:權和網可以理解為帶權圖,在絕大數應用中,每條邊應該是帶有權重的,權可以表示從一個頂點到另一個頂點的距離、時間或代價等含義。
  • 鄰接點:無向圖中鄰接點是沒有方向的,或者稱為對稱的,假若頂點v 和頂點w 之間存在一條邊, 則稱頂點v 和w 互為鄰接點。在有向圖中,鄰接點是有方向的,如果存在從頂點到頂點的有向邊,那么我們說頂點是頂點的出邊鄰接點,頂點是頂點的入邊鄰接點。

無向圖

  • 連通:兩個頂點有路徑。
  • 連通圖:任意兩個頂點有路徑,但不一定都有邊。
  • 連通分量:指在無向圖中的極大連通子圖,如圖中的無向非連通圖有兩個連通分量。

  • 度:頂點v的度是指和v相關聯的邊的數目;如圖中,頂點v的度為3。

有向圖

  • 強連通圖:任意兩個頂點有路徑,但不一定都有邊。(注意并不一定兩個頂點V_iV_j有兩條邊,只要可以形成環就行。)完全有向圖肯定就是強連通圖。
  • 強連通分量:有向圖中的極大強連通子圖稱作有向圖的強連通分量,如圖所示的有向非強連通圖有兩個強連通分量。

  • 出度和入度:對于有向圖,頂點v的度被分為出度和入度,入度是以頂點v為頭的的弧數目(箭頭指向v),出度就是以頂點v為尾的的弧數目。頂點v的入度為1,出度為2。?

壓縮存儲

????????壓縮存儲是指在不丟失數據信息的前提下,對數據進行重新編碼或組織,以減少數據所占用的存儲空間的方法。通過特定的算法和數據結構,將原始數據轉換為一種更緊湊的表示形式,在需要使用數據時再進行解壓縮還原。

? ? ? ? 這里主要介紹矩陣的壓縮存儲。

? ? ? ? 對稱矩陣

? ? ? ? 即a_{i j}=a_{j i},首先我們先回顧一個等差數列的公式:1+2+3+...+n=\frac{n(n+1)}{2}

根據這個公式,我們就可以把一個n維矩陣,用一個一維數組進行存儲了。無向圖的鄰接矩陣就是對稱矩陣可用一維數組壓縮儲存。?

? ? ? ? 可以按行主序即下三角存儲;或者按列主序即上三角存儲。如果我們要找矩陣中位置第i行第j列的元素a_{ij},還是利用上面等差數列公式按行存儲和列存儲即可搞定。

? ? ? ? 三角矩陣

? ? ? ? 三角矩陣即只有矩陣的一個三角的數字有意義,對稱矩陣就可以理解為三角矩陣,所以三角矩陣的壓縮儲存與對角矩陣基本一樣。

? ? ? ? 對角矩陣

? ? ? ? 就是只在對角線上存在的元素有意義。 一般分兩種方式存儲:行序存儲和對角線。

????????可以將主對角線元素存儲在一個一維數組中,通過數組下標與矩陣主對角線元素的對應關系來實現對矩陣元素的訪問和操作。例如,對于對角矩陣A的主對角線元素a_{ii},可以存儲在一維數組B中,B[i] = a_{ii}

? ? ? ? 其它

? ? ? ? 另外稀疏矩陣的壓縮存儲可以用一個三元組表來表示稀疏矩陣中的非0元素。

????????稀疏矩陣是指矩陣中絕大多數元素為 0,只有少數非 0 元素的矩陣。為了節省存儲空間和提高運算效率,通常采用壓縮存儲的方式來存儲稀疏矩陣,其中一種常見的方法就是用三元組表來表示稀疏矩陣中的非 0 元素。

????????三元組表中的每個三元組通常表示為(行標,列標,值),分別記錄了稀疏矩陣中每個非 0 元素所在的行、列位置以及該元素的值。通過這種方式,可以只存儲稀疏矩陣中的非 0 元素,而不必像常規的二維數組存儲方式那樣為大量的 0 元素分配存儲空間,從而達到壓縮存儲的目的。例如,對于一個稀疏矩陣:

????????可以用三元組表表示為:{(1, 1, 1), (2, 3, 3), (4, 2, 4)}

????????除了三元組表,壓縮存儲稀疏矩陣還可以使用十字鏈表等其他方法。

參考文獻

稠密圖與稀疏圖判別 - 焓青 - 博客園

【數據結構】圖的基本概念—無/有向圖、權和網、完全圖、路徑與回路-阿里云開發者社區

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

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

相關文章

oracle: 表分區>>范圍分區,列表分區,散列分區/哈希分區,間隔分區,參考分區,組合分區,子分區/復合分區/組合分區

分區表 是將一個邏輯上的大表按照特定的規則劃分為多個物理上的子表&#xff0c;這些子表稱為分區。 分區可以基于不同的維度&#xff0c;如時間、數值范圍、字符串值等&#xff0c;將數據分散存儲在不同的分區 中&#xff0c;以提高數據管理的效率和查詢性能&#xff0c;同時…

【單層神經網絡】基于MXNet的線性回歸實現(底層實現)

寫在前面 剛開始先從普通的尋優算法開始&#xff0c;熟悉一下學習訓練過程下面將使用梯度下降法尋優&#xff0c;但這大概只能是局部最優&#xff0c;它并不是一個十分優秀的尋優算法 整體流程 生成訓練數據集&#xff08;實際工程中&#xff0c;需要從實際對象身上采集數據…

本地快速部署DeepSeek-R1模型——2025新年賀歲

一晃年初六了&#xff0c;春節長假余額馬上歸零了。今天下午在我的電腦上成功部署了DeepSeek-R1模型&#xff0c;抽個時間和大家簡單分享一下過程&#xff1a; 概述 DeepSeek模型 是一家由中國知名量化私募巨頭幻方量化創立的人工智能公司&#xff0c;致力于開發高效、高性能…

C++11詳解(一) -- 列表初始化,右值引用和移動語義

文章目錄 1.列表初始化1.1 C98傳統的{}1.2 C11中的{}1.3 C11中的std::initializer_list 2.右值引用和移動語義2.1左值和右值2.2左值引用和右值引用2.3 引用延長生命周期2.4左值和右值的參數匹配問題2.5右值引用和移動語義的使用場景2.5.1左值引用主要使用場景2.5.2移動構造和移…

在K8S中,pending狀態一般由什么原因導致的?

在Kubernetes中&#xff0c;資源或Pod處于Pending狀態可能有多種原因引起。以下是一些常見的原因和詳細解釋&#xff1a; 資源不足 概述&#xff1a;當集群中的資源不足以滿足Pod或服務的需求時&#xff0c;它們可能會被至于Pending狀態。這通常涉及到CPU、內存、存儲或其他資…

手寫MVVM框架-構建虛擬dom樹

MVVM的核心之一就是虛擬dom樹&#xff0c;我們這一章節就先構建一個虛擬dom樹 首先我們需要創建一個VNode的類 // 當前類的位置是src/vnode/index.js export default class VNode{constructor(tag, // 標簽名稱&#xff08;英文大寫&#xff09;ele, // 對應真實節點children,…

linux內核源代碼中__init的作用?

在 Linux 內核源代碼中&#xff0c;__init是一個特殊的宏&#xff0c;用于標記在內核初始化階段使用的變量或函數。這個宏的作用是告訴內核編譯器和鏈接器&#xff0c;被標記的變量或函數只在內核的初始化階段使用&#xff0c;在系統啟動完成后就不再需要了。因此&#xff0c;這…

【大數據技術】教程03:本機PyCharm遠程連接虛擬機Python

本機PyCharm遠程連接虛擬機Python 注意:本文需要使用PyCharm專業版。 pycharm-professional-2024.1.4VMware Workstation Pro 16CentOS-Stream-10-latest-x86_64-dvd1.iso寫在前面 本文主要介紹如何使用本地PyCharm遠程連接虛擬機,運行Python腳本,提高編程效率。 注意: …

pytorch實現門控循環單元 (GRU)

人工智能例子匯總&#xff1a;AI常見的算法和例子-CSDN博客 特性GRULSTM計算效率更快&#xff0c;參數更少相對較慢&#xff0c;參數更多結構復雜度只有兩個門&#xff08;更新門和重置門&#xff09;三個門&#xff08;輸入門、遺忘門、輸出門&#xff09;處理長時依賴一般適…

PAT甲級1032、sharing

題目 To store English words, one method is to use linked lists and store a word letter by letter. To save some space, we may let the words share the same sublist if they share the same suffix. For example, loading and being are stored as showed in Figure …

最小生成樹kruskal算法

文章目錄 kruskal算法的思想模板 kruskal算法的思想 模板 #include <bits/stdc.h> #define lowbit(x) ((x)&(-x)) #define int long long #define endl \n #define PII pair<int,int> #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); using na…

為何在Kubernetes容器中以root身份運行存在風險?

作者&#xff1a;馬辛瓦西奧內克&#xff08;Marcin Wasiucionek&#xff09; 引言 在Kubernetes安全領域&#xff0c;一個常見的建議是讓容器以非root用戶身份運行。但是&#xff0c;在容器中以root身份運行&#xff0c;實際會帶來哪些安全隱患呢&#xff1f;在Docker鏡像和…

js --- 獲取時間戳

介紹 使用js獲取當前時間戳 語法 Date.now()

ConcurrentHashMap線程安全:分段鎖 到 synchronized + CAS

專欄系列文章地址&#xff1a;https://blog.csdn.net/qq_26437925/article/details/145290162 本文目標&#xff1a; 理解ConcurrentHashMap為什么線程安全&#xff1b;ConcurrentHashMap的具體細節還需要進一步研究 目錄 ConcurrentHashMap介紹JDK7的分段鎖實現JDK8的synchr…

Vue和Java使用AES加密傳輸

背景&#xff1a;Vue對參數進行加密&#xff0c;對響應進行解密。Java對參數進行解密&#xff0c;對響應進行解密。不攔截文件上傳類請求、GET請求。 【1】前端配置 安裝crypto npm install crypto-js編寫加解密工具類encrypt.js import CryptoJS from crypto-jsconst KEY …

開發板目錄 /usr/lib/fonts/ 中的字體文件 msyh.ttc 的介紹【微軟雅黑(Microsoft YaHei)】

本文是博文 https://blog.csdn.net/wenhao_ir/article/details/145433648 的延伸擴展。 本文是博文 https://blog.csdn.net/wenhao_ir/article/details/145433648 的延伸擴展。 問&#xff1a;運行 ls /usr/lib/fonts/ 發現有一個名叫 msyh.ttc 的字體文件&#xff0c;能介紹…

[ESP32:Vscode+PlatformIO]新建工程 常用配置與設置

2025-1-29 一、新建工程 選擇一個要創建工程文件夾的地方&#xff0c;在空白處鼠標右鍵選擇通過Code打開 打開Vscode&#xff0c;點擊platformIO圖標&#xff0c;選擇PIO Home下的open&#xff0c;最后點擊new project 按照下圖進行設置 第一個是工程文件夾的名稱 第二個是…

述評:如果抗拒特朗普的“普征關稅”

題 記 美國總統特朗普宣布對美國三大貿易夥伴——中國、墨西哥和加拿大&#xff0c;分別征收10%、25%的關稅。 他威脅說&#xff0c;如果這三個國家不解決他對非法移民和毒品走私的擔憂&#xff0c;他就要征收進口稅。 去年&#xff0c;中國、墨西哥和加拿大這三個國家&#…

九. Redis 持久化-AOF(詳細講解說明,一個配置一個說明分析,步步講解到位 2)

九. Redis 持久化-AOF(詳細講解說明&#xff0c;一個配置一個說明分析&#xff0c;步步講解到位 2) 文章目錄 九. Redis 持久化-AOF(詳細講解說明&#xff0c;一個配置一個說明分析&#xff0c;步步講解到位 2)1. Redis 持久化 AOF 概述2. AOF 持久化流程3. AOF 的配置4. AOF 啟…

C++11新特性之long long超長整形

1.介紹 long long 超長整形是C11標準新添加的&#xff0c;用于表示更大范圍整數的類型。 2.用法 占用空間&#xff1a;至少64位&#xff08;8個字節&#xff09;。 對于有符號long long 整形&#xff0c;后綴用“LL”或“II”標識。例如&#xff0c;“10LL”就表示有符號超長整…