資料結構學習(C++)——圖(總結) (轉)
以上就是現在的教科書裡面,圖的全部內容了。寫完之後,茫茫然,不知道學完之後有什麼用……就像我在開篇寫的,圖的應用太廣泛了,以至於現在覺得圖“沒什麼用”——很奇怪的邏輯,只有仔細體味才能覺察到寫教科書的人的無奈。
不同於前面的連結串列和樹,在圖這裡,儲存方法不是重點,我們更多的注意力放在了演算法上。我在寫的時候,也儘量做到了演算法和儲存方法無關。然而演算法實際上就是現實問題的抽象,如果我們的常識所不及,我們也就沒有辦法來介紹演算法,反過來說,幾乎遇不到的問題,我們也不會對它的演算法感興趣。
因此,在圖的演算法裡面,由鋪設管道引出了最小生成樹,由提高通訊、交通可靠性引出了關節點和重連通分量,由地圖尋徑引出了最短路徑,由工程預算引出了關鍵路徑。這些恐怕是我們能夠理解的全部了,如果再來一個電氣網路計算,沒點物理知識恐怕是要完。
但即使這樣,上面的各個演算法仍然離我們很遠,我們大多數人恐怕永遠都不會知道管道是怎麼鋪的。我想,這裡面除了最短路徑能引起大多數人的興趣之外,其他的就只能走馬觀花的看看罷了。這也使得圖的學習很像“聾子的耳朵”,真正接觸到圖的用途的人不多,並且即使用到圖,也僅僅是個別的演算法。
正像資料結構教學的通病一樣,學無所用常常導致學無所成,前面的連結串列、樹好歹還能做點什麼東西出來,到了圖這裡,除了做個導遊,我們也做不出別的什麼了。寫到這裡很無奈,但我也只能是無奈……
那麼,學完了圖,我們應該掌握什麼呢,是上面零散的演算法嗎?我的看法是,不是。我覺得我們更應該知道那些演算法是怎麼“創造”出來的,如果遇到了類似的問題,能不能“派生”出新的演算法。因此,我覺得《資料結構演算法與應用-C++語言描述》這本書,將圖的最小生成樹、最短路徑、拓撲排序演算法放到了貪婪演算法裡講解,是一種更為合理的安排。
最後對在學習圖時像我一樣茫然的人深表同情。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-962169/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料結構學習(C++)——樹(總結) (轉)資料結構C++
- 資料結構學習總結--圖資料結構
- 資料結構學習(C++)——序言 (轉)資料結構C++
- 資料結構學習(C++)——圖【3】(無向圖)(上) (轉)資料結構C++
- 資料結構學習(C++)——圖【3】(無向圖)(下) (轉)資料結構C++
- 資料結構學習(C++)續——排序【6】內部排序總結 (轉)資料結構C++排序
- 資料結構學習(C++)——圖【4】(最短路徑) (轉)資料結構C++
- 資料結構學習(C++)——圖【2】(DFS和BFS) (轉)資料結構C++
- 資料結構學習(C++)——線性鏈式結構總結(代後記)【1】 (轉)資料結構C++
- 資料結構學習(C++)——線性鏈式結構總結(代後記)【2】 (轉)資料結構C++
- 資料結構學習(C++)——迴圈連結串列 (轉)資料結構C++
- 資料結構學習(C++)——雙向連結串列 (轉)資料結構C++
- 資料結構學習(C++)——圖【1】(基本儲存方法) (轉)資料結構C++
- 資料結構學習(C++)——遞迴【1】 (轉)資料結構C++遞迴
- 資料結構學習(C++)——圖【5】活動網路(AOV、AOE) (轉)資料結構C++
- 資料結構學習(c++)——二叉樹 (轉)資料結構C++二叉樹
- 資料結構學習(C++)——遞迴【2】(1) (轉)資料結構C++遞迴
- 資料結構學習(C++)——遞迴【2】(2) (轉)資料結構C++遞迴
- 資料結構學習(C++)——遞迴【2】(3) (轉)資料結構C++遞迴
- 資料結構學習(C++)——遞迴【2】(4) (轉)資料結構C++遞迴
- 資料結構學習(C++)——遞迴【3】(1) (轉)資料結構C++遞迴
- 資料結構學習(C++)——遞迴【3】(2) (轉)資料結構C++遞迴
- Java資料結構之Map學習總結Java資料結構
- Java資料結構之Set學習總結Java資料結構
- 資料結構學習(C++)——二叉樹【2】 (轉)資料結構C++二叉樹
- 資料結構學習(C++)續——排序【3】交換排序 (轉)資料結構C++排序
- 資料結構學習(C++)——二叉樹【3】 (轉)資料結構C++二叉樹
- 資料結構學習(C++)——二叉樹【1】 (轉)資料結構C++二叉樹
- 資料結構學習(C++)——單連結串列(定義與實現) (轉)資料結構C++
- 資料結構學習(C++)——棧應用(表示式求值) (轉)資料結構C++
- 資料結構學習(C++)續——排序【2】插入排序 (轉)資料結構C++排序
- 資料結構學習(C++)續——排序【1】測試程式 (轉)資料結構C++排序
- c++學習總結C++
- C++資料結構和pb資料結構的轉換C++資料結構
- 資料結構學習(C++)——稀疏矩陣(十字連結串列【2】) (轉)資料結構C++矩陣
- 資料結構學習(C++)——稀疏矩陣(十字連結串列【1】) (轉)資料結構C++矩陣
- 資料結構學習筆記(一) (轉)資料結構筆記
- 資料結構與演算法學習總結--遞迴資料結構演算法遞迴