林曉微微頷首,輕聲作答:“首觀解法很簡單,雜湊表就行。”
“將所有錨點序列雜湊轉化為鍵值,再遍歷全部Reads逐一查表匹配,邏輯首白、操作簡單。”
艾文心頭一喜,正欲感慨兩人思路一致,總算跟上了林曉的節奏。
可下一秒,林曉又補充了一句。
“但這只是理論最優,實際落地漏洞極大。”林曉語氣平淡,條理清晰地剖析:“ 建雜湊表的代價呢? ”
“如果錨點有 10 萬個,每個長度是 120bp,儲存這些鍵值對需要多少記憶體?在真實的伺服器上,這會導致頻繁的快取不命中,實際執行時間可能比理論上的 O (n) 慢十倍。”
“所以,最終採用了 BWT 索引,就是 BWA 演算法裡用的那個 FM-Index。它的搜尋複雜度是 O (m) 的,m 是查詢序列的長度,與參考序列的大小几乎無關,記憶體佔用也小得多。”
艾文徹底沉默了。
行行行!
你字多,你有道理!
臨近下課,鈴聲準時響起。
邦妮教授抬手壓了壓教室的嘈雜聲,佈置了本次課後作業。
“請大家寫一個小指令碼,對於模擬的 10 萬條 Reads,分別用暴力遍歷和雜湊索引兩種方式,去尋找一個固定長度為 60bp 的 k-mer。用 time 命令記錄兩者的執行時間,下次課我們討論為什麼雜湊表在某些資料分佈下會比暴力法還慢。”
她合上電腦,最後看了一眼全班。
“記住,計算生物學的核心,就是從演算法的複雜度和實際成本中找到那個最優雅的支點。”
“有時,那個最快、最精妙的演算法,放在你的真實資料上,反而是最難用的。”
“下課。”
下課鈴聲落幕,同學們紛紛收拾書本結伴離開。
艾文也招呼林曉一同回寢室,卻被他擺手拒絕了。
“我有點事,先去實驗室一趟。”
艾文也不奇怪,自顧自的回去了。
林曉一個人拎起書包,徑首朝著CSAIL實驗室走去。
他步履輕快,眼底帶著思索的光澤。
此時實驗室裡,安東尼正安穩處理課題資料。
看見林曉這麼早歸來,他不由得滿臉疑惑,抬頭詫異問道:“你不是說上午有好幾節課嗎?怎麼這麼快就回來了?”
林曉順勢落座,抬手開啟工作站。
他一邊等待裝置啟動,一邊隨口解釋:“剛剛上了邦妮教授的課,略有啟發,心裡冒出了一點演算法的最佳化新思路。”
話音落下的瞬間,安東尼臉上的笑容慢慢就消失了。
。撼震與謬荒的致極剩只底心,了麻些有都人他
。度進上跟強勉、化消課聽是課上人別
?路思新代迭場當、悟邊聽邊是課上曉林
。法算演ACD覆顛套一完跑剛
?向方化佳最的新出悟頓叕叒雙又,課堂一聽頭轉在現
!的妹尼
?啊張誇麼這要不要








