算法设计与分析(电子科技大学)(上)算法基础和贪心算法

本文介绍了算法设计与分析,重点关注贪心算法。文章阐述了算法与程序的区别,强调了判断问题和优化问题在计算中的角色。接着,讨论了算法的评价标准,如区分指数时间和多项式时间。重点讲解了贪心算法,通过活动安排问题(Interval Scheduling)举例,解释了贪心算法的思想,并提供了其他贪心问题的应用,如硬币兑换和背包问题。此外,文章还探讨了贪心算法与动态规划、DFS/BFS的关系。
摘要由CSDN通过智能技术生成

算法分析与设计

引论

(1)理解算法和程序的差别
(2)理解判断问题和优化问题这两类计算问题
1、理解指数增长的规模
2、理解渐进表达式
掌握渐进符号Ο、Θ、Ω的含义,能判断一个函数属于哪个渐近增长阶;
3、理解贪心算法的思想
掌握工作安排问题(Interval scheduling)的贪心算法;能对简单贪心算法进行证明;
4、理解分治算法的思想
掌握Master method(主方法)来求解递归关系式
5、理解动态规划算法的思想
对动态规划类型的问题能建立起基本的递归关系式,并能用从底至上的方法求解,在求解过程知道建立数据储存的表格、
理解背包问题动态规划算法的运行时间是伪多项式时间。
6、网络流
(1)了解并掌握网络最大流问题和最小割问题及算法,给出一个图能求出其对应的最大流或者最小割。
解题说明:要求体现增广链添加的过程。
7、归约与复杂度的NP问题
理解NP完备性理论
(1)理解什么是多项式归约(polynomial-time reduction)
(2)知道怎样从一个问题多项式归约到另一个问题,需要熟悉的归约包括:从点覆盖问题到独立集问题,从3-SAT问题到独立集问题等基本归约。
(3)要求掌握同一个问题的最优问题如何多项时间归约到该问题的判断问题(自身归约);
(4)熟悉NP和NPC的概念
(5)记住证明一个问题属于NPC的基本步骤
(6)能证明一个问题是NP-hard
8、近似算法
(1)理解什么是近似算法;
(2)熟悉load balancing 问题的近似算法;
(3)理解点覆盖问题的定价算法(Pricing method),证明该方法能得到一个2倍近似解;
(4)理解点覆盖问题的整数规划模型如何建立,理解松弛求解方法;
(5)要求会对一个图问题建立整数规划模型(以点覆盖问题为例)

引论

0.1 两个关键问题
(1)理解算法和程序的差别

算法,定义在一定资源(空间、运行时间等)限制下,解决问题的方法。
使用计算机解决问题的过程/方法;算法是有输入和输出的;一个问题可以有许多算法来解。
在这里插入图片描述
程序:计算机程序是某种编程语言中算法的实例或具体表示。
在这里插入图片描述
区别:1)程序是由电脑读取;
2)算法是由人类来设计
3)算法表示形式更多样,可以是伪码或者简单易懂的步骤表示。

(2)理解判断问题和优化问题这两类计算问题

在这里插入图片描述
简单说,判别问题就是0-1问题,优化问题是优化解的解法。

0.2 核心思想,研究算法就是对算法进行分类,逐一击破,常见的分类方式如下:

在这里插入图片描述

1)P:一个解可以在多项式时间内求解。

2)NP:一个解可以在多项式内被检验。
典型问题:
团问题(clique problem): 想象一张点和边组成的图,例如Facebook上用户为点,朋友关系为点之间的连边所组成的图。团(clique)是指节点全连接的子图。 人们也许会问:存在包含20个人的团吗?50个呢?100个呢ÿ

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值