算法设计与分析(小总结)

本文总结了算法设计与分析的重点,包括时间复杂度、递推式复杂度解析、贪心策略证明、分治算法、动态规划、基础图论、最小生成树、单源最短路和多源最短路,以及NP相关概念。强调了理解和证明算法复杂度的重要性,并提醒注意不同算法的特点和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原先一直没注意这一门,大概是因为学这些算法的时候,板子都不知道背多少遍了。可是考试毕竟不一样,如果来个证明很容易抓瞎。

看了往年的试题,可能确实因为难度高,范围一缩再缩,虽然是基本按照算导来的,但是算法基本都是最基础的那种。20年之前网络流也是重点,最小割最大流,现在完全不提了。21年之前一般要出一道模板3SAT规约题,而本学期只是简单一提,完全没讲到具体规约的过程。

总而言之,范围还是挺有限的,不过考虑到课件全英文+大量证明,想要真掌握还是挺难。

大概有这么几个重点:

1.时间复杂度,上下界。应该会有分析题,但是我一般是靠脑补。注意理论。

五种符号分别是渐进上界O(一般的时间复杂度),上界o,渐进下界Ω,下界ω,以及一个渐进紧确界那个奇怪的符号。

可能涉及到证明,后续各种算法大概率都会出个复杂度的问吧,不过对于一般的算法看循环去猜差不多总能对。

2.递推式的复杂度解析,通常用主定理就行,偶尔可以猜猜,但是不好证明。

三种方式:猜想+数学归纳证明,递归树(也就是模拟每一层分治,分别计算,注意合并的成本),主定理(是从递归树推出来的,证明看过但是实在想不起来了。)

主定理最常用,但是有时候不好合并也需要用递归树。

 别忘了三种情况。如果前面大就取前面,一样大就加个log,后面大还需要比较af(n/b)<=cf(n)且c<1,也就是不能越分治花的时间越长,那就没法往下推了。如果满足,则用后面当上界。

logb a是怎么推出来的?考虑递归树逐层往下,一共会有logb(n)层,每层需要分裂a个子问题,那么在满足上述3的条件的情况下,可以忽略非叶子节点造成的损耗(都是log级别的),一共有a^(logb(n))个叶子,每个是O(1),总共就

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值