第六章小結--圖


想了很多,打算決定每天都在這個上面加一點自己當天學到的,還有自己思考的東西,一點一點加,或許會更有效率,也會記錄我的思考過程吧。

5.12

今天做了PTA上的選擇題

1、用一維數組G[]存儲有4個頂點的無向圖如下:

G[] = { 0, 1, 0, 1, 1, 0, 0, 0, 1, 0 }

 

推出:則頂點2和頂點0之間是有邊的。

2、如果用鄰接表存儲結構,在對圖進行廣度優先遍歷時一般要用到的一種數據結構類型是--隊列

3、給定有權無向圖的鄰接矩陣如下,其最小生成樹的總權重是:8

 

4、如果G是一個有15條邊的非連通無向圖,那么該圖頂點個數最少7---n(n-1)*1/2 + 1

 

 圖的遍歷:

 

深度優先

 類似於樹的先序遍歷

直到剛訪問的頂點沒有未被訪問的頂點為止。

算法實現(遍歷連通圖):

 1 bool visited[MVNum]; //訪問標志數組,其初值為“false”
 2 void DFS(Graph G, int v)
 3 {//從第v個頂點出發遞歸地深度優先遍歷圖G
 4      cout<<v; visited[v] = ture;
 5      for(w=FirstAdjVex(G,v);w>=0;w=NexAdjVex(G,v,x))
 6     //依次檢查v的所有鄰接點,First...表示v的第一個鄰接點
 7     //Nex...表示v相對於w的下一個鄰接點,w>=0表示存在鄰接點
 8      if(!visited[w]) DFS(G,w);
 9 
10 }    
View Code

 (非連通圖)

void DFSTraverse(Graph G)
{//對非連通圖G做深度優先遍歷
  for(v=0;v<G.vexnum;++v) visited[v]=false;//訪問標志數組初始化
  for(v=0;v<G.Vexnum;++v)  //循環調用遍歷連通圖算法
     if(!visited[v]) DFS(G,v); //對尚未訪問的頂點調用DFS

}
View Code

(鄰接矩陣)

1 void DFS_AM (AMGraph G,int v)
2 {//圖G為鄰接矩陣類型,從第v個頂點出發深度優先搜索遍歷圖G
3    cout<<v; visited[v]=true;//訪問第v個頂點,並置訪問的標志數組相應的分量值為true
4    for(w=0;w<G.vexnum;w++)//依次檢查鄰接矩陣v所在的行
5        if((G.arcs[v][w]!=0)&&(!visited[w])) DFS_AM(G,w);//G.arcs[v][w]表示w是v的鄰接點,如果w未訪問,則遞歸調用DFS_AM
6    
7 
8 }
View Code

(鄰接表)

 

 

 

廣度優先

廣度優先遍歷其實類似於一個隊列,但是分兩種(我已知):

1.先訪問,再入隊;

if(未訪問)
出隊元素的每一個鄰接點先訪問再入隊

 2.直接入隊;

if(未訪問)
訪問,該點的所有鄰接點入隊

 

最小生成樹:

 給定一個無向圖,如果它任意兩個頂點都聯通並且是一棵樹,那么我們就稱之為生成樹(Spanning Tree)。

在一個連通網的所有生成樹中,各邊的代價之和最小的那棵生成樹稱為該聯通網的最小代價生成樹,(如果是帶權值的無向圖,那么權值之和最小的生成樹)我們就稱之為最小生成樹(MST, Minimum Spanning Tree)。

常見求解最小生成樹的算法有Kruskal算法和Prim算法

Prim算法

選定一個頂點后一次根據邊的權值對點進行連接,與Kruskal算法類似,但不同之處在於,P為“加點法”,K為“加邊法”

 

Kruskal算法

建議還是畫圖的話,容易解決一點,相對於分成兩個集合,一個是V集合,一個是U-V集合,同時還有需要進行讀入+刷新

 

本周回顧:

由於上周特別忙碌,以及對樹的代碼的背誦沒有完成很好,於是對自己的emmm信心又失去了。雖然對一些代碼的知識有了些了解,比如完成書上的課后習題,但是還是有很多的問題需要改進,如今到了圖,真心開始害怕,倒不是說對分析怎么樣,但是對於打代碼開始方了,分析較打代碼要好很多,原因是只需要在需求的層面上去根據邏輯,並不需要敲代碼來實現。反正現在已經有了恐懼心理了。

新的目標:

完成本周作業,同時能夠把樹的代碼重新搞懂,理順之前的作業吧。

本周作業還沒有整理出來,雖然是要逼出來的,但是有的時候鑽到牛角尖里面去,只有可能適得其反好吧。有的話就不多說,就這樣吧。反正是不可能自閉的,就是放棄差不多吧。

 

第一道作業題的博客:

https://www.cnblogs.com/JeffKing11/p/10923481.html

第二道作業題的博客:

還在更新...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM