底层探幽
组成原理
1 数据表示
浮点数
重点注意的是:非规范化数(指数全 0)里面,尾数是没有省略 1 的(因为尾数带 1 没法表示 0 嘛)。而不省略 1 了,就意味着指数可以加 1(因为原来是尾数左移了一位,让指数多减了个 1)。因此,虽然此时指数位全 0,但实际上表示的是 00000001
,也即指数实际上为: 1 - bias = 1 - 127 = -126
操作系统
网络
1 HTTP 协议
1.1 HTTP 请求报文
一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。
算法
1 贪心算法
最优子结构的证明1
最优子结构:问题 S i j S_{ij} Sij的最优解 A i j A_{ij} Aij必然包含子问题 S i k S_{ik} Sik和 S k j S_{kj} Skj的最优解 A i k A_{ik} Aik和 A k j A_{kj} Akj
证明(cust-and-paste)法:如果不包含,则子问题有一个更好的解,粘贴进来比原来的最优解要好,则原来的不是最优,推出矛盾
贪心选择性质:做出局部的最优解可以得到全局的最优解
命题:做出当前最优选择{x},则存在一个问题S的最优解A,包含{x}
证明:如果最优解B不包含{x},则对任意B中元素y,均有 w ( y ) < w ( x ) w(y) < w(x) w(y)<w(x)。从A={x}开始构建,不断从B中选择元素加入A中,直至|A|=|B|,此时A与B的不同就在于,A有{x},B有{ y i y_i yi}。由于 w ( y i ) < w ( x ) w(y_i) < w(x) w(yi)<w(x),故 w ( B ) < w ( A ) w(B) < w(A) w(B)<w(A),B不是最优解,推出矛盾。
因此最优解一定包含这一局部最优解,下面的任务就是找出这个包含x的最优解A。又由于问题S具有最优子结构,因此这一问题又转换为,求出问题 A − { x } A-\{x\} A−{x}的最优解,对其继续运用贪心选择性质,然后不断迭代即可。
references
参见[《算法导论》](D:\books\数据结构与算法\算法导论 第3版.pdf)关于霍夫曼编码和拟阵贪心选择性质的证明 ↩︎