算法
文章平均质量分 69
..Serendipity
唯一不变的是变化本身
展开
-
克鲁斯卡尔算法
1. 应用场景-公交站问题某城市新增7个站点(A, B, C, D, E, F, G) ,现在需要修路把7个站点连通各个站点的距离用边线表示(权) ,比如 A – B 距离 12公里问:如何修路保证各个站点都能连通,并且总的修建公路总里程最短?2. 克鲁斯卡尔算法介绍克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成树的算法。基本思想:按照权值从小到大的顺序选择n-1条边,并保证这n-1条边不构成回路具体做法:首先构造一个只含n个顶点的森林,然后依权值从小到大从连通网中选择原创 2022-01-24 13:12:19 · 108 阅读 · 0 评论 -
普利姆算法(Prim)
1. 应用场景-修路问题有胜利乡有7个村庄(A, B, C, D, E, F, G) ,现在需要修路把7个村庄连通各个村庄的距离用边线表示(权) ,比如 A – B 距离 5公里问:如何修路保证各个村庄都能连通,并且总的修建公路总里程最短?2. 最小生成树修路问题本质就是就是最小生成树问题, 先介绍一下最小生成树(Minimum Cost Spanning Tree),简称MST。给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树N个顶点,一定有原创 2022-01-21 16:37:28 · 793 阅读 · 0 评论 -
贪心算法.
1. 应用场景-集合覆盖问题假设存在下面需要付费的广播台,以及广播台信号可以覆盖的地区。 如何选择最少的广播台,让所有的地区都可以接收到信号2. 贪心算法介绍贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果2.1 思路分析2.1.1 穷举法列出每个可能的广播台的集合,这被称为幂集。假设总的有n个广播原创 2022-01-21 14:54:01 · 299 阅读 · 0 评论 -
KMP算法
1. 应用场景-字符串匹配问题字符串匹配问题::有一个字符串 str1= ““硅硅谷 尚硅谷你尚硅 尚硅谷你尚硅谷你尚硅你好””,和一个子串 str2=“尚硅谷你尚硅你”现在要判断 str1 是否含有 str2, 如果存在,就返回第一次出现的位置, 如果没有,则返回-12. 暴力匹配算法如果用暴力匹配的思路,并假设现在str1匹配到 i 位置,子串str2匹配到 j 位置,则有:如果当前字符匹配成功(即str1[i] == str2[j]),则i++,j++,继续匹配下一个字符如果失配(原创 2022-01-19 14:03:31 · 68 阅读 · 0 评论 -
动态规划算法
1. 应用场景-背包问题背包问题:有一个背包,容量为4磅 , 现有如下物品要求如下:要求达到的目标为装入的背包的总价值最大,并且重量不超出要求装入的物品不能重复2. 动态规划算法介绍动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题原创 2022-01-19 12:37:13 · 1771 阅读 · 0 评论 -
分治算法.
1. 分治算法介绍分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)……2. 分治算法的基本步骤分治法在每一层递归上都有三个步骤:分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题解决:若子问题规模较小而容易被解决则直接解,否则递原创 2022-01-17 11:51:39 · 130 阅读 · 0 评论 -
二分查找算法(非递归)
1. 二分查找算法(非递归)介绍二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找二分查找法的运行时间为对数时间O(㏒₂n) ,即查找到需要的目标位置最多只需要㏒₂n步,假设从[0,99]的队列(100个数,即n=100)中寻到目标数30,则需要查找步数为㏒₂100 , 即最多需要查找7次( 2^6 < 100 < 2^7)2. 思路从中间查找,如果中间的这个数比我要找的数大,则向左查找,反之则向右查找。直到找到需要查找的数3. 代码实现/*原创 2022-01-17 11:18:20 · 1258 阅读 · 0 评论