摘要:
《算法图解》读书笔记 本书作者:Aditya Bhargava 目录: 第一章:二分查找;时间复杂度计算 第二章:数组和链表 第三章:递归;栈 第四章:快速排序 第五章:散列表 第六章:广度优先算法 第七章:狄克斯特拉算法 第八章:贪婪算法 第九章:动态规划(背包问题,最长公共子串) 第十章:K最近 阅读全文
摘要:
1. 问题 给定一个源串和目标串,能够对源串进行如下操作: (1)在任意位置上插入一个字符; (2)替换任意字符; (3)删除任意字符。 例如:kitten —> sitting 操作 源串 目标串 替换:k —> s kitten sitten 替换:e —> i sitten sittin 插入 阅读全文
摘要:
1. 问题 图的 m 着色问题。给定无向连通图 G 和 m 种颜色,用这些颜色给图的顶点着色,每个顶点一种颜色。如果要求 G 的每条边的两个顶点着不同颜色。给出所有可能的着色方案;如果不存在,则回答“NO”。 2. 解析 设 G 有 n 个顶点,将顶点编号为1 ,2 ,... ,n ,则搜索空间为深 阅读全文
摘要:
1. 问题 给定字符集C={x1,x2,...,xn}和每个字符的频率f(xi),求关于C的一个最优前缀码。 2. 解析 ①二元前缀码 :任何字符的代码不能作为其他字符代码的前缀 ②利用二元前缀码译码 :从第一个字符开始一次读入每个字符(0 或 1),如果发现读到的子串与某个码字相等,就将这个子串译 阅读全文
摘要:
1. 问题 设A1,A2,A3,…,An为 n 个矩阵的序列,其中Ai为Pi-1*Pi阶矩阵,这个矩阵链的输入用向量P=<P0,P1,…,Pn>给出。给定向量 P,确定一种乘法次序,使得基本运算的总次数达到最小。 2. 解析 蛮力法 枚举所有可能的乘法次序,针对每种次序计算基本运算的次数,从中找出具 阅读全文
摘要:
1. 问题 2. 解析 价值密度pi/wi 贪婪算法,这种选择准则为:从剩余物品中选择可装入包的pi/wi值最大的物品。 思路:轻者先装,直到再装任何集装箱将使轮船载重量超过 C 时停止。 定理:对于任何正整数 k, 算法 (轻者先装)对 k 个集装箱的实例得到 最优解。 证明(数学归纳法): (1 阅读全文
摘要:
1. 问题 给定序列 X=<x1,x2,...,xm> Y=<y1,y2,...,yn> 求 X 和 Y 的最长公共子序列Z 2. 解析 Xi=<x1,x2,...,xi> Yj=<y1,y2,...,yj> Zk=<z1,z2,...,zk> 如果Zk是Xi和Yj的最长公共子序列 (1) xi=y 阅读全文
摘要:
1. 问题 一个旅行者准备随身携带一个背包。可以放入背包的物品有n种,物品j的重量的价值分别为 wj,vj,j=1,2,...,n 如果背包的最大重量限制是b,怎么选择放入背包物品以使得背包的价值最大。 目标函数(价值) 约束条件(总量),其中xj表示放入背包的第j种物品的数量 2. 解析 当前Fk 阅读全文
摘要:
1. 问题 设m万元钱,n项投资,函数 表示将 x 万元投入第 i 项项目所产生的效益,i=1,2,…,n.问:如何分配这m元钱,使得投资的总效益最高? 2. 解析 设 表示 x 万元投给前 k 个项目的最大效益,k=1,2,…,n,x=1,2,…,m k=1 x=1,F1(1)=11; x=2,F 阅读全文
摘要:
1. 问题 设L是n个元素的集合,从L中选取第k小的元素,其中1<=k<=n.这里的第k小元素是指,当L按从小到大排好序之后,排在第k个位置的元素。 2. 解析 ①k=|S1|+1,m*就是所要找的第k小的数;(以m*为划分标准后,比m*小的有|S1|个,如果恰巧k=|S1|+1,则m* 就是所要找 阅读全文