資料結構學習(C++)——圖(總結) (轉)
以上就是現在的教科書裡面,圖的全部內容了。寫完之後,茫茫然,不知道學完之後有什麼用……就像我在開篇寫的,圖的應用太廣泛了,以至於現在覺得圖“沒什麼用”——很奇怪的邏輯,只有仔細體味才能覺察到寫教科書的人的無奈。
不同於前面的連結串列和樹,在圖這裡,儲存方法不是重點,我們更多的注意力放在了演算法上。我在寫的時候,也儘量做到了演算法和儲存方法無關。然而演算法實際上就是現實問題的抽象,如果我們的常識所不及,我們也就沒有辦法來介紹演算法,反過來說,幾乎遇不到的問題,我們也不會對它的演算法感興趣。
因此,在圖的演算法裡面,由鋪設管道引出了最小生成樹,由提高通訊、交通可靠性引出了關節點和重連通分量,由地圖尋徑引出了最短路徑,由工程預算引出了關鍵路徑。這些恐怕是我們能夠理解的全部了,如果再來一個電氣網路計算,沒點物理知識恐怕是要完。
但即使這樣,上面的各個演算法仍然離我們很遠,我們大多數人恐怕永遠都不會知道管道是怎麼鋪的。我想,這裡面除了最短路徑能引起大多數人的興趣之外,其他的就只能走馬觀花的看看罷了。這也使得圖的學習很像“聾子的耳朵”,真正接觸到圖的用途的人不多,並且即使用到圖,也僅僅是個別的演算法。
正像資料結構教學的通病一樣,學無所用常常導致學無所成,前面的連結串列、樹好歹還能做點什麼東西出來,到了圖這裡,除了做個導遊,我們也做不出別的什麼了。寫到這裡很無奈,但我也只能是無奈……
那麼,學完了圖,我們應該掌握什麼呢,是上面零散的演算法嗎?我的看法是,不是。我覺得我們更應該知道那些演算法是怎麼“創造”出來的,如果遇到了類似的問題,能不能“派生”出新的演算法。因此,我覺得《資料結構演算法與應用-C++語言描述》這本書,將圖的最小生成樹、最短路徑、拓撲排序演算法放到了貪婪演算法裡講解,是一種更為合理的安排。
最後對在學習圖時像我一樣茫然的人深表同情。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-962169/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料結構學習總結--圖資料結構
- C++資料結構和pb資料結構的轉換C++資料結構
- c++學習總結C++
- 資料結構學習之樹結構資料結構
- 資料結構學習資料結構
- 資料結構與演算法學習總結--遞迴資料結構演算法遞迴
- 資料結構學習--連結串列資料結構
- 【資料結構】第六章學習小結--- 圖資料結構
- 資料結構學習心得資料結構
- 集合資料結構總結資料結構
- c++函式學習總結C++函式
- 資料結構 其五 樹與二叉樹學習總結資料結構二叉樹
- 重學資料結構(七、圖)資料結構
- 學習 JavaScript 資料結構(二)——連結串列JavaScript資料結構
- 資料結構學習筆記資料結構筆記
- SpringBoot學習之資料結構Spring Boot資料結構
- c++基本資料結構C++資料結構
- 資料結構 - 圖資料結構
- 學習javascript資料結構與演算法(六)——圖JavaScript資料結構演算法
- 演算法與資料結構學習路線圖演算法資料結構
- 【PHP資料結構】PHP資料結構及演算法總結PHP資料結構演算法
- 【資料結構——圖和圖的儲存結構】資料結構
- 資料結構總綱資料結構
- (資料結構程式碼,總結,自我思考)=> { return 個人學習筆記; } 【To be continued~】資料結構筆記
- 收藏資料結構學習網站資料結構學習網站
- 資料結構學習之佇列資料結構佇列
- 資料結構學習筆記1資料結構筆記
- 資料結構學習筆記--棧資料結構筆記
- JS資料結構學習:佇列JS資料結構佇列
- 資料結構之Stack | 讓我們一塊來學習資料結構資料結構
- 資料結構之Queue | 讓我們一塊來學習資料結構資料結構
- 資料結構之Set | 讓我們一塊來學習資料結構資料結構
- 資料結構之LinkedList | 讓我們一塊來學習資料結構資料結構
- C++資料結構-佇列C++資料結構佇列
- 資料結構之堆(c++)資料結構C++
- C++虛擬函式學習總結C++函式
- 資料結構之圖資料結構
- 資料結構:圖(Graph)資料結構
- C++ - 結構體轉cha*C++結構體