算法设计与分析——算法基础初步了解
算法的概念
算法的特点:确定性、可行性、输入和输出及有穷性。
正确的算法;停机并给出符合问题的定义的输出。
研究算法的基本意义
算法涉及到解决问题的:正确性、可行性以及效率。
以效率为例:对1M数据进行排序
算法与其他技术的关系
硬件设计——布线算法
图形界面——图形生成、处理等
面向对象——编译器设计
局域网和广域网——冲突避免、路由、交换
算法无处不在。
算法设计方法简介
增量式
逐步求解的过程,如插入排序
思考题:
给定一个整数数组A,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入:[-2,1,-3,4,-1,2,1,-5,4]
分治策略:一归并排序为例
归并过程示意图:
伪码:
1: n1←q − p + 1
2: n2←r − q
3: create arrays L[1 · · · n1 + 1] and R[1 · · · n2 + 1]
4: for i←1 to n1 do
5: L[i]←A[p + i − 1]
6: end for
7: for j←1 to n2 do
8: R[j]←A[q + j]
9: end for
10: L[n1 + 1]←∞
11: R[n2 + 1]←∞
12: i←1
13: j←1
14: for k←p to r do
15: if L[i] ≤ R[j] then
16: A[k]←L[i]
17: i←i + 1
18: else
19: A[k]←R[j]
20: j←j + 1
21: end if
22: end for
23: if p < r then
24: q←b p+r 2 c
25: MERGE-SORT(A, p, q)
26: MERGE-SORT(A, q + 1, r)
27: MERGE(A, p, q, r)
28: end if
动态规划:
一种强有力的技术;
从小的子问题的解逐步计算出大问题的解;
计算过程通过动态填表实现;
贪心策略:
最常用的启发策略;
但常常"贪心"不能保证得到好的结果
有些问题满足一些特定性质,可以保证"贪心"一定可以产生最好的结果。
搜索
几乎是通用的办法;
不过开销巨大
循环不变性法
算法正确性分析循环是关键、
以插入排序正确性分析:
L emma 1
在每次循环开始时(第j步) ,A[1,j- 1]是有序的。
Proof.
初始时: A[1,j- 1]中只有一个数,显然成立。
保持性:在循环迭代开始前成立,迭代中,while循环找到正确位
置插入A[j]。所以,这步迭代后命题仍成立。
终止时:将循环退出时的j值带人引理,得到插入排序的正确性。
分析算法,归纳出循环不变性(循环迭代过程,始终成立的命
题)。
Initialization:在第一次循环开始前不变性是满足的。
Maintenance:如果在某次迭代前不变性满足,在这次迭代后也
满足不变性。
Termination:循环结束后,不变性可以提供程序正确性的有用信
息。
例2,归并过程的正确性
Lemma 2
在MERGE中,第14步循环每次开始时,有Ap, k―1]是有序的;
Alp, k一1]是最小的k 一 p个元素;
L[i]是L中待合并的元素中最小的;
R[j]是R中待合并的元素中最小的。
Initialization: k = p,i= 1,j = 1,显然成立。o Maintenance:若L[团]≤R[i],则
L[i]是所有剩下的元素中最小的;
而A[p….k-1]中的元素均大于等于L[i],因此。A[p…k]是所有元素中最小的k 一p+1个元素;
由于L中的数是排好序的,因此L[+1]将是L中剩下元素中最小的;
R[i]仍然是R中最小的。
若L[团]>R[i],可以进行类似讨论。
Termination:循环结束后,k=r+1,代入不变性1,得A[p…r]有序。
算法设计与分析——算法基础初步了解相关推荐
- 算法设计与分析——算法学基础(三):渐进记号
分类目录:<算法设计与分析>总目录 相关文章: 算法学基础(一):算法学概述 算法学基础(二):分析算法 算法学基础(三):渐进记号 第<算法学基础(二):分析算法>中定义了算 ...
- 算法设计与分析——算法思想总结
算法设计与分析 1.分治法 分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同.递归的解这些子问题,然后将各子问题的解合并得到原问题的解. 分治法所能解 ...
- 计算机算法设计与分析——算法引论
1.1 算法与程序 计算机算法 通俗定义:用计算机求解问题的方法或过程. 正式定义:算法是满足下述性质的 指令序列: 输入:有零个或多个外部量作为算法的输入 输出:至少产生一个量作为输出 确定性:组成 ...
- 哈工大威海算法设计与分析_计算机算法设计与分析第一章 算法概述
晓强Deep Learning的读书分享会,先从这里开始,从大学开始.大家好,我是晓强,计算机科学与技术专业研究生在读.我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向 ...
- 杭电研究生-算法设计与分析-期末宝典
视频推荐 MOOC青岛大学的算法设计与分析 代码实现(Java) 计算机算法设计与分析 算法实现题 源码 Java 重点(翻书找答案-第四版) 往年试卷
- 计算机算法设计与分析读后感,算法设计与分析基础经典读后感有感
<算法设计与分析基础>是一本由Anany levitin著作,清华大学出版社出版的胶版纸图书,本书定价:49.00元,页数:409,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助 ...
- 第一章 算法设计与分析基础知识
系列文章目录 第一章 算法设计与分析基础知识 第二章 算法的分治策略 第三章 算法的动态规划 第四章 算法的贪心法 -- @[TOC](这里写目录标题) # 一级目录 ## 二级目录 ### 三级目录 ...
- 算法设计与分析基础知识
一.算法设计基础 算法是(algorithm)是对特定问题求解步骤的一种描述,是指令的有限序列. 算法的五个特性: 输入:一个算法可以有零个或多个输入. 输出:一个算法有一个输出或多个输出. 有穷性( ...
- 算法设计与分析(电子科技大学)(上)算法基础和贪心算法
算法分析与设计 引论 (1)理解算法和程序的差别 (2)理解判断问题和优化问题这两类计算问题 1.理解指数增长的规模 2.理解渐进表达式 掌握渐进符号Ο.Θ.Ω的含义,能判断一个函数属于哪个渐近增长阶 ...
最新文章
- Latex中设置字体颜色
- 怎么把视频里的音乐提取出来
- 【Python】列表 list 添加元素的几种方法
- 玩转Linux必备知识(二)
- wait和notify的理解与使用
- 初识react(四) react中异步解决方案之 redux-saga
- 哪些事是你当了大学老师之后才知道的?
- law是什么的缩写_Lawyer和Attorney 有什么不同?
- python——Web服务开发(二)分布式缓存
- JS控制文字只显示两行,超出部分显示省略号
- php 当前时间转换,php时间转换
- CCF201403-3 命令行选项(100分)
- 参数利用SpringMVC构建REST接口:第七篇 控制层实现
- 如果Linux从未出现,我们的生活会变成怎样?
- B站韩顺平版Linux学习笔记(很全啊!)
- 优秀的前端开发工程师需要哪些技能?
- Packetfence 开源网络准入系统
- OPPO云VPC网络实践
- 树莓派连接WiFi连不上
- 你了解常见电子原件的识别吗?
热门文章
- 雅思等出国留学成绩要求一知半解?戳这里
- 挖掘视频网站【优酷】上被截断的视频的地址--001
- PaddleOCR .NET 识别图片中文字
- 细数饿了么开源的前端项目及实践
- windows切换窗口,取消edge窗口为多个
- python 爬虫 第一周:学会爬取网页信息
- html表格去除间距,table 去掉 td之间间距
- MySQL忘记root密码解决方案
- 全国计算机二级算国奖吗,如何区分竞赛证书的等级和含金量?(太多人傻傻分不清国奖、省奖、市奖)...
- KCL v0.4.4 发布 - 自定义 YAML Manifests 输出以及 Python SDK