數據結構09圖

第七章 圖 Graph

?

7.1 圖的定義和術語

頂點 Vertex?
V 是頂點的有窮非空集合,頂點數 |V| = n
VR 兩個頂點之間關系的集合,邊數 |VR| = e

有向圖 Digraph
<v, w> Arc
v Tail / Inital node
w Head / Terminal node

無向圖 Undigraph
<v, w> 必有 <w, v> Edge

完全圖(Completed graph):有 n(n-1)/2 條邊的無向圖
有向完全圖:有 n(n-1) 條弧的有向圖
稀疏圖(Sparse graph):很少邊或弧,如 e < nlogn
稠密圖(Dense graph)
權(Weight):邊或弧的相關數
子圖(Subgraph)V'\subseteq V and\ E'\subseteq E
鄰接點(Adjacent)(v, v')\in E,則稱頂點 v 和 v' 互為鄰接點
?Arc\ <v, v'> \in A,則稱頂點v鄰接到頂點v',頂點v'鄰接自頂點v
依附(Incident):邊(v, v')依附于頂點 v 和 v',或者說 相關聯。
度(Degree):頂點v相關聯的邊數,記為TD(V)
入度(InDegree):以頂點v為頭的弧數,ID(v)
出度(OutDegree):以頂點v為尾的弧數,OD(v)
TD(v)=ID(v)+OD(v)
e=\frac{1}{2}\sum_{i=1}^{n}TD(v_{i})

路徑(Path):從頂點 v 到 v' 的一個頂點序列
環(Cycle):第一個頂點和最后一個頂點相同的路徑
簡單路徑:序列中頂點不重復出現的路
簡單回路 / 簡單環:除第一個頂點和最后一個頂點之外,其余頂點不重復出現的回路

連通:在無向圖G中,如果頂點v 到頂點v' 有路徑,則稱v 和 v' 連通
連通圖(Connected Graph):無向圖中,任意兩個頂點有路徑
連通分量(Connected Component):無向圖中的極大連通子圖
強連通圖:有向圖G中,任意兩個頂點之間有路徑
強連通分量:有向圖中,極大強連通子圖

生成樹:連通圖的一個極小連通子圖,包含全部頂點,n-1條邊
如果一個圖有n個頂點,小于n-1條邊,則是非連通圖
如果大于n-1條邊,一定有環。
有n-1條邊的圖不一定是生成樹。

如果一個有向圖恰有一個頂點入度為0,其余頂點入度均為1,則是一棵有向樹。
生成森林:一個有向圖的生成森林,由若干棵有向樹組成,含圖中全部頂點,最少條邊。

圖中的頂點不存在全序關系,即無法排成一個線性序列。
任何一個頂點都可以被看成是第一個頂點;任一頂點的鄰接點之間也不存在次序關系。

?

7.2 圖的存儲結構

鄰接矩陣、鄰接表、鄰接多重表、十字鏈表

7.2.1?鄰接矩陣

7.2.2 鄰接表

總在表頭插入結點,所以鄰接表的存儲結構還與弧的輸入順序有關。

圖的鄰接表存儲結構適合存儲弧相對較少的稀疏圖。

?

7.3 圖的遍歷

對圖的搜索就是對圖中頂點的遍歷。

為了不重復訪問頂點,需要為頂點向量設立一個訪問標志數組visit[],并將初值置為FALSE,即未被訪問。
遍歷時,在訪問后,將標志的值改為TRUE。

兩種搜索原則:

  1. 深度優先搜索;
  2. 廣度優先搜索。

7.3.1 深度優先搜索

7.3.2 廣度優先搜索

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

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

相關文章

JVM調優-GC參數

一、Throughput收集器(吞吐量) -XX:UseParallelGC -XX:UseParallelOldGC *參數調整&#xff1a;通過調整堆大小&#xff0c;減少GC停頓時間&#xff0c;增大吞吐量 增強堆大小可以減少Full GC頻率&#xff0c;但卻會增加停頓時間 1.手動調整 -Xmn -Xms -XX:NewRatioN 手動指…

aspnetcore源碼學習(一)

---恢復內容開始--- 筆者從事netcore相關項目開發已經大半年了&#xff0c;從netcore 1.0到現在3.0大概經過了3年左右的時間&#xff0c;記得netcore剛出來的時候國內相關的學習資料缺乏&#xff0c;限制于外語不大熟練的限制國外的相關書籍看起來相當吃力&#xff0c;于是在當…

評估一個垃圾收集(GC)

在實踐中我們發現對于大多數的應用領域&#xff0c;評估一個垃圾收集(GC)算法如何根據如下兩個標準&#xff1a; 吞吐量越高算法越好暫停時間越短算法越好 首先讓我們來明確垃圾收集(GC)中的兩個術語:吞吐量(throughput)和暫停時間(pause times)。 JVM在專門的線程(GC threads…

python數據分析常用包之Scipy

Scipy轉載于:https://www.cnblogs.com/jacky912/p/10697853.html

docker容器狀態跟蹤及疑惑

一、 1 def status_test():2 container client.containers.create("comp")3 print ("create: ", container.status)4 container.start()5 print ("start: ", container.status)6 container.pause()7 print ("paus…

CAP和BASE理論

幾個名詞解釋&#xff1a; 網絡分區&#xff1a;俗稱“腦裂”。當網絡發生異常情況&#xff0c;導致分布式系統中部分節點之間的網絡延時不斷變大&#xff0c;最終導致組成分布式系統的所有節點中&#xff0c;只有部分節點之間能夠進行正常通信&#xff0c;而另一些節點則不能…

Mysql案例5:取得平均薪資最高的部門的部門名稱

一、要求&#xff1a;查詢平均薪水最高部門的部門編號 二、背景&#xff1a;當前數據庫有employee表和department表&#xff0c;數據分別如下&#xff1a; employee表&#xff1a; department表&#xff1a; 三、難點&#xff1a; 1、需要考慮最高平均薪資可能在多個部門同時出…

Spring 處理過程分析

一、處理過程分析 1、首先&#xff0c;Tomcat每次啟動時都會加載并解析/WEB-INF/web.xml文件&#xff0c;所以可以先從web.xml找突破口&#xff0c;主要代碼如下&#xff1a;<servlet ><servlet-name >spring-mvc</servlet-name><!-- servlet類 --><…

python全棧開發中級班全程筆記(第二模塊、第四章)(常用模塊導入)

python全棧開發筆記第二模塊 第四章 &#xff1a;常用模塊&#xff08;第二部分&#xff09; 一、os 模塊的 詳解 1、os.getcwd() &#xff1a;得到當前工作目錄&#xff0c;即當前python解釋器所在目錄路徑 import os j os.getcwd() # 返回當前pyt…

基于 Spring Cloud 完整的微服務架構實戰

本項目是一個基于 Spring Boot、Spring Cloud、Spring Oauth2 和 Spring Cloud Netflix 等框架構建的微服務項目。 作者&#xff1a;Sheldon地址&#xff1a;https://github.com/zhangxd1989 技術棧 Spring boot - 微服務的入門級微框架&#xff0c;用來簡化 Spring 應用的初…

mysql Invalid use of group function的解決辦法

錯誤語句&#xff1a;SELECT s.SID, s.Sname, AVG(a.score)FROM student sLEFT JOIN sc a ON s.SID a.SID WHERE AVG(a.score) > 60GROUP BY s.SID正確語句&#xff1a; SELECTs.SID,s.Sname,AVG(a.score)FROMstudent sLEFT JOIN sc a ON s.SID a.SID GROUP BYs.SID HAVIN…

ipython notebook 中 wavefile, display, Audio的使用

基于ipython notebook的 wavefile以及display, Audio的使用首先是使用的庫使用 wavfile 讀取.wav文件使用display,Audio播放聲音最近在做聲音信號處理的時候&#xff0c;使用了ipython notebook。發現相較于matlab&#xff0c;python在有關生成wave文件和播放音頻需要利用到sci…

spring 設計模式

設計模式作為工作學習中的枕邊書&#xff0c;卻時常處于勤說不用的尷尬境地&#xff0c;也不是我們時常忘記&#xff0c;只是一直沒有記憶。 今天&#xff0c;螃蟹在IT學習者網站就設計模式的內在價值做一番探討&#xff0c;并以spring為例進行講解&#xff0c;只有領略了其設計…

Ansible-----循環

with_dict迭代字典項 使用"with_dict"可以迭代字典項。迭代時&#xff0c;使用"item.key"表示字典的key&#xff0c;"item.value"表示字典的值。 ---- hosts: localhosttasks:- debug: msg"{{item.key}} & {{item.value}}"with_di…

ROS(Robot Operating System)筆記 : 1.使用launch file在gazebo中生成urdf機器人

ROS(Robot Operating System) 1.使用launch file在gazebo中生成urdf機器人 最近接觸了ROS(Robot Operating System),發現單單學習官網http://wiki.ros.org/上的教程&#xff0c;在實際操作過程中仍然會遭遇許多困難。這一系列關于ROS的文章記錄了ROS學習過程中可能遇到的問題…

[asp.net] 利用WebClient上傳圖片到遠程服務

一、客戶端 1.頁面 <form id"Form1" method"post" runat"server" enctype"multipart/form-data">     <input id"MyFile" type"file" runat"server" />     <br />     …

ROS project part 1: Ubuntu中安裝opencv包以及相應的依賴

首先在ubuntu linux上安裝opencv $ sudo apt-get install python-opencv使用ipython 驗證 opencv的安裝 $ import cv2 as cv $ print(cv.__version__)查看當前的ubuntu 版本 $ cat /etc/issue查看當前python版本 下列代碼分別用于查看python3 python2的已安裝版本 $ python…

FastReport4.6程序員手冊_翻譯

一、使用TfrxReport 組件工作1、加載并存儲報表默認情況下&#xff0c;報表窗體同項目窗體構存儲在同一個DFM文件中。多數情況下&#xff0c;無須再操作&#xff0c;因而你就不必采用特殊方法加載報表。如果你決定在文件中存儲報表窗體或者是數據庫的Blob字段&#xff08;他提供…

Python音頻信號處理 1.短時傅里葉變換及其逆變換

短時傅里葉變換及其逆變換 本篇文章主要記錄了使用python進行短時傅里葉變換&#xff0c;分析頻譜&#xff0c;以及通過頻譜實現在頻域內降低底噪的代碼及分析&#xff0c;希望可以給同樣在學習信號處理的大家一點幫助&#xff0c;也希望大家對我的文章多提意見建議。 一. 短…

Java多線程同步機制

一段synchronized的代碼被一個線程執行之前&#xff0c;他要先拿到執行這段代碼的權限&#xff0c;在 java里邊就是拿到某個同步對象的鎖&#xff08;一個對象只有一把鎖&#xff09;&#xff1b; 如果這個時候同步對象的鎖被其他線程拿走了&#xff0c;他&#xff08;這個線程…