网站运营和管理,wordpress读取数据库,深圳谷歌推广公司,搜索引擎优化大致包含哪些内容或环节24年秋的应该是张老师最后一次用卷面考试#xff0c;他说以后这节课的期末考试都是在OJ上刷题了张老师上课还挺有意思的#xff0c;上完之后能学会独立地思考算法设计问题了。整节课都在强调规模压缩这个概念#xff0c;考试也是考个人对这些的理解#xff0c;还挺好玩的哈… 24年秋的应该是张老师最后一次用卷面考试他说以后这节课的期末考试都是在OJ上刷题了张老师上课还挺有意思的上完之后能学会独立地思考算法设计问题了。整节课都在强调规模压缩这个概念考试也是考个人对这些的理解还挺好玩的哈哈 时间复杂度 T ( n ) T(n) T(n) 表示算法在输入规模为  n n n 时的实际运行时间 
在实际算法设计中常用以下三种 O O O 即“小于等于”描述 T ( n ) T(n) T(n)的上界。  1 、 n 、 2 n 、 2 n 2 ∈ O ( n 2 ) 1、n、2n、2n^2 \in O(n^2) 1、n、2n、2n2∈O(n2) Ω Ω Ω 即“大于等于”描述 T ( n ) T(n) T(n)的下界。  n 2 、 n 3 、 n 10 ∈ Ω ( n 2 ) n^2、n^3、n^{10} \in Ω(n^2) n2、n3、n10∈Ω(n2) Θ Θ Θ 表示“等于”表示 T ( n ) T(n) T(n)的上下界一致。  n 2 , 3 n 2 ∈ Θ ( n 2 ) n^2,3n^2 \in Θ(n^2) n2,3n2∈Θ(n2) 主定理求递推式的时间复杂度  T ( n )  a T ( n b )  f ( n ) T(n)aT(\frac{n}{b})f(n) T(n)aT(bn)f(n) 
其中  a a a 为归约后的子问题个数 n / b n/b n/b 为归约后子问题的规模 f ( n ) f(n) f(n)为 split 和 merge 子问题的解的工作量。 直接上例题 T ( n )  9 T ( n 3 )  n T(n)9T(\frac{n}{3})n T(n)9T(3n)n 即  a  9  b  3  f ( n )  n  n l o g b a  n 2 a9b3f(n)nn^{log_ba}n^2 a9b3f(n)nnlogban2 因为 f ( n )  n  n 2 f(n)  n  n^2 f(n)nn2即case 1 T ( n )  Θ ( n 2 ) T(n)Θ(n^2) T(n)Θ(n2)   T ( n )  T ( 2 n 3 )  1 T(n)T(\frac{2n}{3})1 T(n)T(32n)1 即 a  1  b  2 3 , f ( n )  1 , n l o g b a  1 a1b\frac{2}{3}, f(n)1, n^{log_ba}1 a1b32,f(n)1,nlogba1 因为  f ( n )   n l o g b a f(n)  n^{log_ba} f(n)nlogba即case 2此时k为0即 T ( n )  Θ ( l o g n ) T(n)Θ(logn) T(n)Θ(logn)   T ( n )  2 T ( n 4 )  n 2 T(n)2T(\frac{n}{4})n^2 T(n)2T(4n)n2 即 a  2  b  4  f ( n )  n 2 , n l o g b a  n 0.5 a2b4f(n)n^2, n^{log_ba}n^{0.5} a2b4f(n)n2,nlogban0.5 因为  f ( n )  n l o g b a f(n)nlog_ba f(n)nlogba所以是第三种 T ( n )  Θ ( n 2 ) T(n)Θ(n^2) T(n)Θ(n2)  
排序 
分-治-合并。 
老师说的砍规模好像就包括了分和治。 
砍规模干活多则合并时候干活少。反之同理。 二分应用于排序对于quicksort和mergesort快排在砍规模时先要让两边各自大于或小于pivot较麻烦;而合并不需要显式操作较简单。归并排序在砍规模时直接将数组分成两半较简单;合并时要进行两个数组的排序和合并较麻烦。 
规模 n 推到规模 n-1应用于排序选择排序、冒泡排序、插入排序每次只减少一个问题数量是较慢的。而这三个排序中选择排序和冒泡排序每次少一个未排序部分的最值元素即砍规模时多干活。而插入排序每次少一个当前游标的元素(不一定是最值)而需要在合并时将游标元素在已排序部分插到合适的位置即合并时多干活。 
快排可能会退化采用随机策略可以避免最坏复杂度为 O ( n 2 ) O(n^2) O(n2) 
特殊线性排序不考。 
建堆 
按照树的形态去砍规模。 
砍规模干活多比如大顶堆先选一个最大的放在堆顶然后递归地处理两个子树。相当于规模直接砍半无显式合并。  T ( n )  2 T ( n 2 )  O ( n ) T(n)2T(\frac{n}{2})O(n) T(n)2T(2n)O(n)得 T ( n )  Θ ( n l o g n ) T(n)Θ(nlogn) T(n)Θ(nlogn) 
砍规模干活少从最后一个节点开始一下一下砍直接找最后一个没用的非叶节点即可。合并是将当前子树的根节点向下调整耗时较长。 T ( n )  2 T ( n 2 )  l o g n T(n)2T(\frac{n}{2})logn T(n)2T(2n)logn得 T ( n )  Θ ( n ) T(n)Θ(n) T(n)Θ(n) 
Insert把元素插入到最后一项再向上调整。(堆排序同理) 
如果要动态挑最值可以用优先队列辅助。 
Select 
找数组中第k小的元素。 
类似快排的partition数组二分后看topk在哪边。 
有种优化策略将数组先分为多组(每组中奇数个元素)再在每组找个中位数使用中位数的中位数作为pivot做partition。避免 O ( n 2 ) O(n^2) O(n2)的最坏时间复杂度。 
矩阵相乘的二分方法 
不考 
最大子数组 
找和最大的非空连续子数组。 
方法1二分将数组分为两半从左半部分、右半部分和跨中间这三部分的子数组中找个最大的。跨中间就是从中点往前面找个最大的后缀、往后边找个最大的前缀相加就是跨中间的最大子数组。 
方法2DP每次减少一个问题的规模。用一个全局变量保存历史最大子数组并保存当前位置之前的子数组情况。如果之前的子数组之和已经为负数则从当前位置另起一个新子数组。否则扩展之前的子数组到当前为止即使当前元素为负数全局变量保存的仍是之前的全局最大子数组。 
DP 
优化问题用到规模压缩即DP。 
刻画最优子结构。列递推式/状态转移方程能用中文解释。递归定义最优解的值。自下而上计算。原因需要利用子问题而多个父问题共享某些子问题即子问题会被重复的求解。自下而上可以避免重复求解。如果改成自上而下则需要使用备忘录做记忆化。 
有些问题不能用子问题求最优解比如最长简单路径问题可能两个最长简单子路径拼起来不是简单路径。 
相关问题计算题 
1. 01背包 
思路穷举是每个物品要么放入要么不放入 O ( 2 n ) O(2^n) O(2n)。如果当前剩余容量为 k在考虑第 i 个物品是否拿拿不拿的两种情况都可以利用 d p [ i − 1 ] [ k ] dp[i-1][k] dp[i−1][k]这个子问题。由于不知道 k 是多少每次都需要扫描一遍整个容量。 
2. 最大子数组 
上面写了。 
3. LCS最长公共子序列 
思路穷举是 O ( 2 m  n ) O(2^{mn}) O(2mn)。如果已知当前游标  i i i 和  j j j 前面的LCS继而可以得到当前的LCS。即满足最优子结构。 d p dp dp数组起到备忘录的作用。 
设  d p [ i ] [ j ] dp[i][j] dp[i][j] 表示序列  X X X 的前  i i i个字符和序列  Y Y Y 的前  j j j 个字符的 LCS 长度。 
m, n  len(X), len(Y)
dp  [[0] * (n  1) for _ in range(m  1)]
for i in range(1, m  1):for j in range(1, n  1):if X[i - 1]  Y[j - 1]:dp[i][j]  dp[i - 1][j - 1]  1else:dp[i][j]  max(dp[i - 1][j], dp[i][j - 1])4. 矩阵链乘 
对于矩阵数组 [ A 1 , A 2 , A 3 ] [A1,A2,A3] [A1,A2,A3]的链乘最小代价可以通过 [ A 1 , A 2 ] ∗ [ A 3 ] [A1,A2]*[A3] [A1,A2]∗[A3]和 [ A 1 ] ∗ [ A 2 , A 3 ] [A1]*[A2,A3] [A1]∗[A2,A3]的代价得到利用了 [ A 1 , A 2 ] [A1,A2] [A1,A2]和 [ A 2 , A 3 ] [A2,A3] [A2,A3]这两个子问题。扩展即可知道子问题就是在各个分割点分割之后的子数组利用子问题的方式就是从子问题中选一个最值。满足最优子结构。 
会重复利用较短的子数组所以自下而上用个dp数组做备忘录。 
5. ALS装配线调度 
就是给了两条装配线的进入耗时、出去耗时。然后两条装配线在功能上是相同的有多个装配站两条线上同一个下标的装配站是功能相同但用时可能不同。所以有个切换操作可以把物品从一条线搬到另一条线试图加速。所以要求一个物品完成装配花费的最短时间。长的像最短路径其实因为方向是固定的所以不是图而是树问题稍微简单一点。 dp方法见下图。  
贪心 
如果可以直接知道用哪个子问题也能得到最优解不用比较各个子问题的结果就可以贪心、即贪心 ∈ \in ∈DP。 相关问题如 分数背包优先选单价高的。  哈夫曼树权重越高的字符编码长度越短。权重越高越会被后挑选即越接近根节点。   活动选择多个活动有起止时间只能选互不冲突的使活动数量最大化。DP是在当前活动处找前面最后一个兼容本活动的活动然后选或者不选dp[i]是到前i个活动的最多兼容活动数。贪心策略是优先选结束时间早的为后续活动留下更多时间。  
最短路径 
重点是确定通过计算次序。 
之前的问题都是可以转化为一棵树子问题向上扩展最终得解。 
而b-c、c-b都有可能即c可以利用b之前的最短路径、b也可以利用c之前的最短路径。所以不能是一棵向上的树。所以需要确定一个计算次序即谁是子问题。 
Dijkstra 
在无负权环的时候这个计算次序是有的。他是子问题找父问题即找一个最近的节点。如果有负权环则有些很远节点的距离反而越来越近计算次序就出现问题了。通过计算次序理解为什么是dp。 
Bellman-ford 
允许负权环所以没有计算次序所以迭代多轮来补偿。单源。个人感觉就是Floyd的单源形式。 
SPFA就是如果有些点被更新后才加入队列进行后续的松弛更新。 
如果第V次还能松弛说明有负权环。 
Floyd 
多源。 d p [ i ] [ j ] [ k ] dp[i][j][k] dp[i][j][k]已知未使用 k 时i 到 j 的最短路径看用 k 是否能继续缩短。 
时间复杂度 
floyd是 O ( V 3 ) O(V^3) O(V3)。 
迪杰斯特拉是每次找一个最近的点然后基于这个中转点更新源点到中转点的邻点。所以对于邻接矩阵的实现是V的循环里套个找邻点的V O ( V 2 ) O(V^2) O(V2) Bellman-ford是重复V-1次然后松弛所有边所以是 O ( V ∗ E ) O(V*E) O(V∗E) 
搜索 
无法用规模压缩只能蛮力穷举。 
设定边界减少不必要的搜索。 
限界函数杀死更多的节点、效率。 
NP问题 
P可以在多项式时间内求解NP只能在多项式问题内验证解。 NPC(理论上可解穷举)circuit-sat(电路可满足)、TSP(旅行商)、3-color三色(平面图染三色使得相邻区域颜色不同)、哈密尔顿路径。 
不可判定Hilbert’s Tenth Problem(希尔伯特第十问题)、Halting Problen(停机问题)、Post Correspondence Problem(PCP)、Program Equivalence Problem(程序等价性问题)、Optimal Data Compression Problem(最优数据压缩问题)、Virus Identification Problem(病毒识别问题)、多元多项式整数根费马大定理、普斯特对应问题 文章转载自: http://www.morning.cbpmq.cn.gov.cn.cbpmq.cn http://www.morning.qpnmd.cn.gov.cn.qpnmd.cn http://www.morning.ckrnq.cn.gov.cn.ckrnq.cn http://www.morning.rwjfs.cn.gov.cn.rwjfs.cn http://www.morning.spsqr.cn.gov.cn.spsqr.cn http://www.morning.pgxjl.cn.gov.cn.pgxjl.cn http://www.morning.jhrqn.cn.gov.cn.jhrqn.cn http://www.morning.czgtt.cn.gov.cn.czgtt.cn http://www.morning.jjxnp.cn.gov.cn.jjxnp.cn http://www.morning.bmgdl.cn.gov.cn.bmgdl.cn http://www.morning.ktpzb.cn.gov.cn.ktpzb.cn http://www.morning.ddzqx.cn.gov.cn.ddzqx.cn http://www.morning.rhkgz.cn.gov.cn.rhkgz.cn http://www.morning.mbfkt.cn.gov.cn.mbfkt.cn http://www.morning.tzmjc.cn.gov.cn.tzmjc.cn http://www.morning.jcjgh.cn.gov.cn.jcjgh.cn http://www.morning.rxydr.cn.gov.cn.rxydr.cn http://www.morning.qcbhb.cn.gov.cn.qcbhb.cn http://www.morning.nfgbf.cn.gov.cn.nfgbf.cn http://www.morning.pbgnx.cn.gov.cn.pbgnx.cn http://www.morning.mjglk.cn.gov.cn.mjglk.cn http://www.morning.nfyc.cn.gov.cn.nfyc.cn http://www.morning.gyylt.cn.gov.cn.gyylt.cn http://www.morning.wslpk.cn.gov.cn.wslpk.cn http://www.morning.gyfhk.cn.gov.cn.gyfhk.cn http://www.morning.hkshy.cn.gov.cn.hkshy.cn http://www.morning.zwtp.cn.gov.cn.zwtp.cn http://www.morning.tzzxs.cn.gov.cn.tzzxs.cn http://www.morning.spbp.cn.gov.cn.spbp.cn http://www.morning.tlbdy.cn.gov.cn.tlbdy.cn http://www.morning.jmmzt.cn.gov.cn.jmmzt.cn http://www.morning.rzysq.cn.gov.cn.rzysq.cn http://www.morning.dwncg.cn.gov.cn.dwncg.cn http://www.morning.xnrgb.cn.gov.cn.xnrgb.cn http://www.morning.fdmtr.cn.gov.cn.fdmtr.cn http://www.morning.fbmrz.cn.gov.cn.fbmrz.cn http://www.morning.sgjw.cn.gov.cn.sgjw.cn http://www.morning.gpnwq.cn.gov.cn.gpnwq.cn http://www.morning.ztdlp.cn.gov.cn.ztdlp.cn http://www.morning.c7617.cn.gov.cn.c7617.cn http://www.morning.dqwykj.com.gov.cn.dqwykj.com http://www.morning.wbxbj.cn.gov.cn.wbxbj.cn http://www.morning.tlfyb.cn.gov.cn.tlfyb.cn http://www.morning.kpgft.cn.gov.cn.kpgft.cn http://www.morning.nhzxd.cn.gov.cn.nhzxd.cn http://www.morning.ckzjl.cn.gov.cn.ckzjl.cn http://www.morning.wpxfk.cn.gov.cn.wpxfk.cn http://www.morning.nqlnd.cn.gov.cn.nqlnd.cn http://www.morning.drnfc.cn.gov.cn.drnfc.cn http://www.morning.gwqq.cn.gov.cn.gwqq.cn http://www.morning.ltxgk.cn.gov.cn.ltxgk.cn http://www.morning.vjwkb.cn.gov.cn.vjwkb.cn http://www.morning.ykyfq.cn.gov.cn.ykyfq.cn http://www.morning.hrzky.cn.gov.cn.hrzky.cn http://www.morning.kmcfw.cn.gov.cn.kmcfw.cn http://www.morning.rwjfs.cn.gov.cn.rwjfs.cn http://www.morning.cgmzt.cn.gov.cn.cgmzt.cn http://www.morning.bqfpm.cn.gov.cn.bqfpm.cn http://www.morning.sbrxm.cn.gov.cn.sbrxm.cn http://www.morning.lqlc.cn.gov.cn.lqlc.cn http://www.morning.qxwgx.cn.gov.cn.qxwgx.cn http://www.morning.rbsmm.cn.gov.cn.rbsmm.cn http://www.morning.knzdt.cn.gov.cn.knzdt.cn http://www.morning.c7497.cn.gov.cn.c7497.cn http://www.morning.qnbsx.cn.gov.cn.qnbsx.cn http://www.morning.dnconr.cn.gov.cn.dnconr.cn http://www.morning.lkmks.cn.gov.cn.lkmks.cn http://www.morning.ejknty.cn.gov.cn.ejknty.cn http://www.morning.kllzy.com.gov.cn.kllzy.com http://www.morning.sbwr.cn.gov.cn.sbwr.cn http://www.morning.dqwkm.cn.gov.cn.dqwkm.cn http://www.morning.pnfwd.cn.gov.cn.pnfwd.cn http://www.morning.knsmh.cn.gov.cn.knsmh.cn http://www.morning.yzzfl.cn.gov.cn.yzzfl.cn http://www.morning.ljdjn.cn.gov.cn.ljdjn.cn http://www.morning.bpmtg.cn.gov.cn.bpmtg.cn http://www.morning.homayy.com.gov.cn.homayy.com http://www.morning.srgsb.cn.gov.cn.srgsb.cn http://www.morning.bsrqy.cn.gov.cn.bsrqy.cn http://www.morning.dmtwz.cn.gov.cn.dmtwz.cn