計算機對比DNA、指紋、人臉等非編碼類數據原理?
文字對比、視頻等數據有固定編碼格式,如果使用計算機對比,可以理解為對比編碼後的數據,而指紋、DNA信息、人臉這種好像不是數據格式,這類信息是如何使用計算機對比的。
都是轉化成了某種編碼
比如,DNA通過基因檢測手段,從DNA樣品轉成了帶輔助信息的A、C、G、T字元或字元串,然後再通過演算法進行處理和比較的。
在23andme或者我所在的WeGene,通過提取唾液中的DNA,然後用基因晶元技術檢測其中的信息,經過處理後,其結果大概是這樣的:
這個文件大概有60萬行。這裡要比較的就是最後一列裡面的那些字元,這對計算機來說就是正常任務了。當然,有些精細的比較和分析需要更多的數據和檢測技術,比如,全基因組測序,它的最常見的結果文件是VCF,大概是這樣的:
全基因組測序得到的這種文件,一般有數百萬行。其中高亮的那個編號在上面基因晶元的結果中也出現了,通過後面的GT=0/1,可以知道,全基因組測序的結果跟基因晶元的結果一樣,在基因組的這個位置上都是AG雜合突變。嗯,這都是我的DNA~~~
指紋,人臉等也都是類似的,都需要通過攝像頭等感測器來獲得信息,轉換成某種編碼,再交給計算機處理。而且也都存在採樣精度的問題,比如指紋是測32個位置,還是128個位置等等。這方面我不熟悉,不瞎扯了。
總而言之,都沒啥黑科技,都是弄成了計算機能處理的信息(字元串,graph,tree等等),然後再比較分析的。
數據格式規定一個不就有了?關鍵是數據本身。實際上軟體在處理數據的時候,處理的是數據格式裡面所存儲的內容,格式本身並不是處理的一部分。
更何況DNA序列的數據格式那麼多,你只是不知道而已。
指紋人臉信息維度高得PCA,maxent,或者更複雜的ML演算法來比對
DNA信息維度低單位信息熵小,一般可以BLAST
比對和排序一樣是計算機科學中最普遍也是最基本的命題,首先就是把各種測量到的信息轉化成可量化的數據量,其次如果要找出某幾條數據精細化的差異一般是用文本比對的演算法(利用樹,圖,數組等數據結構),而如果要找出某幾組數據的差異程度就會用機器學習的演算法,比如你提到的人臉識別
推薦閱讀:
※為什麼在莫爾斯碼中不採取和布萊葉盲文一樣的換擋碼錶示切換英文和數字?
※base64解碼之後是亂碼,是什麼原因?有什麼解決思路?
※同樣都是銅線介質,為什麼 USB3就比2速度快了那麼多?
※在C語言中如何指定字元串編碼方式?
※莫扎特的《魔笛》是否像有些人講的那樣——泄漏了共濟會的秘密?