| 這個作業屬於哪個班級 | 數據結構--網絡2011/2012 |
|---|---|
| 這個作業的地址 | DS博客作業04--圖 |
| 這個作業的目標 | 學習圖結構設計及相關算法 |
| 姓名 |
0.PTA得分截圖
圖題目集總得分,請截圖,截圖中必須有自己名字。題目至少完成2/3,否則本次作業最高分5分。
1.本周學習總結(6分)
本次所有總結內容,請務必自己造一個圖(不在教材或PPT出現的圖),圍繞這個圖展開分析。建議:Python畫圖展示。圖的結構盡量復雜,以便后續可以做最短路徑、最小生成樹的分析。
1.1 圖的存儲結構
1.1.1 鄰接矩陣(不用PPT上的圖)
- 造一個圖,展示其對應鄰接矩陣
- 鄰接矩陣的結構體定義
- 建圖函數
1.1.2 鄰接表
- 造一個圖,展示其對應鄰接表(不用PPT上的圖)
- 鄰接矩陣的結構體定義
- 建圖函數
1.1.3 鄰接矩陣和鄰接表表示圖的區別
各個結構適用什么圖?時間復雜度的區別。
1.2 圖遍歷
1.2.1 深度優先遍歷
- 選上述的圖,繼續介紹深度優先遍歷結果
- 深度遍歷代碼
- 深度遍歷適用哪些問題的求解。(可百度搜索)
1.2.2 廣度優先遍歷
- 選上述的圖,繼續介紹廣度優先遍歷結果
- 廣度遍歷代碼
- 廣度遍歷適用哪些問題的求解。(可百度搜索)
1.3 最小生成樹
用自己語言描述什么是最小生成樹。
1.3.1 Prim算法求最小生成樹
- 基於上述圖結構求Prim算法生成的最小生成樹的邊序列
- 實現Prim算法的2個輔助數組是什么?其作用是什么?Prim算法代碼。
- 分析Prim算法時間復雜度,適用什么圖結構,為什么?
1.3.2 Kruskal算法求解最小生成樹
- 基於上述圖結構求Kruskal算法生成的最小生成樹的邊序列
- 實現Kruskal算法的輔助數據結構是什么?其作用是什么?Kruskal算法代碼。
- 分析Kruskal算法時間復雜度,適用什么圖結構,為什么?
1.4 最短路徑
1.4.1 Dijkstra算法求解最短路徑
- 基於上述圖結構,求解某個頂點到其他頂點最短路徑。(結合dist數組、path數組求解)
- Dijkstra算法需要哪些輔助數據結構
- Dijkstra算法如何解決貪心算法無法求最優解問題?展示算法中解決的代碼。
- Dijkstra算法的時間復雜度,使用什么圖結構,為什么。
1.4.2 Floyd算法求解最短路徑
- Floyd算法解決什么問題?
- Floyd算法需要哪些輔助數據結構
- Floyd算法優勢,舉例說明。
最短路徑算法還有其他算法,可以自行百度搜索,並和教材算法比較。
1.5 拓撲排序
- 找一個有向圖,並求其對要的拓撲排序序列
- 實現拓撲排序代碼,結構體如何設計?
- 書寫拓撲排序偽代碼,介紹拓撲排序如何刪除入度為0的結點?
- 如何用拓撲排序代碼檢查一個有向圖是否有環路?
1.6 關鍵路徑
- 什么叫AOE-網?
- 什么是關鍵路徑概念?
- 什么是關鍵活動?
2.PTA實驗作業(4分)
2.1 六度空間(2分)
選一題,介紹偽代碼,不要貼代碼。請結合圖形展開分析思路。
2.1.1 偽代碼(貼代碼,本題0分)
偽代碼為思路總結,不是簡單翻譯代碼。
2.1.2 提交列表
2.1.3 本題知識點
2.2 村村通或通信網絡設計或旅游規划(2分)
2.2.1 偽代碼(貼代碼,本題0分)
偽代碼為思路總結,不是簡單翻譯代碼。
