一、鄰接矩陣
鄰接矩陣儲存使用2個陣列儲存圖的資訊:1個以為陣列儲存頂點,乙個二維陣列儲存邊的資訊
(1)二維陣列中的對角線為0,以為不存在頂點到自身的邊
(2)要知道某個點的出度,就是頂點vi在第i行的元素之和,入度就是該頂點所在列的元素之和
(3)頂點vi的所有鄰接點就是吧矩陣中第i行元素掃瞄一遍
(4)對於有權值的網,二維陣列中的元素不再是0,1表示是否存在邊,而是把元素值表示為權值。不存在的邊,權值記錄為∞∞;對角線上的權值為0.
一. 基本思路
圖的遍歷:從圖中某乙個頂點出發遍歷途中其餘頂點,每乙個頂點僅被訪問一次
基本思路
(1)樹有四種遍歷方式,因為根節點只有乙個。而圖的複雜情況是的順著乙個點向下尋找,極有可能最後又找到自己,形成迴路導致死迴圈。
(2)所以要設定乙個陣列voisited[n],n是圖中頂點個數,初值為0,當該頂點被遍歷後,修改陣列元素的值為1
(3)基於此,形成了2中遍歷方案:深度優先遍歷和廣度優先遍歷
二. 深度優先遍歷(dfs)
如下圖所示,我們進行深度遍歷,乙個原則就是,每當我們發現有多個出度時,選擇右手邊的出度作為下乙個遍歷的頂點路徑。
(1)從a出發,發現出度為b,f。選擇右手邊的b。a->b
(2)從b出發,出度為c,i,g,選擇右手邊的c
(3)從c出發,出度為i,d,選擇右手邊的d
(4)從d出發,出度為i,g,h,e,選擇右手邊的e
(5)從e出發,出度為h,f,選擇右手邊的f
(6)從f出發,出度為a,g,選擇右手邊的a,但發現a已經被遍歷過,所以選擇g
(7)從g出發,出度為b,d,h,b,d訪問過了,選擇h
(8)從h出發,出度為d,f,均被訪問過了。但此時圖中的節點並沒有遍歷完全,因此我們要按原路返回,去找沒走過的路
(9)回退到g,發現所連線的bdfh均被訪問;
(10)回退到f,沒有通道;回退到e,沒有通道,回退到d,發現乙個點i,進行標記(若此時與d相鄰的還有其他頂點,則在此時一起進行標記);然後繼續回退到a,走完整個路
廣度優先遍歷
廣度優先遍歷類似輸的層次遍歷
(1)先入佇列乙個元素
(2)彈出佇列頂端的1個元素列印,並把它連線的頂點入隊
(3)重複以上過程,直到隊列為空
bfs的過程
應用場景
設想有9個村莊,這些村莊構成如下圖所示的地理位置,每個村莊的直線距離都不一樣。若要在每個村莊間架設網路線纜,若要保證成本最小,則需要選擇一條能夠聯通9個村莊,且長度最小的路線
最小生成樹的概念
(1)乙個帶權值的圖:網。所謂最小成本,就是用n-1條邊把n個頂點連線起來,且連線起來的權值最小。
(2)我們把構造聯通網的最小代價生成樹稱為最小生成樹
(3)普里姆演算法和克魯斯卡爾演算法
資料結構筆記
程式效率與組織方式有關 圖書館擺書 二分查詢 程式效率與操作有關 迴圈和遞迴 遞迴雖簡單不過耗費大量空間 程式效率與演算法有關 多項式求和 秦九韶要比普通演算法快乙個數量級 測試兩種演算法的 include include include define max 101 define maxl 1e7...
資料結構筆記
二叉樹的遍歷操作 二叉樹的遍歷是指從根結點出發,按照某種次序 訪問二叉樹中的所有結點,使得每個結點被訪問一 次且僅被訪問一次。抽象操作,可以是對結點進行的各種 處理,這裡簡化為輸出結點的資料。前序遍歷 中序遍歷 後序遍歷 層序遍歷 查詢的基本概念 靜態查詢適用於 查詢集合一經生成,便只對其進行 查詢...
資料結構筆記
線性表 線性表順序儲存結構 線性表順序儲存結構的定義 線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。線性表順序儲存結構的優缺點 線性表的順序儲存結構,在存,讀資料時,不管是哪個位置,時間複雜度都是o 1 而在插入或刪除時,時間複雜度都是o n 這就說明它比較適合元素個...