算法设计与分析——第一章算法概论

本文介绍了算法的基础概念,包括算法的定义、特性以及在计算机科学中的地位。算法分析包括正确性证明、复杂性分析(时间复杂性和空间复杂性),以及算法设计模式如分治法、图搜索等。讨论了计算问题的输入输出关系,并阐述了算法在解决计算问题过程中的角色。

1.1 算法

(1)计算

定义

可由一个给定计算模型机械地执行的规则计算步骤序列称为该计算模型的一个计算

  • 一个计算机程序是一个计算
  • 计算可能永远不会停止
  • 不是算法

(2)算法

定义

  1. 算法是满足下列条件的计算:
  • 有穷性/终止性:有限步内必须停止
  • 确定性:每一步都是严格定义和确定的动作
  • 可行性:每一个动作都能够被精确地机械执行
  • 输入:有一个满足给定约束条件的输入
    • 函数可以没有输入
    • 算法必须有输入
  • 输出:满足给定约束条件地结果
  1. 算法的目的是求解问题
  2. 一个算法面向一个问题,而不是仅求解一个问题的一个或几个实例

算法的描述

  1. 伪代码

  2. 实例

    Input: A[1, ..., n] = n个数
    Output: A[1, ..., n] = n个sorted数
    FOR j=2 To n Do
        key <- A[j];
        i <- j-1
        WHILE i>0 AND A[i]>key Do
        	A[i+1] <- A[i];
        	i <- i-1;
        A[i+1] <- key;
    

(3)问题

定义

设Input和Output是两个集合。一个问题是一个关系R ⊆\subseteq Input × Output

  • Input称为问题R的输入集合
    Input={ <a1,....,an>∣ai是整数} Input = \{ <a_1,....,a_n> | a_i是整数 \} Input={ <a1,....,an>ai}

    • Input的每个元素称为R的一个输入
  • Output称为问题R的输出或结果集合
    Output={ <b1,....,bn>∣bi是整数,且bi≤...≤bn} Output = \{ <b_1,....,b_n> | b_i是整数,且b_i \le...\le b_n\} Output={ <b1,....,bn>b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值