《计算机程序设计艺术 卷1:基本算法》 读书笔记 (一)

第一章

1.1 算法

算法的5个重要特征

  • 有限性:算法必须在执行有限步之后终止(如果一个过程具备算法除有限性之外的所有特征,那么可称"计算方法")
  • 确定性:算法的每一步都必须精确定义
  • 输入:一个算法有0个或多个输入
  • 输出:一个算法有1个或多个输出
  • 可行性(有效性):所有操作必须足够基本,原则上人们可以用纸和笔在有限时间内准确地执行

计算方法定义为以下四元组\((Q,I,Ω,f)\)
\(I\):对于\(I\)中每个输入\(x\)定义一个计算序列 \(x_{0},x_{1},x_{2},...\)

\(\left\{\begin{matrix} x_{0} = x\\ x_{k + 1} = f(x_{k}), k \geqslant 0 \end{matrix}\right.\)

其中\(k\)是使\(x_{k}\)\(Ω\)中的最小整数,也就是计算序列在\(k\)步内终止,此时就说从\(x\)产生输出\(x_{k}\)
\(Ω\):表示输出
\(Q\):包含子集\(I\)\(Ω\)的集合,表示计算状态
\(f\):从\(Q\)到自身的函数,对于\(Ω\)中的每个元素\(q\),有\(f(q) = q\),表示计算规则

简单解释一下,就是\(I\)中的元素(输入)肯定会在\(k\)步以内变成\(Ω\)中的元素(输出)
\(k\)就是输入转成输出的最小步数
计算规则\(f\)\(Q\)到自身的函数,是因为\(Q\)包含了\(I\)\(Ω\),实际上是
\(I \rightarrow I\), \(I \rightarrow Ω\)\(Ω \rightarrow Ω\)

习题

  1. \(t \leftarrow a\)
    \(a \leftarrow b\)
    \(b \leftarrow c\)
    \(c \leftarrow d\)
    \(d \leftarrow t\)
  2. \(m_{0} < n_{0}\)时,有以下计算过程
    \(f((m_{0}, n_{0})) = (m_{0}, n_{0}, 0, 1)\)
    \(f((m_{0}, n_{0}, 0, 1)) = (m_{0}, n_{0}, m_{0}, 2)\) 第一次执行E1
    \(f((m_{0}, n_{0}, m_{0}, 2)) = (m_{0}, n_{0}, m_{0}, 3)\)
    \(f((m_{0}, n_{0}, m_{0}, 3)) = (n_{0}, m_{0}, m_{0}, 1)\)
    \(f((n_{0}, m_{0}, m_{0}, 1)) = (n_{0}, m_{0}, r, 2)\) 第二次执行E1,\(m\)(此时为\(n_{0}\))必大于\(n\)(此时为$m_{0})
  3. 未解
  4. 57
    习题待完成...
posted @ 2020-12-02 22:53  Noobility  阅读(249)  评论(0)    收藏  举报