[TAOCP 1.1-9]对算法2实现算法1的定义的理解 题目要求定义算法C2C2实现算法C1C1,看答案之前,没有任何概念,完全不清楚如何定义。看了答案,发现并不是很难理解,倒是作者举的例子将简单的事情说得复杂,不看也罢。 说算法C2C2实现算法C1C1,意味着:两个算法的输入、输出一一对应,C1C1中的一步状态迁移可以用C2C2中...
字符串permute算法的一种实现 permute算法是求序列的全排列,对于字符串来说,就是将组成该字符串的所有字符按各种方式排列一下。可以通过递归实现该算法。 递归的基准情形是:当字符串的长度小于等于1时,其全排列就是字符串自身,直接输出。 如果字符串长度大于1,则遍历字符串中的每个字符,以该字符作为目的串的起始字...
[TAOCP 1.1]对算法的形式化定义的理解 算法的基本功能是将输入转化为输出。通常,这种转化不是一步就可以完成的,那样太简单,体现不出算法的价值。一个算法要分为诸多步骤来实现,这些步骤将输入转化为中间状态,并不断推进中间状态,使其达到最终状态,即输出。了解这些中间状态是理解形式化定义的关键。 算法定义为四元...
假设x = 3, y = 2。则蓝色部分为lny,高度除以x,宽度乘以x之后,就是黄色部分,这两部分的面积是相等的。 为什么相等?按照积分原理,可以直接把图中的类矩形当作矩形看待。 而黄色部分的面积恰好是lnxy - lnx,所以lnxy = lnx + lny。
在算法的形式化定义中,Q可能是无限集合,f可能是很复杂的操作,不满足本章提到的效率要求。因此作者提出了更具效率的形式化定义。其基本思想是将一个状态映射为一个字符串,如何映射应该是难点,但作者没有在这里详细描述。状态映射为字符串之后,f变为字符串操作,具有效率,但我觉得Q仍可能是无限集合。
cn=docn=dodn=rdn=ran=a′o−qaoan=ao′−qaobn=b′o−qbobn=bo′−qboa′n=aoan′=aob′n=bobn′=bo将替换关系代入(1)左侧,有:$a 阅读全文 C2C2C1C1C2C2C1C1,意味着:两个算法的输入、输出一一对应,C1C1中的一步状态迁移可以用C2C2中的多步迁移实现。这个关系直观上理解起来比较简单,但...