第六章主要進行有關圖的學習,這一章學得東西很多,涉及圖的方方面面包括如何定義儲存結構,如何初始化,如何建立一張圖,如何進行圖的操作等等。
6-1主要學習了圖的基本知識,不帶權圖包括有向圖,無向圖,帶權圖包括有向網路,無向網路。在求度的時候要注意無向圖和有向圖的區別,有向圖包括入度和出度。
連通分量=>最大連通子圖(無向圖)
6-4儲存方式的定義,主要學習了鄰接矩陣和鄰接表兩種定義方式。鄰接矩陣的話採用的是二維陣列的方式,在圖中有邊為0,無邊為1,在網路中,有邊則儲存邊的權值,無邊為int_max
鄰接表的話用了區域性鍊錶的方式,主圖包括了資料域和指標域,資料域為頂點值,指標域為右邊的頂點組成的鍊錶集合 (鄰接矩陣和鄰接表具體的定義這裡沒有給出)
6-5這一小節介紹了圖的遍歷的相關知識點,bms和dms(廣度優先搜尋、深度優先搜尋),dms類似於樹的先序遍歷採用遞迴的方法, bms類似於樹的層次遍歷,要用到輔助的資料結構佇列。
對於連通圖來說,dms和bms執行一次就可以得到正確的遍歷結果,如果是非聯通圖的話,則要在此之上巢狀一層for迴圈對每個頂點都進行一次dms和bms,其中用輔助陣列
checked來記錄該頂點是否被訪問過
for(.........)
6-6這小節介紹了圖的應用包括最小生成樹、最短路徑拓撲排序。最小生成樹介紹了普里姆演算法和克魯斯卡爾演算法。
下面是普里姆演算法:總體的過程涉及選擇和重新整理兩個過程
clossdge
a/0b/1
c/2d/3
e/4adjvexaa
lowcost012
int_max
13int_max
clossdge
a/0b/1
c/2d/3
e/4adjvexab
alowcost00
1513
int_max
知道 lowcost全部結束的話就可以生成最小生成樹了。
下面是克魯斯卡爾演算法:
採用edge和 vexset兩個輔助陣列,前者儲存邊的2個頂點和權值,後者儲存對應所在的連通分量
最短路徑:s1
000d
int_max
1213
int_max
path-10
0-1s表示該頂點是否更新過最短路徑
d表示的是對應每條邊的最短路徑
path對應的在邊最短的情況下與之相連的頂點下標
更新的時候找出所有路徑最短的那乙個對d、s、path進行更新,直到s所有的元素都為1(連通圖)
在做作業的時候知識點比較多,最近記性不怎麼好,所以回盤的時間比較多,效率相對來說有點低。實踐題一開始覺得應該挺好做的,但是做的時候又有些問題,陣列沒有初始化呀,距離公式寫錯了等一系列問題。後續學習上課還要集中精力,認真學習。
第六章學習小結
一.圖的概念 1.圖 無向圖 有向圖 完全圖 2.度 入度 出度 3.路徑 由頂點和相鄰頂點序偶構成的邊所形成的序列 4.連通圖 連通分量 無向圖 5.強連通圖 連通分量 極大強連通子圖 有向圖 二.圖的儲存結構 1.鄰接矩陣 typedef struct graph 2.鄰接表 typedef s...
第六章學習小結
一 圖 graph 圖是由頂點的有窮非空集合和頂點之間邊的集合組成,通常表示為 g v,e 其中,g表示乙個圖,v是圖g中的頂點的集合,e是圖g中邊的集合。頂點 vertex 圖中的資料元素。線性表中我們把資料元素叫元素,樹中將資料元素叫結點。邊 頂點之間的邏輯關係用邊來表示,邊集可以是空的。無向邊...
mysql第六章 第六章 mysql日誌
第六章 mysql日誌 一 錯誤日誌 錯誤日誌的預設存放路徑是 mysql 存放資料的地方 hostname.err 1.修改錯誤日誌存放路徑 mysqld log error data mysql mysql.log 2.檢視配置命令 show variables like log error 3...