20172330 2018-2019-1 《程序設計與數據結構》第九周學習總結

20172330 2018-2019-1 《程序設計與數據結構》第九周學習總結

教材學習內容總結

1、無向圖:


邊沒有方向的圖稱爲無向圖。html

  • 無向圖中,表示邊的頂點對是無序的,例如,標記頂點A,B,C,D,一條邊能夠表示爲(A,B)。無向圖表示頂點對是無序的,因此邊(A,B)意味着A和B之間的鏈接是雙向的,在一個無向圖中,(A,B)和(B,A)所表明的邊的含義徹底同樣。
  • 含有最多條邊的無向圖稱爲徹底圖:Edges=(n-1)*n/2.
    java

  • 若是無向圖中任意兩個頂點間都有路徑,則無向圖稱爲連通的。
  • 路徑是鏈接圖中兩個頂點的邊的序列,路徑長度爲路徑所含邊的數目(頂點個數減一)
  • 第一個頂點和最後一個頂點是同一個頂點且沒有重複邊的路徑,稱爲一個環。
  • 若是圖中兩個頂點之間有邊鏈接,則稱這兩個頂點是鄰接的(鄰居),本身鏈接到本身的邊稱爲自循環或懸掛。node

2、有向圖


若是給圖的每條邊規定一個方向,那麼獲得的圖稱爲有向圖,其邊也稱爲有向邊。在有向圖中,與一個節點相關聯的邊有出邊和入邊之分,而與一個有向邊關聯的兩個點也有始點和終點之分。git

  • 頂點是有序對的圖稱爲有向圖,有向圖的每條邊都帶有一個移動方向,這個方向有頂點的順序指定,因此(A,B)表示只容許從A移動到B,但不容許另外一個方向的移動。
  • 樹就是圖,樹的大部分工做是針對有向樹。有向樹是一個有向圖。

    如上圖:a是強連通,b是單向連通,c是弱連通。

3、網絡

  • 網絡是一種圖,通常認爲它專指加權圖,是一種每條邊都帶有權重或代價的圖。

4、經常使用的圖算法

  • 遍歷
    1.深度優先遍歷
    首先從圖中某個頂點v0出發,訪問此頂點,而後依次從v0相鄰的頂點出發深度優先遍歷,直至圖中全部與v0路徑相通的頂點都被訪問了;若此時尚有頂點未被訪問,則從中選一個頂點做爲起始點,重複上述過程,直到全部的頂點都被訪問。能夠看出深度優先遍歷是一個遞歸的過程。
    2.廣度優先遍歷
    首先,從圖的某個頂點v0出發,訪問了v0以後,依次訪問與v0相鄰的未被訪問的頂點,而後分別從這些頂點出發,廣度優先遍歷,直至全部的頂點都被訪問完。算法

  • 最小生成樹
    1.一個連通圖的生成樹是一個極小的連通子圖,它含有圖中所有的頂點,但只有足以構成一棵樹的n-1條邊。咱們把構造連通網的最小代價生成樹。稱爲最小生成樹。其邊的權重總和小於或等於同一個圖中其餘任何一棵生成樹的權重總和。
    2.Prim算法:先以一個結點做爲最小生成樹的第一個結點,而後以迭代的方式找出與最小生成樹中各結點權值最小邊,加到最小生成樹中。加入以後若是產生迴路則跳過這條邊,選擇下一個結點。當全部結點都加入到最小生成樹中以後,就找出最小生成樹了。
    數組

5、圖的實現策略

  • 鄰接表
    由於樹就是圖,因此實現圖的最好方式也許是採用實現樹已用過的機制。使用一組結點,每一個結點包含一個元素及可能和連接其餘結點的一個鏈表。
  • 鄰接矩陣
    用一個一維數組存放圖中全部頂點數據;用一個二維數組存放頂點間關係(邊或弧)的數據,這個二維數組稱爲鄰接矩陣。用鄰接矩陣表示圖,很容易肯定圖中任意兩個頂點是否有邊相連。鄰接矩陣分爲有向圖鄰接矩陣和無向圖鄰接矩陣。對無向圖(無向簡單圖)而言,鄰接矩陣必定是對稱的,並且對角線必定爲零,有向圖則不必定如此。

教材學習中的問題和解決過程

  • 問題1:圖的遍歷與樹的遍歷有什麼區別?
  • 問題1解決方案:樹是有序的,圖是無序的。圖有兩種林子裏的方法,一種是廣度優先遍歷,另外一種是深度優先遍歷。對於樹來講,它的廣度優先遍歷就是層序遍歷,深度優先遍歷就是先序遍歷。網絡

  • 問題2:鄰接矩陣有向圖與無向圖的對比?
  • 問題2解決方案:
    由於無向圖不須要表示整個矩陣,只需給出矩陣對角線的一側,而有向圖的全部邊都是定向的,因此結果對應並不相同:

    數據結構

代碼調試中的問題和解決過程

  • 問題1:暫時沒法理解pp15.7
  • 問題1解決方案:還沒有完成該pp

代碼託管

上週考試錯題總結

  • Since a heap is a binary search tree, there is only one correct location for the insertion of a new node, and that is either the next open position from the left at level h or the first position on the left at level h+1 if level h is full.
    A .True
    B .Flase
    解析:
    堆是一棵徹底二叉樹、不是一顆二叉搜索樹。

結對及互評

  • 基於評分標準,我給嚴域俊的博客打分:7分。得分狀況以下:

正確使用Markdown語法(加1分)學習

模板中的要素齊全(加1分).net

教材學習中的問題和解決過程, (加3分)

感想,體會真切的(加1分)

點評認真,能指出博客和代碼中的問題的(加1分)

  • 博客中值得學習的或問題:
    • 圖片和文字相結合,方便理解。
    • 增長了博客中的目錄,方便查看,同時樣式進行了更新,顯得更加美觀
    • 閱讀了許多資料,使得博客更有說服力。
  • 代碼中值得學習的或問題:
    - commit依舊很詳細,有條理性。

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20172333
    • 結對學習內容
      教材第11章,運行教材上的代碼
      完成課後自測題,並參考答案學習
      完成課後自測題,並參考答案學習
      完成程序設計項目:至少完成PP11.三、PP11.8

其餘(感悟、思考等,可選)

這一週花了點心思在這一章上面,也好好閱讀了不少內容,掌握的還算能夠。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 0/0 1/1 10/10
第二週 700/700 1/2 10/20
第三週 700/1400 1/3 10/30
第四周 500/1900 2/5 10/40
第五週 569/2469 1/6 10/50
第六週 1070/3539 1/7 10/60
第七週 986/4625 1/8 10/70
第八週 1023/5648 2/10 10/80
第九周 1023/6967 1/11 10/90

參考:軟件工程軟件的估計爲何這麼難軟件工程 估計方法

  • 計劃學習時間:10小時

  • 實際學習時間:10小時

參考資料

相關文章
相關標籤/搜索