算法 - 课程笔记

news/2024/9/28 23:27:58

调度问题

插入排序

分治法

分治法是将原问题划分为多个规模较小的子问题,这些子问题可以独立求解,将子问题的解进行综合得到原问题的解。算法设计一般使用递归算法,算法分析一般使用递归表达式。

归并排序

归并排序,就是分组再合并,将一个数组等分为左右两个子数组,然后再使用归并排序递归地排序两个子数组,最后将两个子数组的排序结果进行合并。

快速排序算法

先确定一个数组的中间一个元素(枢轴),将数组划分为两个子数组,其中前面的数组元素都小于枢轴元素,后面的数组元素都大于枢轴元素。然后再递归地处理两个子数组。

这里的快排算法,取最后一个元素作为枢轴,i和j之间的元素是大于枢轴的元素,i及其之前的元素是小于枢轴的元素,j及其之后的元素是未处理的元素。。

最坏情况是输入数组完全有序,时间复杂度为O(n2),因为确定一个枢轴需要遍历一遍数组,而又需要确立n个枢轴。最好和平均都是O(nlogn)。

选择问题

贪心算法

依据某种"短视的"贪心选择性质,问题求解表示成多步判断。期望通过局部优化选择达到全局优化选择,但贪心算法是否产生优化解,需要经过正确性证明。

活动选择问题

每次选择剩余时间最多的,通过局部最优解达到全局最优解。则按结束时间非降序排列,从前往后进行选择。

部分背包问题

最小延迟调度问题

动态规划

动态规划法和分治法类似,也是将要求解的问题分解为一级一级、规模逐渐缩小的子问题,直到可以求解其解的子问题为止。所有子问题按层次关系构成一棵子问题树,树根是原问题,原问题的解依赖于子问题树中所有子问题的解。

与分治法不同的是,子问题往往不是独立的,子问题树中的子问题会有大量重复,对于重复的子问题,可以在第一次求解时将答案保存起来,后面遇到直接引用。

动态规划法求解的问题需要有优化子结构性质,即一个问题的优化解包含了子问题的优化解。

加权区间调度问题

最长公共子序列问题

  1. 刻画结构特征

  2. 递归定义最优解的值

  3. 迭代计算最优解的值,并且记录构造最优解所需的信息

  4. 根据记录的信息构造最优解

这里计算最优解的值,是在一个矩阵中从上向下进行计算的,而构造最优解时,是反过来从下向上进行构造的。

标记函数b[I,j]的箭头是表示此处的值是从哪里来的,只有向左上角的箭头才是xi=yj的,并且等于左上角的值+1。

矩阵链乘法问题

首先两个矩阵Aij和矩阵Bjk相乘,最小乘法次数是i*j*k。

S用来标记划分点,便于后面构建最优解

向量P表示的是矩阵的行和列,如下

M矩阵如下,是一个上三角矩阵,对角线元素是0,计算时从左下到右上的每一层依次进行计算。

下面算法中r是矩阵链长度,从2到n,对应上图中左下到右上的每一层;i是行标,j是列标。

01背包问题

K(I,c)表示前i个商品中,背包容量为c时的最优解的值。

即是先考虑前1个商品,然后考虑前2个商品等,动态规划的思想就是利用优化子结构性质和重复子问题性质,这类问题的最优解包含着它们子问题的最优解,因此先从子问题的最优解算起。

特殊的01背包问题

子集合问题中,背包容量是W,价值和是元素和。

划分问题中,可以对整数集合求和,然后除以2得到平均值,拿平均值作为背包容量。所以问题就变成了判断能否从原集合中选择子集合,使子集合的整数和等于背包容量。

节点v从u可达:从节点u到节点v有一条路径

路径是简单的:路径上所有节点都是不同的

子图:V'包含于V,E'包含于E

生成子图:包含所有节点

树:连通无回路的无向图是树

森林:无回路的图是森林

生成树:图的一个生成子图,并且是一个树

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

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

相关文章

学弟去字节面试,一小时被问了 50 题。。

分享一下我问的题目,大家也可以试着答答看。大家好,我是程序员鱼皮。昨天直播面试了一位 25 届的学弟,暂且就叫他 “阿强” 吧。 阿强非常优秀,不仅有半年的实习经历、有自己的项目,而且还参加过大厂(字节)的面试。 面试开场前,我问学弟:你上次面试字节时,感受如何?…

绩效考核中如何做自我评估

绩效考核中,员工的自我评估是一个重要环节。如何能将自己的现状,表现,能力等等用文字表达出来,是很多员工的痛苦。国外很多研究中,给了我们很多启示,今天就让我们来介绍一下海外在员工自我评估中的一些研究成果。自我评估的重要性 自我评估对员工和管理者同样有用。评估通…

为什么chrome有时候无法访问github?——RuTracker插件的代理功能会让浏览器无法访问github

去插件那里把代理关掉就行了(把滑块点成灰色) 也可以开个无痕模式,无痕的黑窗口会忽略一些插件

PbootCMS后台访问地址及默认帐号密码是多少

PBootCMS 的后台默认账号和密码通常会在官方文档或开发手册中给出。如果你在源码包中没有找到相关信息,可以参考以下默认设置: 默认后台访问路径后台访问路径:http(s)://yourdomain.com/admin.php将yourdomain.com替换为你的实际域名。默认账号和密码初始账号:admin 初始密…

pbootcms升级提示 执行SQL发生错误!错误:duplicate column name: picstitle

当你在升级PBootCMS时遇到“执行SQL发生错误!错误:duplicate column name: picstitle”的问题,这通常表示在升级过程中,数据库表结构的变更脚本未能正确执行,导致新的字段名称与现有字段冲突。以下是如何解决这个问题的一些步骤: 解决方案备份数据库:在进行任何数据库操…

pbootcms伪静态设置教程含apache、naginx、IIS不同环境配置规则

其实pbootcms伪静态已经整理好, 在根目录就可以找到 作为使用者, 只需要根据不同的服务器环境, 使用不同格式的数据就行。 naginx #请复制下面伪静态配置到nginx配置文件中: #规则适合PbootCMS V2.0+版本location / {if (!-e $request_filename){rewrite ^/(.*)$ /index.ph…

van-checkbox + dialog

<van-dialogv-model="showParkingLot"title="选择"show-cancel-buttoncancelButtonText="取消"confirmButtonColor="#2e7cf9"@confirm="confirm"><div class="p10"><van-checkbox-groupv-model=&q…