首页 > 其他分享 >【23秋】提高实战营 之 课程笔记篇

【23秋】提高实战营 之 课程笔记篇

时间:2023-11-23 22:38:03浏览次数:36  
标签:实战 分析 势能 log 23 epsilon 复杂度 笔记 时间

01 复杂度分析与排序算法

复杂度分析

时间复杂度:程序的运行步数和输入数据的关系。

空间复杂度:程序运行所需要的内存与输入数据的关系。

复杂度的计算

直接算

对于比较简单的程序,我们可以直接计算时间复杂度。

例如下列矩阵乘法的代码:

//O(nmr) ≈ O(n^3)
for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
		for(int k=1;k<=r;k++)
			c[i][j]+=a[i][k]*b[k][j];

上述代码的时间复杂度为 \(O(nmr)\),如果 \(m,r\) 和 \(n\) 同阶,那么该代码的时间复杂度也可以记为 \(O(n^3)\)。

均摊

假设一张 \(n\) 个点 \(m\) 条边的无向图,遍历一遍所有的边:

//O(n+m)
for(int i=1;i<=n;i++)
	for(auto v:g[x])
		......

看似上述代码的时间复杂度为 \(O(nm)\),但是每条边的 \(u,v\) 最多会被枚举两次,所以时间复杂度为 \(O(n+m)\)。

势能

听了半天,听不懂,不过感觉没啥用,这里放三个博客吧。

主定理

主要用来计算一些递归算法的时间复杂度。

$a \ge 1,b > 1 $ 为常数,\(f(n)\) 为函数,\(T(n)\) 为非负整数,则有以下结果(分类讨论):

  1. 若 \(f(n) = O(n^{\log_{b} {a-\epsilon}}),\epsilon > 0\),那么 \(T(n) = O(n^{\log_{b} {a}})\);

  2. 若 \(f(n) = O(n^{\log_{b} {a}})\),那么 \(T(n) = O(n^{\log_{b} {a}} \log n)\);

  3. 若 \(f(n) = \Omega(n^{\log_{b} {a+\epsilon}}),\epsilon > 0\),且对于某个常数 \(c < 1\) 和所有充分大的 \(n\) 有 \(af(\frac{n}{b}) \le cf(n)\),那么 \(T(n) = O(f(n))\)。

标签:实战,分析,势能,log,23,epsilon,复杂度,笔记,时间
From: https://www.cnblogs.com/CheZiHe929/p/17852653.html

相关文章

  • 11月23日
    今天,上午上了统一建模语言,写了实验报告,关于外卖管理系统,基本描述完成了对其功能的描述,然后上了篮球课,进行了篮球比赛,下午上了数据结构,写了栈和队列的题目,然后我们去上了离散课学习了阿贝尔群和循环群,下课之后写了打算向跟完善的系统进步.......
  • 2023-11-23
    packagecn.alan.wms;importcn.alan.wms.async.Async;importcn.alan.wms.bean.User;importcn.alan.wms.listener.OnCompleteListener;importcn.alan.wms.tools.OperateSql;importcn.alan.wms.tools.Logger;importjava.util.ArrayList;importjava.util.List;......
  • 每日总结-23.11.22
    packagekousuanti;importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.Random;publicclassArithmeticProgramextendsJFrame{privateJPanelcontentPanel;privateJ......
  • 20231122
    2023/11/231798C-CandyStore只能说gcd,lcm的题目还是练少了,一些性质都不知道。对于一段可以用同一个标签的区间,我们知道他们的c是一样的,c=di*bi,每一个物品的bi固定,那么c就一定是lcm{bi..bn},因为c要能整除任何一个bi。然后我们来看可以自己决定的di,ai%di==0.而每一个物品的di=......
  • 每日总结-23.22.23
    packagekousuanti;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.JTextField;imp......
  • 20231123
    2023/11/231798C-CandyStore只能说gcd,lcm的题目还是练少了,一些性质都不知道。对于一段可以用同一个标签的区间,我们知道他们的c是一样的,c=di*bi,每一个物品的bi固定,那么c就一定是lcm{bi..bn},因为c要能整除任何一个bi。然后我们来看可以自己决定的di,ai%di==0.而每一个物品的di=......
  • 算法学习笔记(42): 颜色段均摊
    颜色段均摊反正ODT!对于ODT来说,其区间推平的复杂度是\(O((n+m)\logn)\)的,十分的优秀,但是对于查询来说,我们需要通过分块或者线段进行辅助,从而达到正确的复杂度。有一种特殊情况例外:如果推平和查询同时发生,意味着推平时对于每一段查询的复杂度是没有问题的!判断是否......
  • lxl学长讲课笔记
    lxl学长讲课笔记常数种可能性的状态通过预先处理多种状态的信息,从而快速的转换状态。经典操作:flip。分析信息的思路利用线段树利用线段树的时候,如何合并两个分支区间的信息,我们需要有如下注意:答案-依赖的信息,继续的依赖,这样就能找到需要维护的东西。这终会产生闭包......
  • 2023-2024 20232319《网络空间安全导论》第2周学习总结
    思维导图教材学习过程中的问题和解决过程问题一:sm2算法和sm4算法是对称算法还是非对称算法?答案:sm2属于非对称算法,sm4属于对称算法。问题一解决方案:询问chatgpt。问题二:区块链技术与密码学的关系答案:区块链技术与密码学有着密切的关系,密码学是区块链技术的基础之一。以下是......
  • 2023.11.23——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.JavaGUI2.会话跟踪技术明日计划:学习......