![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
经典算法
弱虫的自我修炼
浩然明理,俨然肯学。
展开
-
字符串匹配->KMP算法
背景:最近在学习数据结构,学到“串”这一块时,遇到了KMP算法。但是卡了好长时间不是很理解这个算法。今天突然get到这个算法的点了,故写博客记录一下,防止之后遗忘。可能我理解还有什么不到位的地方,如果大家发现了请多多指教。为了方便叙述,先设定被搜索串(主串)为M,而搜索串(目标串)为T。关于串的匹配模式,最简单最常用的也就是BF算法了,它的原理就是每次从主串M中取出一个和T等长的子字符...原创 2019-01-13 08:24:34 · 124 阅读 · 0 评论 -
工程规划->拓扑排序
背景:拓扑排序是是图的一个比较重要的知识点,在实际生活中常见于解决工程中各个任务的完成顺序即规划问题,下面来介绍一下拓扑排序。拓扑排序定义 拓扑排序的实际问题 拓扑排序的求解方法及代码实现拓扑排序定义所谓拓扑排序,是指将一个有向图中的所有顶点排成一个线性序列,序列中任何顶点与其前面的顶点不存在关系。假设在图中任取两点u,v,两点存在关系(u,v),在该图的拓扑排序中u必须在v之前...原创 2019-02-15 16:04:24 · 364 阅读 · 0 评论 -
最小生成树->Prim算法和Kruskal算法
背景:在学习图的知识时,最小生成树是一个最普遍的概念。它在日常生活中的应用很普遍,比如:有A、B、C、D、E五个城市,现在想在五个城市之间建设通信线路连通,每两个城市之间修建线路的费用不同,我们当然想用最小的代价将五个城市通信连接起来,这时,如何获取最小代价的方案,也就是如何找到最小生成树就显得尤为重要。如何寻找最小生成树,目前常用的有Prim(普里姆)算法和Kruskal(克鲁斯卡尔)算...原创 2019-01-31 10:49:24 · 507 阅读 · 0 评论 -
最短路径->Dijkstra算法和Floyd算法
背景:在图的学习过程中,最短路径问题是一个肯定会遇到的问题。而这个问题的原型来源于我们实际生活中的问题,例如汽车的最优路径导航。所以为了找到解决这些实际问题的最优方案,前辈们提出了Dijkstra算法和Floyd算法,下面就来详细地了解一下这两个出名的算法。现在,假设有V0~V6七个地方,每两个地方之间的距离入下图所示:Dijkstra算法:O()这是一种贪心算法,每次找到一条...原创 2019-02-12 08:05:00 · 305 阅读 · 0 评论