以2萬人天的檢測能力給武漢1500萬人做全民檢測最快要幾天?


聲明:算法問題是作者主要研究內容,所以本文只是就實際的一個問題,提出一種解決類似問題的可能算法或思路,爲大家的思維方式提供一定的幫助,不代表就使用此方法去解決實際問題,請勿有過多聯想

前言

網上有個新聞,說1500萬人檢測需要2年半:《張文宏稱全民核酸篩查不切實際,光武漢市1500萬人檢測完要花2年半》,此結論的依據是每天的檢測能力是2萬人。那麼我們能否在不改變現有檢測能力的情況下,加速檢測過程呢?在回答這個問題之前我們看另外一個問題。

示例問題

有1瓶魔法藥水,只要喝一點點,不管什麼動物喝了以後,24小時後就會變成兔子,但是卻混在10瓶普通純淨水中,由於無色無味瓶子外觀完全一樣,所以現在給你4只小白鼠用於測試,那麼最快要多久可以測量出哪瓶爲魔法藥水?

問題解決

我們只要讓小白鼠以不同的組合進行嘗試,只要24小時即可得出結果。現在我們對小白鼠和瓶子都進行編號,設 m1,m2,m3,m4m_1, m_2, m_3, m_4 爲4只小白鼠的編號,b1,...,b11b_1, ..., b{11} 爲11個瓶子的編號。我們可以按照下表來檢測:

瓶子編號 m4m_4 m3m_3 m2m_2 m1m_1
b1b_1 O
b2b_2 O
b3b_3 O O
b4b_4 O
b5b_5 O O
b6b_6 O O
b7b_7 O O O
b8b_8 O
b9b_9 O O
b10b_{10} O O
b11b_{11} O O O

如表所示,m1m_1 品嚐 b1,b3,b5,b7,b9,b11b_1, b_3, b_5, b_7, b_9, b_{11},其他小白鼠以此類推。這樣在24小時以後,根據小白鼠的變成兔子的情況即可判斷。比如,如果是 m1m_1m3m_3 變成了免子,那麼 b5b_5 就是魔法藥水;如果 m1,m2,m4m_1, m_2, m_4 變成了免子,那麼就是 b11b_{11} 是魔法藥水。

檢測問題

根據以上的題目的思路,對於新聞中的問題,我們在理論上是有可能的,是有可能大幅縮短檢測時間的,比如在我們可以將10人的血混合,如果不出現陽性,那麼一下就可以和排除10人;若出現陽性,那麼再對這10人分別檢測,即可找出具體感慨的人。

但是特別注意,這裏只是理論分析,不代理實際中就可以實現。對於這個問題,作者認爲,在實際中至少還需要滿足兩個前提纔有實現的可能:

  • 檢測精度夠高
    如果將10個人的血混合在一起,病毒的濃度也降低了差不多10倍(假設有10人中有1個感染者),那麼這就需要檢測的精度提高到原來的10倍。
  • 樣本間絕對獨立
    即10份血液樣本混合在一起後,樣本間不會產生相互作用,否則可能會影響結果。比如這10人中有1人帶有抗體,那麼在10人混合以後,即便有其他傳染者,也會可能會因爲抗體的存在將其他的感染者中的病毒給殺死,從而導致結果爲陰性。

小結

本文就實際的一個問題,提出一種解決類似問題的方案。但是由於實際的情況非常複雜,所以理論上的貌似可行的方案,在實際中並不是那麼容易實現。我們通過這個示例更多的是在思想層面進行討論,提出一種發散的解決問題的思路,爲實際的相似或相關問題,提供可能的思路。

最後要特別指出,理論分析與實際總是會產生距離,這非常常見。比如,在數學中,密碼根本沒用,因爲只要嘗試所有的結合就可以突破密碼,但是在實際生活中,這需要大量的時間,是不可行的。再比如,愛因斯坦在100多年前的理論中,就表示引力波是可能存在的,結果直到100年多後的今天才被證實。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章