算法1:绪论

一、什么是算法?

算法是为解决某一问题的一系列清晰指令,也就是说,能够对符合一定规范的输入,在有限时间内获得所要求的输出。

二、算法的性质:

算法是解决问题的方法或过程(指令序列),满足以下五个性质的指令序列

1)输入:有0个以上的输入

2)输出:至少有1个输出

3)确定性:指令清晰、无歧义

4)有限性:指令执行次数有限,时间有限

5)有效性:指令具有可行性

一个好的算法是反复努力和重新修正的结果,这是一条规律

三、算法问题求解:

1  理解问题
2 了解计算设备的性能
    顺序算法 v.s. 并行算法        机器运行速度、存储容量
3 在精确解法和近似解法间做先择
   精确算法 v.s. 近似算法       问题的固有特点、时间复杂度
4 确定适当的数据结构
   有些算法的确需要基于一些精心设计的数据结构
5 算法设计技术
    算法设计技术(也称为“策略”或者“范例”)是用算法解题的一般性方法,用于解决不同计算领域的多种问题。
6 详细表述算法的方法
     我们一旦设计了一个算法,就需要用一定的方式对其进行详细描述。
伪代码、自然语言、流程图、程序设计语言、N-S图
7 证明算法的正确性
     必须证明对于每一个合法输入,该算法都会在有限的时间内输出一个满足要求的结果。 正确 v.s. 不正确   精确算法 v.s. 近似算法
8 分析算法
   
 时间效率、空间效率、简单性、一般性。时间效率显示了算法运行得有多快;而空间效率则显示了算法需要多额外的存储空间。
9 为算法写代码
     形式化验证 v.s. 测试   代码优化    什么样的算法是最优的?

四、重要问题类型

    1.排序   

   排序算法有两个特性特别值得一提。如果一个排序算法保留了等值元素在输入中的相对顺序,它被称为是稳定的。第二个特性是算法需要的额外储空间。如果一个算法除了个别存储单元以外,不需要额外存储空间,我们把它称为是在位的

   2. 查找

查找问题涉及到从给定的集合(或者是多重集,它允许几个元素具有相同的值)中找寻一个给定的值,称为查找键  对于查找来说,也没有一种算法对于任何情况都是最适合的。

   3. 串处理

  4.图问题

基本的图算法包括图的遍历算法(如何能一次访问到网络中的所有节点)、最短路线算法(两个城市之间的最佳路线是哪条?)以及有向图的拓扑排序(一系列过程的前提条件是相互一致的还是自相矛盾的?)

   5.组合问题

旅行商问题图填色问题都是组合问题的特例。

组合问题都是计算领域中最难的问题。这是出于以下原因:第一,通常,随着问题规模的增大,组合对象的数量增长极快,即使是中等大小的实例,其组合的规模也会达不可思议的数量级。第二,还没有一种已知算法能在可接受的时间内,精确地解决绝大多数这类问题。

  6. 几何问题

几何算法处理类似于点、线、多面体这样的几何对象。只讨论两个经典的计算几何问题:最近对问题和凸包问题

   7. 数值问题

数值问题,另一个广阔的具体应用领域,涉及具有连续性的数学对象问题:像解方程和方程组、计算定积分以及求函数的值等等。

五、基本数据结构:

1.线性数据结构: 线性列表-栈和队列

2.图

3.树

4.集合与字典:

就是从集合中查找一个给定元素、增加新元素和删除一个元素。一个能够实现这三种操作的数据结构称为字典


        


猜你喜欢

转载自blog.csdn.net/shuishanshu30/article/details/80861230