算法设计与分析【期中+期末复习知识点总结】(持续更新)

news2024/11/19 0:37:37

第1章:算法概述

算法:具有输入、输出、确定性、有限性。

程序(算法+数据结构=程序):具有输入、输出、确定性(注意:程序可以不满足有限性,如操作系统是在无限循环中执行的程序)。

衡量算法好坏的方法:正确性(有限时间正确结果)、简明性、效率(时间、空间)、最优性

渐进意义下的符号:

O:表示算法的渐近上界,如果算法的时间复杂度为O(g(n)),使得对于任何输入规模n,算法的运行时间都不会超过c * g(n),即算法的时间复杂度不会超过g(n)的某个常数倍,此谓上界。

Ω:表示算法的渐近下界,如果算法的时间复杂度为Ω(g(n)),使得对于任何输入规模n,算法的运行时间都不会低于c * g(n),即算法的时间复杂度不会低于g(n)的某个常数倍,此谓下界。

Θ:表示算法的渐近紧确界,如果算法的时间复杂度为Θ(g(n)),使得对于任何输入规模n,算法的运行时间都被夹在c1 * g(n)和c2 * g(n)之间,即算法的时间复杂度大约是g(n)的某个常数倍,此谓同阶。

第2章:递归与分治

分治法:将规模为n的问题分解为k个规模较小的子问题,子问题间互相独立且与原问题相同。通过递归求解子问题,最后将解合并,可实现对原问题的求解。

个人总结:分治法的核心思想是:分解和递归。即将大问题分解为子问题,因为子问题性质与原问题相同,因此可以使用相同的递归式进行求解。

注意子问题间的求解必须是独立的,否则会做很多不必要的重复工作,如果子问题间不完全独立的话选择动态规划会比较好。)

分治法求解过程:分解 -> 递归求解 -> 合并。

分治算法典型问题:二分搜索、合并排序、快速排序、大数乘法、矩阵乘法、棋盘覆盖、最近点对问题、线性时间选择、循环赛日程。

排序算法时复杂度比较
排序方法最好时间平均时间最坏时间辅助空间
插入排序O(n)O(n^{2})O(n^{2})O(1)
堆排序O(nlogn)O(nlogn)O(nlogn)O(1)
冒泡排序O(n)O(n^{2})O(n^{2})O(1)
快速排序O(logn)O(nlogn)O(n^{2})O(logn)
归并排序O(nlogn)O(nlogn)O(nlogn)O(n)

分治答题策略:

第1步:简单描述所设计的算法,要重点说明是如何将问题划分为子问题(分解策略)

第2步:说明如何进行递归,给出递归方程

第3步:合并过程如果有的话就一句话带过即可

第4步:注意要在最后写上时间复杂度和空间复杂度。

第3章:动态规划

动态规划:将规模为n的问题分解为k个规模较小的子问题,子问题间彼此关联且与原问题相同。通过将子问题的解记录下来,以避免重复计算。动态规划常用于解决具有重叠子问题最优子结构特性的问题,通常使用表格法或记忆化搜索来实现,最终得到原问题的最优解。

重叠子问题:在递归执行的过程中,同一个子问题会被多次遇到和解决,通过存储已解决子问题的答案,动态规划可以避免对相同子问题的重复计算。

最优子结构:一个问题的最优解包含其子问题的最优解。

个人总结:动态规划与贪心不同的一点在于:动态规划的子问题间不是完全独立的,换句话说子问题间具有关联或者说是依赖的关系,因此可以用表来记录已解决的子问题答案,后续操作用到时只需要查表即可,不用再重新计算,可以节约开销)

动态规划算法典型问题:最长公共子序列、最大子段和问题、凸多边形最优剖分、多边形游戏、图象压缩、电路布线、流水作业调度、0-1背包问题。

动态规划答题策略:

第1步:简单描述所设计的算法,要重点分析最优解结构(满足最优子结构),简单说明满足重叠子问题性质。

第2步:建立递归关系,给出递归方程。

第3步:计算最优值,即简单描述求解过程,给出时间复杂度,最好给出空间复杂度(表的复杂度)。

第4步:构造最优解

第4章:贪心算法

贪心选择性质:所求问题的整体最优解可以通过一系列局部最优的选择来达到。

证明满足贪心选择性质:证明每一步所做出的贪心选择最终将获得问题的整体最优解。(首先考察问题的一个整体最优解,并证明可修改这个最优解,使其以贪心选择开始。在做出贪心选择后,原问题简化为规模更小的类似子问题。用数学归纳法证明,通过每一步做贪心选择,最终可得到问题的全局最优解。)

最优子结构性质:一个问题的最优解包含其子问题的最优解。

贪心算法典型问题:装船问题、哈夫曼编码问题、单源最短路径问题、最小生成树问题、多机调度问题。

贪心答题策略:

第1步:先描述所设计的算法。

第2步:证明算法的正确性,包括贪心选择性质和最优子结构性质。

第3步:给出时间复杂度。

(如有谬误望请指正,持续更新中)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1226146.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

es的优势

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…

教程:使用 Keras 优化神经网络

一、介绍 在 我 之前的文章中,我讨论了使用 TensorFlow 实现神经网络。继续有关神经网络库的系列文章,我决定重点介绍 Keras——据说是迄今为止最好的深度学习库。 我 从事深度学习已经有一段时间了,据我所知,处理…

橱柜的装修干货|板材、五金、高度、配色4个方面。福州中宅装饰,福州装修

引言 橱柜的装修干货。 橱柜是厨房的核心,一个好的橱柜能让厨房变得实用又美观。以下是关于橱柜装修的几个问题解答。 1. 橱柜的柜门常用的板材有哪些? 橱柜的柜门常用的板材有实木板、防火板、烤漆板、包复框、PVC板、膜压板等。不同板材有不同的特点…

庖丁解牛:NIO核心概念与机制详解 01

文章目录 Pre输入/输出Why NIO流与块的比较通道和缓冲区概述什么是缓冲区?缓冲区类型什么是通道?通道类型 NIO 中的读和写概述Demo : 从文件中读取1. 从FileInputStream中获取Channel2. 创建ByteBuffer缓冲区3. 将数据从Channle读取到Buffer中 Demo : 写…

五、hdfs常见权限问题

1、常见问题 2、案例 (1)问题 (2)hdfs的超级管理员 (3)原因 没有使用Hadoop用户对hdfs文件系统进行操作。 在Hadoop文件系统中,Hadoop用户相当于Linux系统中的root用户,是最高级别用…

win10电脑无法联网,设置IPv4,点击属性无法打开,闪退

win10设置IPv4,点击属性无法打开,闪退 问题:win10设置IPv4,点击属性无法打开,闪退 问题:win10设置IPv4,点击属性无法打开,闪退 第1步:用管理员打开cmd命令窗口,然后输入下面的命令&…

JVM的运行时数据区

Java虚拟机(JVM)的运行时数据区是程序在运行过程中使用的内存区域,主要包括以下几个部分: 程序计数器虚拟机栈本地方法栈堆方法区运行时常量池直接内存 不同的虚拟机实现可能会略有差异。这些区域协同工作,支持Java…

BUUCTF snake 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 下载附件,解压得到一张snake的图片。 密文: 这里有一张蛇的图片,本人害怕不敢放,想看自己下载附件解压。(吐槽一下,我做这道题,全…

每天一点python——day71

#每天一点Python——71 #格式化字符串在Python中,你可以使用格式化字符串来动态地插入变量的值、表达式的结果等到字符串中。 如图:xxx部分需要不断变化,再和原文拼接 如上图所示这是一个类似于字符串拼接的操作。 因为字符串拼接操作会产生很…

【算法挨揍日记】day26——53. 最大子数组和、918. 环形子数组的最大和

53. 最大子数组和 53. 最大子数组和 题目描述: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 解题思路: 状态…

公司会倒闭,但大模型肯定不会

咋玩抖音的我,前几天在抖音上发了一张图片,没想到竟然有1000多的播放量。 当然这个播放量不算高,甚至在抖音的体系里属于很低的,但是比我预料的可能只有个位数的播放量是高了不少。 这张图片是我用某国产 AI 软件生成的&#xff…

R语言和RStudio的下载安装(非常简便舒适)

目录 R语言和RStudio的关系R语言和Tableau下载R语言进入官网选择清华镜像源Download R for Windows选择base版本开始下载进行安装配置环境变量检查是否安装成功 下载RStudio进入官网点击下载进行安装检查是否安装成功打开选择R语言环境成功打开显示四个工作区 R语言和RStudio的…

CDN是什么,能起到什么作用

随着互联网的快速发展,用户对于快速、稳定、高效的互联网体验的需求日益增长。为了满足这一需求,内容分发网络(CDN)应运而生,并在近年来得到了广泛应用。CDN通过在全球范围内部署大量的服务器和网络节点,实…

2023 鹏程杯

前言 笔者没有参加此次比赛,由于团队后面会复现此次比赛,所以笔者在此进行复现记录。 silent 考点: 栈溢出 ret2csu 栈迁移 保护: 开了 Full RELRO 和 NX, 禁掉了 execve/execveat 系统调用 漏洞分析 一个裸的栈溢出, 但是没有输出函数可以泄漏 …

MySQL进阶_8.数据库其他调优策略

文章目录 第一节、数据库调优的步骤1.1、选择合适的DBMS1.2、优化表设计1.3、优化逻辑查询1.4、优化物理查询1.5、使用 Redis 或 Memcached 作为缓存1.6、库级优化 第二节、优化MySQL服务器第三节、优化数据库结构 第一节、数据库调优的步骤 1.1、选择合适的DBMS 如果对事务性…

C++基础从0到1入门编程(三)

系统学习C 方便自己日后复习,错误的地方希望积极指正 往期文章: C基础从0到1入门编程(一) C基础从0到1入门编程(二) 参考视频: 1.黑马程序员匠心之作|C教程从0到1入门编程,学习编程不再难 2.系统…

腾讯云服务器带宽计费模式_按流量和带宽收费说明

腾讯云服务器带宽计费模式分为“按带宽计费”和“按使用流量”两种计费模式:按带宽计费是预付费,一次性购买固定带宽值,先付费;按使用流量计费是先使用后付费,根据云服务器公网出方向实际产生流量来计算。如何选择带宽…

腾讯云CVM服务器标准型/高IO/计算/大数据使用场景及选择说明

腾讯云CVM服务器多种机型使用场景说明,如标准型、内存型、高 IO 型、计算型、大数据型、异构型和批量型,腾讯云百科txybk.com分享不同CVM实例规格配置适合使用场景说明: 腾讯云CVM云服务器 标准型:适合中小型 Web 应用、中小型数据…

腾讯云服务器价格计算器真心好用,推荐给大家!

腾讯云服务器价格计算器可以一键计算出云服务器的精准报价,包括CVM实例规格价格、CPU内存费用、公网带宽收费、存储系统盘和数据盘详细费用,腾讯云百科txybk.com分享腾讯云价格计算器链接入口、使用方法说明: 腾讯云服务器价格计算器 打开腾…

大模型是怎么知道 “我赚了200万” 的?

今天在和 chatGPT 聊天时,我说“我赚了200万”,他立刻就根据这句话给我了一句。 我当然没有赚到200万,只是想引出一个话题:“大模型是如何识别出这句话,又是怎么知道该回答什么的呢?" 在学习自然语言…