算法(Python)
随笔
Howdu
这个作者很懒,什么都没留下…
展开
-
动态规划算法简述
参考链接1、概念是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。动态规划(Dynamic Programming)对于子问题重叠的情况特别有效,因为它将子问题的解保存在表格中,当需要某个子问题的解时,直接取值即可,从而避免重复计算!...原创 2020-03-29 18:07:27 · 1306 阅读 · 0 评论 -
贪婪算法
1、概念贪婪算法: 每步都采取最优的做法。优点: 简单易行。特点: 得到的结果是最优解或者与最优解相当接近。所以也不是任何情况下行之有效的。可以看成是一个近似算法。2、教室课表调度问题课程表如下,如何选出尽可能多且时间不冲突的课程呢?英语8 :00 AM9:00 AM思修8:30 AM9:30 AMC语言9:00 AM10:00 AM计算机概论...原创 2020-03-27 23:06:17 · 594 阅读 · 0 评论 -
狄克斯特拉算法
1、引入上篇博文中讲述了广度优先搜索的算法,主要解决是否存在A->B和A->B路径最短的问题。广度优先搜索仅仅是解决了图边数最少的路径,假如边上附有权值,要找出最快的路径,那此时可使用狄克斯特拉算法。2、狄克斯特拉算法关键理念:找出图中最便宜的节点,并确保没有该节点的更便宜的路径!作用:能够找出加权图中前往X的最短路径!适用场合:只适合有向无环图!!!不适合无向图和有...原创 2020-03-27 11:12:26 · 122 阅读 · 0 评论 -
广度优先搜索
1、广度优先搜索广度优先搜索是一种用于图查找算法,可帮助回答两类问题?第一类问题:从节点A出发,有前往节点B的路径吗?第二类问题:从节点A出发,前往节点B的哪条路径最短?2、举例假设M经营一个鱼塘,需要找销售商,以便卖掉养好的鱼。这时,M联系销售商有两种方式:1、通过M的通讯录联系,看是否有销售商。2、通过M的通讯录联系朋友,是否有销售方的联系方式。假设,M的通讯录有A,B...原创 2020-03-25 21:46:38 · 270 阅读 · 0 评论 -
散列表
1、引入假设你在一家咖啡店收银员,一位顾客来喝咖啡,突然问你某一种咖啡的价格?如果你浏览每一样咖啡的价格,找出此咖啡的价格,这需要很长的时间,时间可表示为O(n)。如果你通过咖啡价格按字母顺序排列,你可以通过二分查找找出咖啡价格,时间可表示为O(log n)。但是作为收银员查找咖啡价格是件很痛苦的事,顾客体验感也不是很好,为此,你就应该能够记住所有商品的价格,这样就不用查找了,时间可表示为O(1...原创 2020-03-24 15:40:29 · 89 阅读 · 0 评论 -
递归
1、递归是什么?递归,在数学与计算机科学中,是指函数的定义中使用函数自身的方法。也就是说,递归算法是一种直接或者间接调用自身函数或者方法的算法。通俗来说,递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。优点:实现简单,可读性好。缺点:效率较低,容易溢出,重复计算。2、实例1—李白打酒(python3)话说大诗人李白,一生好饮。幸好他从不开车。一天...原创 2020-03-05 21:41:24 · 339 阅读 · 0 评论 -
穷举法
1、介绍穷举法是将所有的可能性罗列出来,在其中寻找答案的一种方法。理论上讲,穷举法几乎能解决所有问题,但是穷举法通常效率差,就算使用一般也需要做一些优化。2、实例1...原创 2020-02-27 22:48:44 · 2241 阅读 · 0 评论 -
时间复杂度和空间复杂度
1、介绍一个算法的优劣程度主要取决于程序执行时间和计算占用存储空间来衡量。时间复杂度 :计算的是 算法执行语句的次数,可判断算法需要消耗时间长短,消耗时间越少越好。空间复杂度:是算法在运行过程中临时 消耗存储空间的大小,消耗存储空间越少越好。2、时间复杂度2.1、表示方法:一般使用“大O符号表示法”来表示时间复杂度:T(n) = O(f(n)),其中n是影响复杂度变化的因子,f(n...原创 2020-02-22 00:55:58 · 163 阅读 · 0 评论