算法的特性及分类

1.3 算法

问题 - 算法 - 程序

目标:问题求解

  • 问题(problem)一个函数
    • 从输入到输出的一种映射
  • 算法(algorithm)一种方法
    • 对特点问题求解过程的描述,是指令的有限序列
  • 程序(program)
    • 是算法在计算机程序设计语言中的实现

算法的特性

  • 通用性
    • 对参数化输入进行问题求解
    • 保证计算结果的正确性
  • 有效性
    • 算法是有限条指令组成的指令序列 (有意义)
    • 即由一系列具体步骤组成
  • 确定性
    • 算法描述中的下一步应执行的步骤必须明确
  • 有穷性
    • 算法的执行必须在有限步内结束
    • 换句话说,算法不能含有死循环

皇后问题(四皇后)

  • 解<x1,x2,x3,x4>(放置列号)
  • 搜索空间:4叉树(排列树)

回溯算法

基本算法分类

  • 穷举法
    • 顺序找K值
  • 回溯(能进则进,不能进就换,不能换则退)、搜索
    • 八皇后、树和图遍历
  • 递归分治
    • 二分找K值、快速排序、归并排序
  • 贪心法(每次求最佳)
    • Huffman编码树、最短路Dijkstra算法,最小生成树Prim算法
  • 动态规划
    • 最短路Floyd算法

思考:算法的时空限制

设计一个算法,将数组A(0..n-1)中的元素循环右移K位,假设原数组序列为a0,a1,...,an-2,an-1;移动后的序列为an-k,an-k+1,...,a0,a1,...,an-k-1。要求只用一个元素大小的附加存储,元素移动或交换次数与n线性相关。例如,n=10,k=3

原始数组:0 1 2 3 4 5 6 7 8 9

右移后的:7 8 9 0 1 2 3 4 5 6

posted @ 2022-03-11 19:20  寻月隐君  阅读(194)  评论(0编辑  收藏  举报