普林斯頓《算法II》第一週學習筆記 Undirected Graph

普林斯頓的算法課是Cousera上評價挺高的一門課,課程的教學語言用的是java,課程中的算法都會被封裝成類的形式,對於創建各個算法的知識結構來講仍是頗有好處的。java

第一週的內容是Undirected Graph, 圖的存儲形式分爲adjacency matrix(鄰接矩陣)和 adjacency list(鄰接表),前者對於能夠以O(1)的複雜度查找兩個節點是否有邊,後的優點在於面對sparse maxtrix(稀疏矩陣)時能夠存儲不少空間。算法

Depth-first search & Breadth-first searchspa

無向圖的DFS和BFS遍歷已是老生常談了,跟樹的遍歷大同小異,這裏收集一下課程中講到應用場景:遊戲

Fllod Fill圖片

當須要將一個圖片裏面的相同顏色的色塊替換成另一個顏色,當圖片很大的時候,用DFS是最好的選擇。基礎

Kevin Bacon Number遍歷

這是一個線上的小遊戲,用來查看任何一個好萊塢的演員經過做品和Kevin Bacon的距離,數字越大,就表示他和Bacon的距離就越遠,若是他/她直接和Kevin Bacon合做過,則數字爲1。用Breadth-first search比較合適。語言

Connected Componentdi

無向圖的連通份量是在DFS的基礎之上確保每一個節點都訪問到,而且將每次DFS迭代的節點進行標記爲相同的編號。vi

相關文章
相關標籤/搜索