定任一字符的编码都不是另一个字符编码的前缀,则称这样的编码为前缀码
11.哈夫曼编码:哈夫曼提出的贪心算法可以构造最优前缀编码,这样产生的编码称为哈夫曼编码。
12.最优子结构:如果问题的最优解包含子问题的最优解,则问题展示了最优子结构。
13.贪心选择的性质:通过局部最优选择(贪心),可以得到问题的全局最优解。
14.在矩阵链乘问题中,能对矩阵进行分割的叫非平凡矩阵链乘。
15.在矩阵链乘问题中,不能对矩阵进行分割的叫平凡矩阵链乘。
16.动态规划算法的运行时间取决于两个因素的乘积:
17.特点:此方法的主要特点是通过采用表格技术。计算所有子问题的解。计算的过程从小问题到大问题,并将计算结果存储在一张表中。
18.优点:一旦一个子问题被解决,就存储其结果,此后遇到同样的子问题,就不再重复计算。用多项式算法代替指数算法。
19.应用:动态规划典型的应用领域是组合优化问题。
动态规划应用于组合优化问题时,问题自身应有的两个特点。这就是问题具有最优子结构和重叠子问题
在O-1背包问题中,共有θ(n)个子问题,每个子问题至多需要做出w次决策,即需要检查w次才能确定子问题的最优解,因此,运行时间为O(nw)。
对于矩阵链乘问题,共有θ(n2)个子问题,每个子问题至多需要做出n-1次决策,因此运行时间为O(n3)。
冒泡排序(bubble sort)属于基于交换思想的排序方法。它将相邻的两个元素加以比较,若左边元素值大于右边元素值,则将这两个元素交换;若左边元素值小于等于右边元素值,则这两个元素位置不变。右边元素继续和下一个元素进行比较,重复这个过程,直到比较到最后一个元素为止。
最优子结构随问题域的变化有两种方式:
(1)原问题的最优解中,利用了多少个子问题?
(2)决定最优解中使用哪些子问题需做多少次决策?
在0-1背包问题中,子问题为i个物品在背包容量为w时的最优解,它一定包括前i-1个物品的最优解。最优解利用两个子问题,即c[i-1,w]和c[i-1,w-wi]。每个子问题需要做W(1≤w≤W)次决策,以便决定一个最优解。
在矩阵链乘子问题AiAi+1……Aj中,需做j-i次决策(1≤k<j),并且最优解利用两个子问题,即M [I,k]和M [k+1,j]
在装配线调度子问题作2次决策,最优解利用了两个子问题,即F [1,k]和F [2,k-1]或F [2,k]和F [1,k-1]
递归过程的优点:结构清晰,程序易读,正确性容易证明 。
缺点:运行的效率比较低 、花时间。