当前位置: 首页 > backend >正文

算法概述篇

目录

文章目录

前言

一、算法是什么?

二、算法复杂性分析

1.时间复杂性T(n)

1.1渐近复杂性

1.2渐近记号

2.空间复杂性S(n)

常见情况

三、NP完全性理论

1.基本概念

2.一些典型的NP完全问题

总结


前言

注意:此后将更新有关算法分析与设计的相关知识点和练习,大家可以关注一下,敬请期待下一集~

本篇文章将主要讲述有关算法的基本概念还有分析方法,将从五个部分来分别讲述,有任何疑问和建议欢迎大家在评论区留言~


一、算法是什么?

算法是指解决问题的一种方法或者一个过程

算法是若干指令的有穷序列,满足以下性质:

  1. 输入:有外部提供的量作为算法的输入
  2. 输出:算法产生至少一个量作为输出
  3. 确定性:组成算法的每条指令都是清晰,无歧义
  4. 有限(穷)性:算法种每条指令的执行次数是有限的,执行每条指令的时间也是有限的

注意:这里算法的第四条性质是与程序的重要区别,程序可以是无穷的,比如你自己写了一个死循环~

二、算法复杂性分析

算法复杂性=算法所需要的计算机资源

1.时间复杂性T(n)

影响时间复杂度的因素:问题规模n,输入序列I,算法本身A

1.1渐近复杂性

概念:设算法的运行时间为T(n),如果存在T*(n),使得\lim\frac{T(n)-T*(n)}{T(n)}=0,当n趋近于∞时,就称T*(n)为算法的渐近性态渐近(时间)复杂性

秒杀口诀:要求渐近复杂性,就取最高次项

这里我们来举个例子:

已知算法的运行时间为T(n)=2n^3+5n^2+n+9,利用高等数学的知识我们得知当n趋于0时,低次幂除以高次幂取极限为0,如果我们想要整体极限为0,则T*(n)中必须有T(n)中的最高次项,这里我们不用考虑系数,则T*(n)=n^3

1.2渐近记号

  • 渐近上界记号(O):若存在两个正数c和n0,使得n>=n0,都有0<=T(n)<=cf(n),则称T(n)=O(f(n)),即f(n)是T(n)的上界

这里f(n)一般取T(n)的最高阶,这里最简单的一个办法就是把T(n)中所有阶都升高到最高阶,此时每一项的系数之和=c,f(n)=最高阶,取n0=1时即使得T(n)=cf(n)

eg:2n^2+4n<=2n^2+4n^2=6n^2

即T(n)=O(n^2)

  • 渐近下界记号(Ω):若存在两个正数c和n0,使得n>=n0,都有T(n)>=cf(n)>=0,则称T(n)=Ω(f(n)),即f(n)是T(n)的下界

这里有一个小tips就是去掉其他多余项,只保留最高项,此时最高项的系数=c,f(n)=最高阶,取一个满足条件的n,令n0=n

eg:T(n)=7n^3+5n^2+8n>=7n^3,此时我取n=1,满足条件,则我可以直接令n0=n=1

即T(n)=Ω(n^3)

  • 渐近精确界记号(⊝):通俗来讲就是同时满足既是T(n)的渐近上界又是T(n)的渐近下届的函数

秒杀口诀:要求渐近精确界,就取最高次项

注意:上述的方法都是如何求得一些界的简单方法,只要是符合概念的都可以是T(n)的界,在判断的时候要特别注意

2.空间复杂性S(n)

空间复杂性指的是算法在运行过程中临时占用的存储空间大小。(可以理解为算法需要多少额外的“内存”才能完成任务。)

比如计算时需要用到的变量、数组、数据结构等占用的空间

常见情况

  • O(1): 算法只需要固定大小的空间,与输入数据规模无关。比如交换两个变量的值。
  • O(n): 算法需要的空间与输入数据规模成正比。比如需要存储一个长度为n的数组。
  • O(n²): 算法需要的空间与输入数据规模的平方成正比。比如需要存储一个n×n的矩阵。

三、NP完全性理论

1.基本概念

  • P类问题:可以在多项式时间内求解的判定问题
  • NP类问题:非多项式时间内可解的判定问题。即目前没有多项式时间解决的算法,但是如果给出一个候选答案,可以在多项式时间里验证这个答案是不是正确。
  • NPC(NP完全问题):满足两个性质:
  1. 可以在多项式时间验证候选答案(是NP问题)
  2. 任何一个NP问题可在多项式时间内规约到该问题
  • NP—Hard:任何一个NP问题可在多项式时间内规约到该问题,但无法证明问题本身是NP问题。NP—Hard至少和NP问题一样难。

大家如果觉得上面的过于复杂则记住下面这张图即可

2.一些典型的NP完全问题

  • 布尔表达式的可满足问题
  • 合取范式的可满足问题
  • 三元合取范式的可满足问题
  • 哈密顿回路问题
  • 旅行售货商问题
  • 问题
  • 顶点覆盖问题
  • 子集和问题

总结

本文系统介绍了算法的基本概念、时间与空间复杂性分析方法,以及NP完全性理论的核心内容,为算法学习提供了基础框架。下一期将详解分治算法的设计思想与经典案例。

http://www.xdnf.cn/news/18817.html

相关文章:

  • 游戏空间划分技术
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(20):文法+单词第7回2
  • 广告推荐模型1:逻辑回归(Logistic Regression,LR)
  • 如何拯救一家濒临破产的科技公司?
  • 技术总结:AArch64架构下Jenkins Agent(RPM容器编译节点)掉线问题分析与排查
  • KubeBlocks for Oracle 容器化之路
  • 【RAGFlow代码详解-30】构建系统和 CI/CD
  • 微服务-28.配置管理-共享配置
  • poi生成word固定表格列宽
  • TensorFlow 面试题及详细答案 120道(61-70)-- 高级特性与工具
  • css3背景线性渐变:linear-gradient
  • 【密集目标检测】停车场车辆(车位)识别数据集:12k+图像,yolo标注
  • 04 网络信息内容安全--入侵检测技术
  • 依托边缘计算方案,移动云全面化解算力、效率、安全平衡难题
  • from中烟科技翼支付 面试题2
  • 高频面试题:说一下线程池吧?(线程池原理,核心参数,创建方式,应用场景都要说到才能让面试官心服口服)
  • Pytorch深度学习(小土堆)
  • Java 企业应用单点登录(SSO)实现方案详解
  • 如何对springboot mapper 编写单元测试
  • Ansible 文件管理与 Jinja2 模板全解析:从模块应用到动态配置生成
  • 由倍讯科技研制的CCLinkIE转ModbusTCP网关,可达成与脉冲计数器的连接
  • JVM分层编译深度解析:完整机制与实践指南
  • 《零基础入门AI:长短期记忆网络(LSTM)与门控循环单元(GRU)(原理、结构与实现)》
  • 【大前端】实现一个前端埋点SDK,并封装成NPM包
  • 【机械故障】旋转机械故障引起的振动信号调制效应概述
  • 在线教育系统源码助力教培转型:知识付费平台开发的商业实践
  • 达索 Enovia 许可管理技术白皮书:机制解析与智能优化实践
  • 面试 总结(1)
  • 项目集升级:顶部导览优化、字段自定义、路线图双模式、阶段图掌控、甘特图升级、工作量优化、仪表盘权限清晰
  • 31.Encoder-Decoder(Seq2Seq)