大海撈針的技術

假設你是一個農業專家,花了很多的時間培育出一種特別的果樹,這個果樹的特別之處乃是在於它比較不怕某一種植物的傳染病。這個品種當然是非常有價值的,在政府單位有登記。問題是,假如別的樹苗農場販賣這個品種的樹苗,會不會有問題?也就是說,買家當然希望可以確定他所買的樹苗的確是這個品種。

photo credit:John Goode via flickr CC BY 2.0

 

我們要知道,這不是一個容易的事。雖然這是一個新的品種,但是它和其他樹苗品種的外觀是差不多的,它的DNA和別的品種的DNA是非常相像的,因此我們要用一個方法來找出這個品種在DNA上的特徵。

先說DNA,DNA究竟是什麼,我沒有辦法在這裡講清楚,這是相當複雜而有趣的東西。簡單來說,它是存在細胞裡頭的一個很長的東西。這個東西是一連串的化合物,大自然在幾億年前就合成了四種化合物給DNA使用。我們通常將這四種化合物用a,c,g,t來代表。以下就是一段生物的DNA。

accgttccgtaccgtagttcttaatacctaataagttctgtatagtcgatctggtacggtaggtccatg

現在我們看另外一段DNA:

accgtgttccgtaccgtaatacctaataatacctaataagttctgtatagtcgatctggtacgg

這兩段DNA看上去是有點相像,可是中間有一個特別的地方,那就是在上面一段DNA有以下的字串:
P字串:gtaccgtagttcttaatacctaa

第二段DNA有以下的字串:
Q字串:gtaccgtacctaa

兩者有什麼關係呢?它們有一個有趣的關係,我們將這些字串分成三種字串:
A字串: gtaccgt
B字串: agttcttaat
C字串: acctaa

因此第一個P字串gtaccgtagttcttaatacctaa是ABC,而後一個Q字串gtaccgtacctaa是AC。這你們要仔細看一下就會同意我的說法。

也就是說,第一個物種和第二個物種有99%是相似的,可是仍然會有特別不同的地方。我們所講的DNA,大概是有5.23億個字,假設我們有XDNA和YDNA,長度都是5.23億個字,我們的任務是要在XDNA和YDNA中找出A和C,而A和C的長度都一定要是18~22個字。也要找到一個B字串,它的長度是大於50個字。ABC存在於XDNA,AC存在於YDNA。我們可以說這種特色就是我們物種的特色,別的物種不會有完全一樣的特色。

現在我再舉一個例子:
XDNA:  accgtttgaggtcgat cgtattgaccgtggttcgtaaa actgactgacttagcatcaaatg atcatgactgcgtactaaggttcaatccatg acggtgccatgccatgggtccc gttaaacgtacgacg

YDNA:
Cggtagtaaacgttagtcgtacat cgtattgaccgtggttcgtaaa acggtgccatgccatgggtccc
tggtaacggttacgatgcgtaactgcgcgtcgtaaccgtatgccgtagttacggtaaatcctatgcgta

以上的DNA中有空格,這是因為我們要方便搞清楚所謂的ABC字串。其中的ABC字串如下:

A  cgtattgaccgtggttcgtaaa
B  actgactgacttagcatcaaatgatcatgactgcgtactaaggttcaatccatg
C  acggtgccatgccatgggtccc

我們可以看出來,在XDNA中有ABC,YDNA中有AC。

假設我們要知道所買的苗種是否真的,我們可以查它的DNA。它的DNA可以叫做XDNA,和別的苗種相比,XDNA一定有以上的特色。如果沒有,就不是我們所要的苗種。

這個問題主要是要靠電腦的演算法來解決,因為XDNA和YDNA的長度都是5.5億左右,雖然工作人員還有一些資訊,這個工作仍然幾乎是大海撈針,如果沒有好的演算法,那是絕對沒有辦法解決這個問題的。值得慶幸的是,台灣有相當多的教授是演算法的專家,所以我們有不少的軟體工程師不是只會寫簡單程式的,而是可以設計程式,解決相當困難的問題。我們最近已經成功地發展了這個程式,而且實驗證明這個程式的確解決了這個問題。

當然,這個程式也可以保護智慧財產權,如果有人侵權的話,可以用這種方法來判斷。

我也希望我們的資訊系同學都應該多學演算法,因為很多非常值錢的程式都使用了相當巧妙的演算法。

 

 

(本文經李家同教授同意授權轉載「大海撈針的技術」)

 

  • 如需轉載、引用本篇文章,請先與我們連絡!
  • 每一個分享都是支持「工業技術研究院」持續創作的能量!感謝您!
  • 文章內容為作者個人觀點,不代表本站立場。
發表意見
延伸閱讀
觀看更多

發佈留言