第四次培训-演算法-建中首页.DOCVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四次培训-演算法-建中首页

95建中資訊科校內培訓 CK5925 黃上恩 Graph Algorithms PAGE 1/ NUMPAGES 3 演算法:Graph Algorithms 95/1 ◤基礎篇◢   圖論起源於哥尼斯堡(Konigsberg)七橋問題:如何不重複的走過七座橋各一次,然後回到原來的地方。尤拉(Euler)把這七座橋和陸地轉換為頂點和邊,將問題轉化為較抽象且較單純的圖(Graph)來研究。 圖Graph 圖是由點(vertex/node)和邊(edge)所構成的集合。 點vertex 點可以是單純的點,或是加以編號、加權(weight)等。 相鄰(adjacent):兩個點相鄰若且唯若它們有邊連接。 連通(connected):兩個點連通若且唯若可以從其中一個點出發經過許多邊到達另一點。 度數(degree):一個點所連接的邊數。 邊edge 一個邊連接兩個點。在圖論中,我們不把兩條邊的交叉點視為一個頂點。 有向邊(directed edge):只能從一個頂點單方向到達另一個點。(相反:無向圖) 加權邊(weighted edge):賦予每個邊一個數值,可以加強描述兩個點之間的關係。 重邊(multi edge):不只一條邊連接相同的兩個頂點時,我們說這兩個點具有重邊。 環(loop):某一條邊連接同一個頂點。 圈(cycle):可以從某個點出發,沿著邊經過不同的頂點再回到同一個點。 路徑(path):從某個點沿著不重複的頂點到另一個點的走法。 各種不同的圖 有向圖(directed graph/digraph):具有有向邊的圖(相反:無向圖) 簡單圖(simple graph):不含multi edge和loop的無向圖 cyclic:包含cycle的圖(相反:acyclic) 連通圖(connected graph):圖中至少有一個點能夠到達其他所有點。 強連通圖(strong connected graph):有向圖中從任意一點出發都可以連到其他所有頂點。 完全圖(complete graph):任意兩點都是相鄰的。 樹(tree):connected acyclic graph 圖的表示 相鄰矩陣(adjacency-matrix):用一個二維陣列紀錄個點相鄰的狀況(可能是標記相連與否或是相連邊的權重) 相鄰串列(adjacency-list):用n個list儲存,第a個list儲存每條從a連出去的邊的資料,包括連接的點以及權重。 1 2 3 4 5 1 0 10 ∞ 30 100 1 2/10 4/30 5/100 2 ∞ 0 50 ∞ ∞ 2 3/50 -- -- 3 ∞ ∞ 0 ∞ 10 3 5/10 -- -- 4 ∞ ∞ 20 0 60 4 3/20 5/60 -- 5 ∞ ∞ ∞ ∞ 0 5 -- -- -- 圖的搜尋(DFS/BFS) 【題 SEQ TMT1 1】請你判斷一個圖有多少個相連的頂點群(connected components)。 【題 SEQ TMT1 2】請你判斷一個圖是否包含cycle。 【題 SEQ TMT1 3】Topological Sort(拓撲排序) 對於一個DAG(directed acyclic graph),請找出一種全部頂點的排列順序,使得所有的邊都指向後面。(1)直觀的想法:依序取出In-degree(入度數)為0的頂點,並且把該點所指向的所有點的In-degree減1。(2)使用DFS:記錄每個點進入finish狀態(黑色狀態:已走完該節點的所有邊)的時間,然後由大至小排列即可。 【題 SEQ TMT1 4】Articulation Points 如果將某個點拿掉之後將導致兩個以上的connected components,那麼這個點被稱為articulation point。(請參考2005培訓講義,基本想法為DFS。) ◤實力養成篇◢ 最小花費展開樹(Minimum Spanning Tree, MST) 以一個有加權的圖的某些邊為邊,所有節點為節點,所形成的展開樹中,所有邊的加權總和最小的一個。這題可以用Greedy解: 請試著用Prim’s Algorithm以及Kruskal’s Algorithm找出下面圖中的MST。 Prim’s Algorithm (1)找一個頂點放到MST節點集合中 (2)每次找到一個長度最小, 一端屬於MST但另一端不是 的邊。把這個邊以及端點 放進MST邊和點集合中。 (3)重複(2)的動作直到所 有點都被放到MST中為止。 Kruskal’s Algorithm (1)把所有的邊依照邊長由小 至大排序。 (2)依序檢查每個邊,若把此邊加入MST集合而不會造成cycle 那麼就放進MST集合。否則忽略掉。 (3)檢查完每個

文档评论(0)

zhaoxiaoj + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档