普林斯顿《算法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

相关文章
相关标签/搜索