圖論入門【數據結構基礎】:什么是圖?如何表示圖?

圖(Graph) 是一種非線性數據結構,用于表示對象之間的關系。圖由 頂點(Vertex)邊(Edge) 組成,其中頂點表示對象,邊表示對象之間的關系。圖廣泛應用于計算機科學、數學、物理、生物、社交網絡等領域。

文章目錄

  • 1. 圖的基本概念
  • 2. 圖的分類
    • 按邊是否有方向
    • 按邊是否有權重
    • 按圖中是否有環
    • 按圖的連通性
  • 3. 圖的表示方法
  • 4. 圖的算法

1. 圖的基本概念

  • 頂點(Vertex):也稱為節點(Node),表示圖中的對象。例如,在社交網絡中,頂點可以表示人。
  • 邊(Edge):表示頂點之間的關系。例如,在社交網絡中,邊可以表示兩個人是朋友。
  • 有向圖(Directed Graph):邊有方向,表示從一個頂點指向另一個頂點。例如,A → B 表示從 A 到 B 的關系。
  • 無向圖(Undirected Graph):邊沒有方向,表示兩個頂點之間的雙向關系。例如,A — B 表示 A 和 B 是相互關聯的。
  • 權重(Weight):邊可以帶有權重,表示關系的強度或成本。例如,在地圖中,邊的權重可以表示兩個城市之間的距離。

2. 圖的分類

按邊是否有方向

  • 有向圖(Directed Graph)
    • 邊有方向,表示為 ( u , v ) (u,v) (u,v),表示從頂點 u u u 指向頂點 v v v
    • 示例:網頁鏈接(A 頁面鏈接到 B 頁面)。
  • 無向圖(Undirected Graph)
    • 邊沒有方向,表示為 u , v {u,v} u,v,表示頂點 u u u 和頂點 v v v 之間的雙向關系。
    • 示例:社交網絡(A 和 B 是朋友)。

按邊是否有權重

  • 帶權圖(Weighted Graph)
    • 邊帶有權重,表示關系的強度或成本。
    • 示例:地圖(邊的權重表示兩個城市之間的距離)。
  • 無權圖(Unweighted Graph)
    • 邊沒有權重,只表示頂點之間是否存在關系。
    • 示例:社交網絡(只表示兩個人是否是朋友)。

按圖中是否有環

  • 有環圖(Cyclic Graph)
    • 圖中存在至少一個環(從一個頂點出發,經過若干邊后回到自身)。
    • 示例: A → B → C → A A → B → C → A ABCA
  • 無環圖(Acyclic Graph)
    • 圖中不存在任何環。
    • 示例:樹(Tree) 是一種特殊的無環圖。

按圖的連通性

  • 連通圖(Connected Graph)
    • 無向圖中,任意兩個頂點之間都存在路徑。
    • 示例:完全連通的社交網絡。
  • 非連通圖(Disconnected Graph)
    • 無向圖中,存在至少兩個頂點之間沒有路徑。
    • 示例:孤立的社交網絡群體。
  • 強連通圖(Strongly Connected Graph)
    • 有向圖中,任意兩個頂點之間都存在雙向路徑。
    • 示例:完全連通的網頁鏈接圖。

3. 圖的表示方法

圖可以通過多種方式表示,常見的有:

  • 鄰接矩陣(Adjacency Matrix)
    • 使用二維數組表示頂點之間的連接關系。
    • 適合稠密圖。
  • 鄰接表(Adjacency List)
    • 使用數組或鏈表存儲每個頂點的鄰接頂點。
    • 適合稀疏圖。
  • 邊列表(Edge List)
    • 直接存儲所有邊的列表。
    • 適合某些特定算法(如 Kruskal 算法)。

4. 圖的算法

圖論中有許多經典算法,例如:

  • 遍歷算法
    • 深度優先搜索(DFS):用于遍歷或搜索圖。
    • 廣度優先搜索(BFS):用于最短路徑問題。
  • 最短路徑算法
    • Dijkstra 算法:用于帶權圖的最短路徑。
    • Floyd-Warshall 算法:用于所有頂點對之間的最短路徑。
  • 最小生成樹算法
    • Kruskal 算法:基于邊列表的最小生成樹。
    • Prim 算法:基于頂點的最小生成樹。
  • 拓撲排序
    • 用于 有向無環圖(DAG) 的排序。
  • 強連通分量
    • Kosaraju 算法:用于查找有向圖的強連通分量。

我將在接下來幾篇文章中和大家分享相關的題目。歡迎大家點贊收藏,持續關注!

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

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

相關文章

如何使用HACS一鍵集成米家與果家設備到HomeAssistant玩轉智能家居

文章目錄 前言1. 下載HACS源碼2. 添加HACS商店3. 綁定米家設備 前言 各位科技潮人和智能家居發燒友們,是不是也夢想著把家里變成一個高科技的空間?有了群暉NAS這位得力助手,不僅存儲空間大得嚇人,還能通過Docker輕松安裝各種應用…

《Java對象“比武場“:Comparable與Comparator的巔峰對決》

目錄 引言: 一、認識接口 1.1 Comparable 1.2 Comparator ?編輯 1.3 核心概念對比 二、代碼實現對比 2.1 Comparable 實現示例 2.2 Comparator 實例示例 三、核心區別詳解 3.1 設計理念差異 3.2 方法調用 3.3 使用情景 四、本質區別總結 引言&#x…

Android自動化測試工具

細解自動化測試工具 Airtest-CSDN博客 以下是幾種常見的Android應用自動化測試工具: Appium:支持多種編程語言,如Java、Python、Ruby、JavaScript等。可以用于Web應用程序和原生應用程序的自動化測試,并支持iOS和Android平臺。E…

Go vs Rust vs C++ vs Python vs Java:誰主后端沉浮

一、核心性能對比(基于TechEmpower基準測試) 語言單核QPS延遲(ms)內存消耗適用場景Rust650,0000.1245MB高頻交易/區塊鏈C++720,0000.0932MB游戲服務器/實時渲染Go230,0000.45110MB微服務/API網關Java180,0001.2450MB企業ERP/銀行系統Python12,0008.5220MBAI接口/快速原型技術…

vue3:八、登錄界面實現-頁面初始搭建、基礎實現

一、初始工作 1、創建登錄文件 在src/views中創建文件LoginView.vue文件 2、創建路由 在router/index.js中增加登錄的信息 代碼 import { createRouter, createWebHistory } from vue-router import HomeView from ../views/HomeView.vue const router createRouter({hist…

結構型模式之適配器模式:讓不兼容的接口兼容

在軟件開發中,經常會遇到這樣一種情況:系統的不同部分需要進行交互,但由于接口不兼容,導致無法直接使用。這時,適配器模式(Adapter Pattern)就能派上用場。適配器模式是設計模式中的結構型模式&…

Qt從入門到入土(十) -數據庫操作--SQLITE

認識 數據庫是用于存儲、管理和檢索數據的系統化集合。它是一種按照特定結構組織數據的存儲方式,通過軟件(數據庫管理系統,DBMS)來實現數據的高效存儲、查詢、更新和管理。通過文件存儲數據適用于少量的數據,而當擁有…

Django REST Framework中的序列化器類和視圖類

序列化器類 一、Serializer序列化類 Serializer是DRF的序列化器基類,提供基本功能,使用Serializer類需要自己定義字段名稱和類型。 BookSerializer(Serializer):name serializers.CharField()price serlializers.IntegerField()date serlializers.…

圖像分類數據集

《動手學深度學習》-3.5-學習筆記 # 通過ToTensor實例將圖像數據從PIL類型變換成32位浮點數格式, # 并除以255使得所有像素的數值均在0~1之間 trans transforms.ToTensor()#用于將圖像數據從 PIL 圖像格式(Python Imaging Library&#xff…

架構師面試(十五):熔斷設計

問題 某電商平臺經常需要在大促運營活動中暫停評論、退款等業務,基于服務治理的設計理念,我們需要對該電商平臺微服務系統的【服務熔斷】進行設計,對此下面描述中說法正確的有哪幾項呢? A. 服務管控系統管理著平臺中所有服務之間…

Ubuntu20.04安裝運行DynaSLAM

目錄 一、安裝Anaconda 二、相關依賴庫安裝 1、boost安裝 2、Eigen 3安裝 3、opencv安裝 4、Pangolin安裝 三、配置Mask_RCNN環境 四、DynaSLAM編譯 五、DynaSLAM運行 一、安裝Anaconda 打開以下鏈接: Index of / 下載和自己系統匹配的安裝包。這里下…

X86 RouterOS 7.18 設置筆記三:防火墻設置(IPV4)

X86 j4125 4網口小主機折騰筆記五:PVE安裝ROS RouterOS X86 RouterOS 7.18 設置筆記一:基礎設置 X86 RouterOS 7.18 設置筆記二:網絡基礎設置(IPV4) X86 RouterOS 7.18 設置筆記三:防火墻設置(IPV4) X86 RouterOS 7.18 設置筆記四…

從 YOLOv1 到 YOLOv2:目標檢測的進化之路

引言 你有沒有想過,當你用手機拍一張照片,里面的人、車、狗是怎么被自動識別出來的?這背后靠的就是目標檢測技術。目標檢測是計算機視覺中的一個重要領域,它不僅要回答“圖片里有什么”,還要告訴你“這些東西在哪里”…

數據的存儲---整型、浮點型

目錄 一、整型在內存中的存儲 1. 原碼、反碼、補碼 2. 大端與小端 二、浮點數在內存中的存儲 1.浮點數的存 2. 浮點數的取 3. 題目解析 一個變量的創建需要在內存中開辟空間,而開辟的空間大小是由數據類型決定的。下面我們就來討論一下整型、浮點型在內存中的…

Java 大視界 -- Java 大數據在智能教育虛擬實驗室建設與實驗數據分析中的應用(132)

💖親愛的朋友們,熱烈歡迎來到 青云交的博客!能與諸位在此相逢,我倍感榮幸。在這飛速更迭的時代,我們都渴望一方心靈凈土,而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識,也…

??Jolt -- 通過JSON配置來處理復雜數據轉換的工具

簡介:一個能夠通過JSON配置(特定的語法)來處理復雜數據轉換的工具。 比如將API響應轉換為內部系統所需的格式,或者處理來自不同來源的數據結構差異。例如,將嵌套的JSON結構扁平化,或者重命名字段&#xff0…

47.全排列 II

47.全排列 II 力扣題目鏈接 給定一個可包含重復數字的序列 nums ,按任意順序 返回所有不重復的全排列。 示例 1: 輸入:nums [1,1,2] 輸出: [[1,1,2],[1,2,1],[2,1,1]]示例 2: 輸入:nums [1,2,3] 輸出…

centos沒有ll

vi /etc/bashrc alias ll‘ls -l’ source /etc/bashrc

04 1個路由器配置一個子網的dhcp服務

前言 這是最近一個朋友的 ensp 相關的問題, 這里來大致了解一下 ensp, 計算機網絡拓撲 相關基礎知識 這里一系列文章, 主要是參照了這位博主的 ensp 專欄 這里 我只是做了一個記錄, 自己實際操作了一遍, 增強了一些 自己的理解 當然 這里僅僅是一個 簡單的示例, 實際場景…

網絡空間安全(31)安全巡檢

一、定義與目的 定義: 安全巡檢是指由專業人員或特定部門負責,對各類設施、設備、環境等進行全面或重點檢查,及時發現潛在的安全隱患或問題。 目的: 預防事故發生:通過定期的安全巡檢,及時發現并解決潛在的…