
算法图解
Amberrr-L
生活需要加点糖
展开
-
《算法图解》(第八章 贪婪算法)Python3 学习笔记习题&代码
目录第八章 贪婪算法8.1 教室调度问题8.2 背包问题练习18.3 集合覆盖问题近似算法代码练习28.4 NP 完全问题8.4.1 旅行商问题详解8.4.2 如何识别NP 完全问题练习38.5 小结第八章 贪婪算法学习如何处理不可能完成的任务:没有快速算法的问题(NP完全问题)。学习识别NP完全问题,以免浪费时间去寻找解决它们的快速算法。学习近似算法,使用它们可快速找到NP完全问题的近似解。学习贪婪策略——一种非常简...原创 2020-07-31 15:23:10 · 1214 阅读 · 2 评论 -
《算法图解》学习笔记习题和代码(第七章 狄克斯特拉算法)Python3
第七章 狄克斯特拉算法狄克斯特拉算法 (Dijkstra’s algorithm)上一章介绍了图的概念,这一章引入加权图。还拿上一章内容举例:我们使用广度优先搜索,找到的最短路径是路段数最短。(下图加粗路线)那是最快路径吗?给每一条到达金门大桥的路线加上时间,如下图:(加权图)此时,到达金门大桥最快的方式如上图加粗路线所示,而不是第一幅图的最短路径。这就是一个简单的加权图的例子。广度优先搜索,它找出的是段数最少的路径。要找出最快的路径(如第二个图所示),该如何办呢?为此,可.原创 2020-07-14 11:02:45 · 882 阅读 · 1 评论 -
《算法图解》学习笔记习题和代码(第六章 广度优先搜索)Python3
第六章广度优先搜索用新的数据结构图来建立网络模型。学习广度优先搜索。(第一种图算法——广度优先搜索(breadth-first search,BFS)。)学习有向图和无向图。学习拓扑排序,这种排序算法指出了节点之间的依赖关系。广度优先搜索让你能够找出两样东西之间的最短距离,不仅仅是狭义上的距离,含义很多:6.1 图简介...原创 2020-07-03 11:20:07 · 1005 阅读 · 0 评论 -
《算法图解》学习笔记习题和代码(第五章 散列表)Python3
目录第五章 散列表5.1 散列函数Python的散列表实现--字典 (代码)练习15.2 应用案例第五章 散列表一种基本的数据结构 散列表的内部机制:实现、冲突和散列函数。假设你在杂货店上班,需要查找某个商品的价格,比如苹果(apple)。如果采用简单查找的方式,就要浏览价格表每一行,需要的时间为O(n),如果价格表是按字母排序的话,可以使用二分查找,需要的时间是O(logn)。O(n)和O(logn)速度相差很大,假如你每秒钟可以浏览十行价格单。那么...原创 2020-06-11 10:15:28 · 1150 阅读 · 0 评论 -
《算法图解》学习笔记习题和代码(第四章 快速排序)Python3
目录第四章 快速排序4.1 分而治之D&C循环实现数组里的元素相加(code)递归函数实现数组里的元素相加(code)练习14.2 快速排序第四章 快速排序快速排序——一种常用的优雅的排序算法。快速排序使用分而治之的策略。分而治之(divide and conquer,D&C)——一种著名的递归式问题解决方法。4.1 分而治之D&C有一块土地,你要将这块地均匀地分成方块,且分出的方块要尽可能大。D&C解决问题的过程包...原创 2020-06-05 11:00:01 · 1372 阅读 · 4 评论 -
《算法图解》学习笔记习题和代码(第一、二章 二分法 选择排序)Python3
一、二分法仅当列表是有序的时候,二分查找才管用。时间复杂度:。(\log_ax:log以a为底,以x为真数。)e.g. 从100个数中猜一个数,不超过7次就可以猜出来。2^7=128原创 2020-05-22 14:41:22 · 1454 阅读 · 0 评论 -
《算法图解》学习笔记习题和代码(第三章 递归)Python3
第三章 递归3.1 递归递归——函数调用自己。学习如何将问题分成基线条件和递归条件。递归会让解决方案更清晰,并没有性能上的优势。实际上,在有些情况下,使用循环的性能更好。3.2 基线条件和递归条件比如,用递归方式编写倒计时:def countdown(i): print i countdown(i-1) 但运行这个程序,不会自己停止。编写递归函数时,必须告诉它何时停止递归。每个递归函数都有两部分:基线条件(base case)和递归条件(r...原创 2020-05-27 15:32:31 · 773 阅读 · 0 评论