图论基础知识(三)

本文转载自 个人公众号文章,原文是 lee 神写的,已获原文做者受权。

本期给你们带来图论基础知识的最后一部分总结。算法

Slides 的制做素材大部分来源于网络,出处大多无从查起,这里感谢原创内容。但我相信知识的分享是无价的,正如鲁迅所说:“有人翻印,功德无量。”网络

咱们重点来介绍一下邻接矩阵。数据结构

  • 用矩阵的理论和分析方法来研究图论,将图的一些问题转换为矩阵运算问题,更适合于计算机处理。
  • 图在计算机中就是以矩阵形式存贮和读取的,也可借助图的理论和方法研究矩阵中的问题

这里插播一道例题,骑士拨号器。ide

这题最朴素的思路是把电话号码转化成图,用有memo的DFS来作这道题。下面给出Discussion区@peritan的答案。优化

这题同时很好诠释DP & BFS & DFS 三者之间微妙的关系,读者能够悉心体会甄别其间异同。在上一期的讲解中咱们提到了这几者的关系。spa

下面咱们再来看一下,一样很Straight Forward的iteration解法。能够看到,迭代计算的部分,就是图的边的关系。3d

下面的图表中,给出了每一个号码的初始值,和他们增加的效果。我我的以为有点像马尔可夫链的效果,很容易和矩阵运算联系到一块儿。 code

因此咱们能够把他们的转化关系用矩阵来表示,每一步的路径数目,用矩阵幂运算来计算。矩阵幂运算能够优化到O(logN),矩阵运算的模版网上不少,不是模版党暂且不表,手撸也至关好写。一样的方法也能够用在不少地方,个别题难点会体如今关系矩阵的构造上,其本质就是线性变化,能递推就能够快速幂。blog

回到咱们的主题,下面讲一下,算法题中我常常使用的,存储图的数据结构,邻接表。token

以上就是咱们图论基础知识的总结。练好图中通常的DFS和BFS写法,就成功了一大半。常涉及的进阶图论知识,还有一些用人名命名的各类算法,包括不限于: 两种最小生成树MST,三种最短路径,公共祖先LCA。鉴于我和他们这些人也不太熟,暂且不表啦,期待其余老师投稿啦。


qrcode_green.jpeg

相关文章
相关标签/搜索