再看《数据结构》给出的公式,平均查找长度 A S L = ∑ i = 1 n p i ⋅ c i {\color{Black} ASL=\displaystyle \sum_{i=1}^{n}p_{i}\cdot c_{i}} ASL=i=1∑npi⋅ci
这个累加式是按每个结点来计算,从1到 n n n个结点,用结点的概率 × \times × 该结点的比较次数,但缺点是不方便计算
所以前面的推导其实是转换思路,改为按每层计算,两种计算方式都会把结点过一遍,二者是等价的
即 A S L = ∑ i = 1 n p i ⋅ c i = 1 n ∑ j = 1 h j ⋅ 2 j − 1 {\color{Black} ASL=\displaystyle \sum_{i=1}^{n}p_{i}\cdot c_{i}=\frac{1}{n} \displaystyle \sum_{j=1}^{h} j\cdot 2^{j-1}} ASL=i=1∑npi⋅ci=n1j=1∑hj⋅2j−1
其实这就是高中数学的复合数列 { h ⋅ 2 h − 1 } \{h \cdot 2^{h-1}\} {h⋅2h−1}求和
前面是首项为1,公差为1的等差数列,乘以后面首项为1,公比为2的等比数列
* 等比数列求和公式 S n = a 1 ( 1 − q n ) 1 − q {\color{Black} S_{n}=\frac{a_{1}(1-q^{n})}{1-q}} Sn=1−qa1(1−qn)
复合数列求和的计算思路与等比数列相同(乘公比,错位相减)
S h = 1 × 2 1 − 1 + 2 × 2 2 − 1 + 3 × 2 3 − 1 + … … + h × 2 h − 1 2 S h = 1 × 2 2 − 1 + 2 × 2 3 − 1 + … … + ( h − 1 ) × 2 h − 1 + h × 2 h 2 S h − S h = ( − 1 ) × 2 1 − 1 + ( 1 − 2 ) × 2 2 − 1 + ( 2 − 3 ) × 2 3 − 1 + … … + ( h − 1 − h ) × 2 h − 1 + h × 2 h = ( − 1 ) × 2 0 + ( − 1 ) × 2 1 + ( − 1 ) × 2 2 + … … + ( − 1 ) × 2 h − 1 + h × 2 h = ( − 1 ) × ( 2 0 + 2 1 + 2 2 + … … + 2 h − 1 ) + h × 2 h = ( − 1 ) × 2 0 ( 1 − 2 h ) 1 − 2 + h × 2 h = ( − 1 ) × 1 ⋅ ( 1 − 2 h ) − 1 + h × 2 h = 1 − 2 h + h × 2 h = 1 + ( − 1 + h ) × 2 h S h = ( h − 1 ) 2 h + 1 {\color{Black} \begin{align*}S_{h}&=1 \times 2^{1-1}+2 \times 2^{2-1}+3 \times 2^{3-1}+……+h \times 2^{h-1} \\2S_{h}&=\qquad \qquad \; \; \; 1 \times 2^{2-1}+2 \times 2^{3-1}+……+(h-1) \times 2^{h-1}+h\times 2^{h} \\\\2S_{h}-S_{h} &=(-1) \times 2^{1-1}+(1-2)\times 2^{2-1}+(2-3)\times 2^{3-1}+……+(h-1-h)\times 2^{h-1}+h\times 2^{h}\\&= (-1) \times 2^{0}+(-1) \times 2^{1}+(-1) \times 2^{2}+……+(-1)\times 2^{h-1}+h\times 2^{h}\\ &=(-1)\times(2^{0}+2^{1}+2^{2}+……+2^{h-1})+h\times 2^{h} \\ &=(-1)\times \frac{2^{0}(1-2^{h})}{1-2}+h\times 2^{h} \\ &= (-1)\times \frac{1\cdot (1-2^{h})}{-1}+h\times 2^{h} \\ &=1-2^{h}+h\times 2^{h} \\ &=1+(-1+h)\times 2^{h}\\ S_{h}&=(h-1)2^{h}+1 \end{align*}} Sh2Sh2Sh−ShSh=1×21−1+2×22−1+3×23−1+……+h×2h−1=1×22−1+2×23−1+……+(h−1)×2h−1+h×2h=(−1)×21−1+(1−2)×22−1+(2−3)×23−1+……+(h−1−h)×2h−1+h×2h=(−1)×20+(−1)×21+(−1)×22+……+(−1)×2h−1+h×2h=(−1)×(20+21+22+……+2h−1)+h×2h=(−1)×1−220(1−2h)+h×2h=(−1)×−11⋅(1−2h)+h×2h=1−2h+h×2h=1+(−1+h)×2h=(h−1)2h+1
所以得出总比较次数 S h = ( h − 1 ) 2 h + 1 S_{h}=(h-1)2^{h}+1 Sh=(h−1)2h+1
但是题目一般给出的是结点数 n n n,并不会给高度 h h h,所以还需要把 h h h替换掉
本文最前面已经得出 h = l o g 2 ( n + 1 ) h=log_{2}{(n+1)} h=log2(n+1),所以可以用这个表达式替换 h h h
* 解释一下如何替换,根据对数定义 a l o g a b = b a^{log_{a}{b}}=b alogab=b,所以 2 l o g 2 ( n + 1 ) = n + 1 2^{log_{2}{(n+1)}}=n+1 2log2(n+1)=n+1
S h = ( h − 1 ) 2 h + 1 = [ l o g 2 ( n + 1 ) − 1 ] 2 l o g 2 ( n + 1 ) + 1 = [ l o g 2 ( n + 1 ) − 1 ] ( n + 1 ) + 1 = ( n + 1 ) l o g 2 ( n + 1 ) − ( n + 1 ) + 1 = ( n + 1 ) l o g 2 ( n + 1 ) − n − 1 + 1 = ( n + 1 ) l o g 2 ( n + 1 ) − n {\color{Black} \begin{align*} S_{h}&=(h-1)2^{h}+1\\ &={\Large[}log_{2}{(n+1)}-1{\Large]}2^{log_{2}{(n+1)}}+1 \\ &={\Large[}log_{2}{(n+1)}-1{\Large]}(n+1)+1\\ &=(n+1)log_{2}{(n+1)}-(n+1)+1\\ &=(n+1)log_{2}{(n+1)}-n-1+1\\ &=(n+1)log_{2}{(n+1)}-n \end{align*}} Sh=(h−1)2h+1=[log2(n+1)−1]2log2(n+1)+1=[log2(n+1)−1](n+1)+1=(n+1)log2(n+1)−(n+1)+1=(n+1)log2(n+1)−n−1+1=(n+1)log2(n+1)−n
所以总比较次数 ∑ j = 1 h j ⋅ 2 j − 1 = ( h − 1 ) 2 h + 1 = ( n + 1 ) l o g 2 ( n + 1 ) − n {\color{Black} \displaystyle \sum_{j=1}^{h} j\cdot 2^{j-1}=(h-1)2^{h}+1=(n+1)log_{2}{(n+1)}-n} j=1∑hj⋅2j−1=(h−1)2h+1=(n+1)log2(n+1)−n
所以平均查找长度=概率 × \times ×总比较次数 A S L = ∑ i = 1 n p i ⋅ c i = 1 n ∑ j = 1 h j ⋅ 2 j − 1 = 1 n [ ( n + 1 ) l o g 2 ( n + 1 ) − n ] = n + 1 n l o g 2 ( n + 1 ) − n n = n + 1 n l o g 2 ( n + 1 ) − 1 {\color{Black} \begin{align*} ASL=\displaystyle \sum_{i=1}^{n}p_{i}\cdot c_{i}=\frac{1}{n} \displaystyle \sum_{j=1}^{h} j\cdot 2^{j-1} &=\frac{1}{n}{\Large[}(n+1)log_{2}{(n+1)}-n{\Large]} \\ &=\frac{n+1}{n}log_{2}{(n+1)}-\frac{n}{n}\\ &=\frac{n+1}{n}log_{2}{(n+1)} -1\end{align*}} ASL=i=1∑npi⋅ci=n1j=1∑hj⋅2j−1=n1[(n+1)log2(n+1)−n]=nn+1log2(n+1)−nn=nn+1log2(n+1)−1
折半查找的平均查找长度 A S L = n + 1 n l o g 2 ( n + 1 ) − 1 {\color{Black} ASL= {\Large \frac{n+1}{n}}log_{2}{(n+1)}- 1 } ASL=nn+1log2(n+1)−1
C/S医学影像PACS系统源码主要应用是什么?
一套基于VC MSSQL开发的PACS系统源代码,医学影像PACS系统,全称为Picture Archiving and Communication Systems,即医学影像归档和通信系统。它是应用在医院影像科室的系统,主…