UA MATH ECE636 信息论10 Group Testing简介
UA MATH ECE636 信息論10 Group Testing簡介
- Group Testing
- AGT
- Dworfman算法
- Binary Search
- Generalized Binary Search
- Lower Bound
Group testing在工程、醫(yī)學(xué)、統(tǒng)計等領(lǐng)域都有廣泛的應(yīng)用。一個group testing的比較直觀的例子:假設(shè)有NNN個串聯(lián)的燈泡,其中有ddd個燒掉了,所以整串燈泡都不亮了。現(xiàn)在想把這ddd個燈泡檢測出來,如果每個燈泡都檢查的話就需要檢測NNN個,而group testing想要回答的問題是最少需要檢測幾個燈泡才能把這ddd個燒掉的檢測出來?
Group Testing
假設(shè)X1,?,XNX_1,\cdots,X_NX1?,?,XN?是一組隨機(jī)樣本,X1,?,XN~iidBer(p),p<<1X_1,\cdots,X_N \sim_{iid} Ber(p),p<<1X1?,?,XN?~iid?Ber(p),p<<1。記
d=∑i=1NXid = \sum_{i=1}^N X_id=i=1∑N?Xi?
ddd表示所有取值為1的樣本數(shù)(假設(shè)ddd已知),記TTT表示需要做的檢測的數(shù)量。對應(yīng)上面的例子,這NNN個樣本就是NNN個串聯(lián)的燈泡,ddd就是燒掉的燈泡的數(shù)量,一次檢測可以就是用電壓表測一下每個燈泡兩端的電壓,TTT就是需要檢測的燈泡的數(shù)量,顯然T≤NT \le NT≤N。考慮到p<<1p << 1p<<1,也就是燒掉的燈泡數(shù)量很少,我們比較容易想到的是pooling的思想,也就是檢測多個燈泡兩端的電壓,如果是220V就說明其中有燒掉的,如果明顯小于220V說明沒問題。
用pooling的思想做Group testing的方法分為兩大類,adaptive group testing和non-adaptive group testing。Adaptive group testing(AGT)的做法是序貫地對樣本的子集做檢測。。因為AGT的序貫性,它的速度是比較慢的,所以樣本數(shù)目比較大的時候一般不用這個。Non-adaptive group testing(NAGT)的做法是并行地對樣本的子集做檢測,所以速度較快,大樣本時一般用這種操作。但相比AGT,NAGT需要的檢測的數(shù)量更多。
AGT
Dworfman算法
這個算法是1943年就提出來了的,比較古老的一種算法。它的思想是把NNN個樣本分成Nd\sqrt{Nd}Nd?組,每一組有N/d\sqrt{N/d}N/d?個樣本,對每一組做一次檢測,一共需要做Nd\sqrt{Nd}Nd?次檢測。假設(shè)檢測到kkk組取值為1的樣本,則1≤k≤d1 \le k \le d1≤k≤d,接下來對這kkk組中的每一個樣本做檢測,找出所有取值為1的樣本,一共需要做kN/dk\sqrt{N/d}kN/d?次檢測。從而這個算法需要做的檢測次數(shù)為
T=Nd+kNdT = \sqrt{Nd} + k\sqrt{\frac{N}ze8trgl8bvbq}T=Nd?+kdN??
顯然
Nd+Nd≤T≤2Nd\sqrt{Nd} + \sqrt{\frac{N}ze8trgl8bvbq} \le T \le 2\sqrt{Nd}Nd?+dN??≤T≤2Nd?
Binary Search
如果d=1d=1d=1:首先對NNN個樣本做檢測,如果結(jié)果是0,說明d=0d=0d=0,如果結(jié)果是1,將樣本均分為兩個group,每個group有N/2N/2N/2個元素,然后對每個group做檢測,如果結(jié)果是0,說明這個group沒有取值為1的樣本,如果結(jié)果是0,再將樣本均分為兩個group。。。重復(fù)這個操作,最終找到取值為1的那個樣本。根據(jù)這個算法,我們需要
2T=N?T=ceil(log?2N)2^T = N \Rightarrow T = ceil(\log_2 N)2T=N?T=ceil(log2?N)
其中ceil()ceil()ceil()表示不超過括號內(nèi)的數(shù)的最小整數(shù)。因此Binary滿足
T=ceil(log?2N)T = ceil(\log_2 N)T=ceil(log2?N)
如果d>1d>1d>1:檢測到第一個取值為1的樣本,將它移走,對剩下的N?1N-1N?1個樣本做Binary Search,重復(fù)這個過程,直到找到ddd個取值為1的樣本。因此
T=ceil(log?2N)+?ceil(log?2N?d)≤d×ceil(log?2N)=O(dlog?2N)T = ceil(\log_2 N) + \cdots ceil(\log_2 N-d) \le d\times ceil(\log_2 N) = O(d \log_2 N)T=ceil(log2?N)+?ceil(log2?N?d)≤d×ceil(log2?N)=O(dlog2?N)
因為d<<Nd << Nd<<N,所以通常Binary Search需要的檢測數(shù)目比Dworfman算法更少。
Generalized Binary Search
將NNN個樣本分為ddd個group,則每個group中有N/dN/dN/d個樣本,在每個group中做binary search,假設(shè)第jjj個group中有kjk_jkj?個樣本取值為1,則
T=k1log?2Nd+?+kdlog?2Nd=dlog?2NdT = k_1 \log_2 \frac{N}ze8trgl8bvbq + \cdots + k_d \log_2 \frac{N}ze8trgl8bvbq = d \log_2 \frac{N}ze8trgl8bvbqT=k1?log2?dN?+?+kd?log2?dN?=dlog2?dN?
顯然這個比Binary Search更優(yōu)秀。
Lower Bound
下面的定理給出了GT最優(yōu)的可能性,由此可以看出generalized binary search是AGT中一種最優(yōu)的算法。
定理
T≥dlog?2NdT \ge d \log_2 \frac{N}ze8trgl8bvbqT≥dlog2?dN?
證明
我們嘗試用信息論的語言來描述這個問題。假設(shè)我們用了TTT個檢測,則每個檢測返回的結(jié)果是0或者1,相當(dāng)于就是收到了一個字長為TTT的binary code,則這個binary code能表示的信息的總數(shù)為2T2^T2T。而ddd個取值為1的樣本在所有樣本中的分布情況可以理解為字長為NNN的binary信號中有ddd個字是1,這種編碼方式可以表示CNdC_N^dCNd?種信號。為了保證binary code能夠表示所有的信號:
2T≥CNd?T≥log?2CNd≥T≥log?2(N/d)d=dlog?2Nd2^T \ge C_N^d \Rightarrow T \ge \log_2 C_N^d \ge T \ge \log_2 (N/d)^d = d \log_2 \frac{N}ze8trgl8bvbq2T≥CNd??T≥log2?CNd?≥T≥log2?(N/d)d=dlog2?dN?
這里面用到了不等式
CNd=(N/d)dC_N^d = (N/d)^dCNd?=(N/d)d
它其實非常直觀
CNd=NdN?1d?1N?2d?2?N?(d?1)d?(d?1)C_N^d = \frac{N}ze8trgl8bvbq \frac{N-1}{d-1} \frac{N-2}{d-2} \cdots \frac{N-(d-1)}{d-(d-1)}CNd?=dN?d?1N?1?d?2N?2??d?(d?1)N?(d?1)?
根據(jù)小學(xué)數(shù)學(xué)分式的性質(zhì)
N?nd?n≥Nd,n<d\frac{N-n}{d-n} \ge \frac{N}ze8trgl8bvbq,n < dd?nN?n?≥dN?,n<d
用到的那個不等式成立。
總結(jié)
以上是生活随笔為你收集整理的UA MATH ECE636 信息论10 Group Testing简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UA MATH565C 随机微分方程V
- 下一篇: UA MATH ECE636 信息论10