基因重組之燃燒煎餅圖上單壞點容錯繞線 演算法

48  Download (0)

Full text

(1)

中 華 大 學 碩 士 論 文

基因重組之燃燒煎餅圖上單壞點容錯繞線 演算法

Fault-Tolerant Routing Algorithm in Burnt Pancake Graph with one Faulty

Node on Genome Rearrangement

系 所 別:生物資訊學系碩士班 學號姓名:M09820010 王佑維 指導教授:吳哲賢 教授

中 華 民 國 100 年 7 月

(2)

中文摘要

基因重組之字首反轉排序問題是生物資訊學近來被廣泛研究的主題,當考慮 方向性的情況下,建構出燃燒煎餅圖。在 n 層燃燒煎餅圖上,考慮點對點繞線,

Cohen 跟 Blum 於 1993 年提出了 O(n²)演算法,路徑長度上限為 2n。當錯誤節點 為 n – 1 個的狀態下,Iwasaki 和 Kaneko 於 2010 年提出了 O(n²)演算法,路徑長 度上限為 2n + 4;當錯誤節點擴大為 n - 1 群及群間直徑為 3 的狀態下,Iwasawa 等人提出了 O(n²)演算法,路徑長度上限為 2n + 10。

在一個設計良好的穩定系統中,節點發生錯誤的機率極低,而且當發生錯誤 時,也能在極短時間修復,因此容錯繞線的問題大部分情況錯誤節點為一個,超 過兩個以上的機率微乎其微。我們在本篇論文中提出了一個有效率的演算法來處 理當錯誤節點為一個的時候,n 層燃燒煎餅圖中點對點容錯繞線問題,其路徑長 度上限為 2n + 2,時間複雜度為 O(n²)。

關鍵字:基因重組、字首反轉排序、燃燒煎餅圖、容錯繞線

(3)

ii

ABSTRACT

Sorting by prefix reversals of genome rearrangement is widely discussed topic on bioinformatics research. Consider genome orientation, burnt pancake graph can be constructed. For node-to-node routing on n-burnt pancake graph, Cohen and Blum first proposed O(n²) algorithm with at most 2n length of the path in 1993. If there exist (n – 1) faulty nodes, Iwasaki and Kaneko proposed O(n²) algorithm with at most (2n + 4) length of the path in 2010; extending to (n – 1) faulty clusters with diameter 3, Iwasawa proposed O(n²) algorithm with at most (2n + 10) length of the path.

Under well-designed steady system, the probability of faulty node is very low, and it can be repaired well soon. So the most case of node-to-node fault-tolerant routing is only one faulty node. In this thesis, we propose one efficient fault-tolerant routing algorithm in n-burnt pancake graph with one faulty node, the length of the path is at most (2n + 2), and time complexity is O(n²).

Keywords: Genome Rearrangement, Sorting by Prefix Reversals, Burnt Pancake Graph, Fault-tolerant Routing

(4)

誌 謝

兩年的時間說長不長說短不短,在中華大學生物資訊研究所的生活已接近尾 聲,在二年研究所的求學期間,首先必須感謝吳哲賢教授的栽培。由於老師孜孜 不倦的辛苦指導並且給了我可以充分表現自我的舞台,對於學習態度與論文撰寫 方面也給了我很大的助力,讓我在研究所這兩年學到該有的學習態度。當我遇到 困惑時候能夠適時的給予我適當的幫助與教導。當然也給了我很大的學習空間,

讓我在沒有壓力的學習環境下學習,至此,我才領悟身為人師的無私關愛和慷慨 付出的真正內涵。

接著要感謝我的家人,因為有你們這兩年的學習我並不孤單,常讓我感 覺到你們無時無刻的關心,有我有走下去的動力。也感謝你們 20 幾年來辛苦的 扶養我,謝謝你們,在此祝福你們身體健康。

最後我要感謝這幾年來,陪我度過不管是研究所的朋友還是高中的朋友,謝 謝你們的關心和支持,必須感謝,請原諒我沒能寫出你們的名字,因為有你們的 陪伴,讓個性內向的我能夠跟你們不管是玩在一起也好討論作業也好都一直很開 心,最後記得畢業後也要常保持聯絡。

(5)

iv

目 錄

第一章 導論... 1

1.1 基因重組... 2

1.2 基因反轉... 5

1.3 煎餅翻轉問題 ...10

1.4 燃燒的煎餅問題 13

1.5 研究目的與動機...14

1.6 章節綱要 16

第二章 煎餅圖上之最短路徑演算法 ...17

2.1 符號定義...19

2.2 一對一無故障節點演算法...20

2.3 範例執行結果 ...22

第三章 我們的演算法 ...24

3.1 符號定義...24

3.2 煎餅圖上單點容錯繞線演算法 ...29

3.3 演算法複雜度總整理...35

第四章 結論...36

4.1 研究成果...36

4.2 未來研究方向 ...37

參考文獻 ...38

(6)

圖目錄

圖 1.1 基因組序列 ... 4

圖 1.2 人類染色體 ... 4

圖 1.3 MOUSE、HUMAN 染色體圖示 ... 5

圖 1.4 甘藍菜(CABBAGE)和蕪菁(TURNIP)... 6

圖 1.5 CABBAGE 基因組反轉排序成 TURNIP 基因組... 7

圖 1.6 有向反轉排序之基因重組 ... 8

圖 1.7 基因重組之無向反轉排序 ... 9

圖 1.8 基因重組之字首反轉排序 ...10

圖 1.9 無向字首反轉 ...12

圖 2.1 燃燒煎餅圖 B2...17

圖 2.2 燃燒煎餅圖 B3...18

圖 2.3 有方向之字首反轉 ...19

圖 2.4 COHEN 跟 BLUM CASE1 ...20

圖 2.5 COHEN 跟 BLUM CASE2 ...20

圖 2.6 COHEN 跟 BLUM CASE3 ...21

圖 2.7 COHEN 跟 BLUM CASE4 ...21

圖 2.8 COHEN 跟 BLUM 提出沒有故障的演算法...23

圖 2.9 COHEN 跟 BLUM 提出沒有故障的演算法(都是負號)...23

圖 3.1 演算法總圖 ...25

(7)

vi

圖 3.2 我們的演算法 CASE1~4 ...26

圖 3.3 我們的演算法 CASE5~7 ...27

圖 3.4 我們的演算法 CASE8~11...28

圖 3.5 我們的演算法 CASE1 ...29

圖 3.6 我們的演算法 CASE2 ...30

圖 3.7 我們的演算法 CASE3 ...30

圖 3.8 我們的演算法 CASE4 ...31

圖 3.9 我們的演算法 CASE5 ...31

圖 3.10 我們的演算法 CASE6 ...32

圖 3.11 我們的演算法 CASE7...32

圖 3.12 我們的演算法 CASE8 ...33

圖 3.13 我們的演算法 CASE9 ...33

圖 3.14 我們的演算法 CASE10...34

圖 3.15 我們的演算法 CASE11...34

(8)

表目錄

表 1.1 燃燒煎餅圖 ...15 表 1.2 煎餅圖 ...15 表 3.1 演算法分析表 ...35

(9)

1

第一章 導論

生物的基因重組(Genome rearrangements)[1]、是因為突變或是基因體序列 改變,導致物種發生變異的一種過程。在基因重組的方式中,反轉(Reversals)

已經被研究學者證明為最好的排序方法。如何將反轉運用在基因序列上,進而談 到字首反轉以及燃燒煎餅的問題,本論文主要探討,因為近來許多網路結構被發 表,在穩定的系統中會發生故障節點的機率很低,所以我們討論如果只故障一個 節點的演算法。又稱為燃燒煎餅圖上繞線單點演算法,目的為利用字首反轉方式 和規則反轉其排列,並找出路徑長度上限及時間複雜度。

(10)

1.1 基因重組

基因重組[1]就是由於物體內不同 DNA 鏈的斷裂跟接合產生 DNA 片段的交 換和重新組合,形成新 DNA 的過程。包括同源重組(homologous recombination) 、 位點特異重組(site-specific recombination) 、位移作用(transposition ) 、和異常重 組(illegitimate recombination)四大類,是生物遺傳變異的一種機制。自然界中不 同物種或個體之間的基因轉移和重組是經常在發生的,它是基因變異和物種進化 的基礎,包含、病毒、原核生物、真核生物都存在基因重組的現象,重組有多種 類型。其中兩個不同物種擁有相同基因,但基因排列順序卻不同。基因轉移的方 式 分 為 四 大 類 接 合 作 用 (conjugation) 、 轉 化 作 用 (transformation) 、 轉 導 作 用 (transduction)、位移作用(transposition )。

解釋基因重組型態如下。(一)接合:當細胞與細胞、或細菌通過菌毛相互 接觸時,質粒 DNA 就可從一個細胞(細菌)轉移至另一細胞(細菌),這種類型的 DNA 轉移稱為接合作用;(二)轉化:透過自動獲取或人為供給外源 DNA,使

細胞或培養的受體細胞獲得新的遺傳表型;(三)轉導:當病毒從被感染的(供體)

細胞中釋放出來、再次感染另一個(受體)細胞時,發生在供體細胞與受體細胞之 間的 DNA 轉移及基因重組;(四)移位:大多數基因在基因組內的位置是固定 的,但有些基因可以從一個位置移動到另一位置。這些可移動的 DNA 序列包括 插入序列和移位子,由插入 DNA 序列和移位子的基因移位或重排稱為移位作用。

基因重組:在接合、轉化、轉導或移位過程中,不同 DNA 分子間發生的共 價連接稱基因重組。基因重組包括位點特異性的重組和同源重組兩種類型。有整 合酶催化的在兩個 DNA 序列特異位點間發生的整合,產生位點特異的重組。特 異重組依賴特異的 DNA 序列,如 λ 噬菌體的整和酶可識別噬菌體 DNA 和宿主 染色體的特異位位點,並進行選擇性整合;反轉錄病毒整合酶識別整合反轉錄病

(11)

3

毒 cDNA 的長末端重複序列等。另外有發生在同源序列間的同源重組,又稱基本 重組。同源重組依賴兩分子間序列的相同或相似性,將外源 DNA 整合進宿主染 色體。

 基因重組與基因突變的區別

基因重組是指非等位基因之間的重新組合。能產生絕大多數的變異,但只產 生新的基因型,不產生新的基因。基因重組的細胞學基礎是性原細胞的減數分裂 第一次分裂,同源染色體彼此分裂的時候,非同源染色體之間的自由組合和同源 染色體的染色單體之間的交叉互換,所以基因重組是雜交育種的理論基礎。

基因突變是指基因的分子結構的改變,即基因中的 DNA 的排列順序發生了 改變,而導致遺傳訊息的改變。基因突變的頻率很低,但能產生新的基因,對生 物的進化有重要意義。發生基因突變的原因是 DNA 在複製時因受內部因素和外 界因素的干擾而發生差錯。

人體基因組的圖譜能說明構成每個人體細胞是由去氧核醣核酸簡稱 DNA

(Dexyribonucleic acid)的 30 億個鹼基對精確排列基因的「地圖」。而基因組是 由 23 條染色體所組成,其中包括 22 條體染色體、1 條性染色體(X 染色體或 1 條 Y 染色體)。染色體中包含大量的基因,然而基因是由 DNA 所組成,然後由 四種核苷酸(Nucleotides)所組成,分別為:腺嘌呤(Adenine)、胸腺嘧啶

(Thymine)、鳥糞嘌呤(Guanine)、胞嘧啶(Cytosine),即是 A、T、C、G。

(12)

圖 1.1 : 基因組序列

圖 1.2 : 人類染色體

(13)

5

1.2 基因反轉

接下來主要是針對基因反轉的重組類型,並且來討論基因反轉問題。近年來 學者積極研究基因的反轉排序問題,並探討從兩個不同物種的基因組序列如何以 最少的反轉距離(Reversals distance)來反轉。

近年學者研究發現人和老鼠的基因圖譜竟然基本上都相同。人類和老鼠都有 大約 30000 條基因,其中約有 80%的基因是完全一模一樣的,由於在人類基因和 老鼠基因之間存在的細小差別(僅僅 300 條特色基因),才導致了兩種完全不同的 哺乳動物的產生。此外,老鼠具有 20 對染色體,而人類則有 23 對。

在人類與老鼠中,在染色體的數目上跟大小雖然差別很大,但是在染色體的 排列上是有著很大小差異性,就如下圖之所示,人與老鼠的基因在染色體上的排 列只是經過了重組而已。

圖 1.3 : Mouse、Human 染色體圖示

在自然界演化的生存法則中,兩種物種之間的基因序列因為排列不同所以形 態外表也看起來有所不同,但是他們也有著相同的基因。在 1980 年 Jeffrey Palmer[2],以蕪菁(Turnip)和甘藍菜(Cabbage)來討論,球莖甘藍菜,雖然 外型酷似蕪菁,但其實是同屬的蔬菜,亦稱結頭菜,發現兩種植物細胞演化時,

(14)

細胞中粒線體基因組跟基因幾乎相同,只是基因順序不相同,這也讓它們的在口 味跟外型上有著明顯不一樣的差別。

圖 1.4 : 甘藍菜(Cabbage)和蕪菁(Turnip)

甘藍菜和蕪菁這兩個植物,這兩種不一樣的基因序列,可能要到數以百萬年 的演化之後才有可能變成一樣的,讓這兩種變成完全不一樣的原因就是基因反轉 排序而產生了基因重組。將基因組區段以序列(1, -5, 4, -3, 2)表示。我們針對甘藍 菜演化成蕪菁,以基因反轉每反轉一次代表數百年來表示,如圖針對甘藍菜基因 序列(1, -5, 4, -3, 2),首先將基因序列(-5, 4, -3, 2)反轉形成(-2, 3, -4, 5);接著將基 因序列-2 反轉形成 2;最後將基因序列-4 反轉形成 4,最後剛好與蕪菁基因序列 (1, 2, 3, 4, 5),最少的基因反轉距離亦為 3 次。

(15)

7

圖 1.5 : Cabbage 基因組反轉排序成 Turnip 基因組

 反轉排序

Hannenhalli 和 Pevzner 於 1995 年[3,4],是最早開始探討在有方向性的反轉 排序如何以最少翻轉次數來翻轉,也提出時間複雜度 O(n4)之最佳解演算法。以 下我們舉個例子,將基因組片段以數字表示,方向以正負號來表示。首先,給定 一組亂數基因組序列 π,利用反轉排序從基因組序列 π 轉成完全排列(Identity permutation),粉紅色底線代表反轉動作,藍色箭頭代表反轉之後變化成的下段 基因組序列。給定一基因序列(1, 4, 3, 5, 2),首先將基因序列(1, 4, 3, 5)反轉 形成(-5, -3, -4, -1, 2);再來將基因序列(-5, -3, -4, -1, 2)反轉形成(-2, 1, 4, 3, 5); 再來將基因序列(-2, 1, 4)反轉形成(-4, -1, 2);再來將基因序列(-4, -1, 2, 3)反轉 形成(-3, -2, 1, 4);接著將基因序列(-3, -2, 1)反轉形成(-1, 2, 3, 4, 5);最後 將基因序列-1 反轉形成(1, 2, 3, 4, 5)此基因序列即為完全排列。

(16)

圖 1.6 : 有向反轉排序之基因重組

無方向性的反轉排序如何以最少翻轉次數來翻轉,為了簡化基因重組的複雜 度,所以不考慮基因組序列方向性的問題。以下我們舉個例子,將基因組片段以 數字表示。首先,給定一組亂數基因組序列π,利用反轉排序從基因組序列π轉 成完全排列,粉紅色底線代表反轉動作,藍色箭頭代表反轉之後變化成的下段基 因組序列。給定一基因序列(3, 4, 2, 1, 5, 6, 7, 10, 9, 8),首先將基因序列(3, 4)

反轉形成(4, 3);再來將基因序列(10, 9, 8)反轉形成(8, 9, 10);最後將基因 序列(4, 3, 2, 1)反轉形成(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)此基因序列即為完全排列。

(17)

9

圖 1.7 : 基因重組之無向反轉排序

無向反轉排序中於 1995 年 Kececioglu 和 Sanko 先提出比率值為 2 的逼近演 算法[7];接著在 1996 年 Bafna 和 Pevzner[12]提出比率值為 1.75 的逼近演算法。

於 1997 年 Caprara[9],證明反轉排序最少反轉次數問題為 NP-hard。在 1998 年,

Christie[13]提出 1.5 的逼近演算法;目前最好在 2002 年 Berman、Hannenhalli 以 及 Karpinski[15]提出逼近演算法為 1.375。

(18)

1.3 煎餅翻轉問題

一開始煎餅翻轉問題(pancake flipping problem)大家所討論的是字首反轉 (Sorting by Prefix Reversals),只考慮字首反轉排序,之後慢慢延伸數種翻轉方法 及規則,以字首反轉來說。給一個亂序煎餅π,利用字首反轉排序到完全排序以 最少次數的翻轉動作來完成,以數字來說就是給定一排列π= (4, 1, 2, 3, 5 )利用 字首反轉的動作,經過 2 次無向反轉,最後變成完整排序π= (1, 2, 3, 4, 5 )。字 首反轉在基因重組例子,從起始基因序列開始反轉至目標序列,利用字首反轉的 動作,讓整段基因序列變為完全排序,但考慮基因組方向性及複雜度的問題,分 成有方向性之字首反轉跟無方向性之字首反轉,而我們為簡化基因重組之研究,

則不考慮基因組方向性的問題。舉例給一個亂序排列(4, 1, 2, 3, 5)利用字首反轉 動作先翻(4, 1, 2, 3)變成(3, 2, 1, 4, 5);在翻(3, 2, 1)形成(1, 2, 3, 4, 5 )此基因序列為 完全排序。

圖 1.8 : 基因重組之字首反轉排序

 字首反轉

字首反轉的方法及規則,先給一個亂序煎餅,利用字首反轉的動作以最少次 數的翻轉來完成完整的排序。考慮基因組方向性及複雜度的問題,分成有方向性

(19)

11

題 , 之 後 慢 慢 延 伸 數 種 翻 轉 方 法 及 規 則 。 一 開 始 於 1979 年 Gates 和 Papadimitriou[16],首先提出啟發式演算法(Heuristic Algorithms);在 1993 年,

Heydari[17]提出另一種字首反轉排序問題,證明其為 NP-complete 問題。於 2005 年, Fischer 和 Ginzinger[7]提出近似值為 2 的逼近演算法;在 2009 年,Chitturi[11]

針對上限值又提出有效率的啟發式演算法。

給一亂序排列π=(4, 3, 2, 1, 7, 6, 8, 10, 9, 5),先將(4, 3, 2, 1, 7, 6, 8, 10, 9)反 轉讓 4 和 5 連接;在將(9, 10)反轉讓 8 和 9 相連接;在來讓(10, 9, 8, 6, 7, 1, 2, 3, 4, 5)全翻;在將(5, 4, 3, 2, 1 )反轉讓 5 和 7 相連接;在將(1, 2, 3, 4, 5, 7, 6 )反轉讓 1 和 8 相連接;然後(6, 7)反轉讓 6 和 5 相連接;最後(7, 6, 5, 4, 3, 2, 1 )反轉讓 7 和 8 相連接,經過七次無向字首反轉動作,最後變成完全排列π=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10 )。

(20)

圖 1.9 : 無向字首反轉

(21)

13

1.4 燃燒的煎餅問題

燒焦的煎餅(Burnt Pancake)[18-21],目前有研究的又細分為 3 項:繞線

( Routing )、 容 錯 繞 線 ( Fault-Tolerant routing )、 集 群 容 錯 繞 線 ( Cluster Fault-Tolerant routing),燒焦的煎餅問題涉及到一疊大小不同的煎餅,每一個都 各有金黃色與燒焦的一面。目標是要將這一疊煎餅排序,讓最大的煎餅在最底 下,而且所有的薄煎餅都是金黃色那一面朝上。每次翻轉都會使一個或數個連續 不斷的煎餅順序以及方向顛倒。目標是要在最少翻轉次數下將它們疊成正確的一 堆。

(22)

1.5 研究目的與動機

最近研究平行計算越來越重要,也有許多網路結構被發表,可是會出現許多 故障的節點,因為在平行網路上會故障好幾個節點的低率很低,所以我們討論如 果只故障一個節點的演算法。目前我們以 Burnt Pancake 和 Pancake 做研究,表 1.1 的 Burnt Pancake 在 1993 年 David[19]提出沒有故障的節點時間複雜度 O(n²) 長度為 2n 的算法,Iwasawa 在 2010 年提出[23],對 n- 1 故障節點,路徑的長度 最多為 2n + 4 之間的任何對非故障節點其時間複雜度為 O(n²),然後在 2009 年 Keiichi Kaneko[6, 21]提出了另一種算法在 n 階燃燒煎餅圖,這是一個互連網路,

對於任意非故障節點,他的演算法為一個 n - 1 壞群群間直徑為 3 的路徑長度最 多為 2n+10,時間複雜度為 O(n²)。我們在本篇論文中提出了一個有效率的演算 法來處理當錯誤節點為一個的時候,n 層燃燒煎餅圖中點對點容錯繞線問題,其 路徑長度上限為 2n + 2,時間複雜度為 O(n²)。

表 1.2 Pancake 的圖表中在 1979 年 Gates[16]提出沒有壞點,時間複雜度為 O(n)長度為 5(+1)/3,在 2007 年 Koganei-shi[22]提出 n – 2 壞點,路徑長度上限為 [5(n+1)/3]+(8/3)時間複雜度為 O(n) 演算法;以及 n-2 壞群群間直徑為 2 路徑長 度上限為[5(n+1)/3]+(7) 時間複雜度為 O(n)演算法。

(23)

15

表 1.1 : 燃燒煎餅圖

表 1.2 : 煎餅圖

沒壞掉的點 一個壞點 n-2 壞點 n-2 壞群

直徑長度 2 演算法時

間複雜度

O(n) O(n) O(n) O(n)

路徑長度 5(n+1)/3 [5(n+1)/3]+(4/3) [5(n+1)/3]+(8/3) [5(n+1)/3]+(7) 沒壞掉的點 1 個壞點 n-1 壞點 n-1 壞群

直徑長度 3 演算法時

間複雜度

O(n²) O(n²) O(n²) O(n²)

路徑長度 2n 2n+2 2n+4 2n+10

(24)

1.6 章節綱要

本篇論文的結構,首先在第一章中介紹何謂基因重組,如何將反轉運用在基 因序列上,進而談到字首反轉以及燃燒煎餅的問題,再來提到我們的研究目的,

並且將相關研究論文加以整理。

第二章說明煎餅圖上之最短路徑演算法,首先從符號表示來定義,進而談到 Cohen 跟 Blum 於 1993 年[19]演算法提出沒有故障的節點時間複雜度 O(n²)長度 為 2n 的算法,最後執行提出之範例。

第三章因為在平行網路上會故障好幾個節點的低率很低,所以我們討論如果 只故障一個節點的演算法。我們提出另一演算法並詳細解釋,提出 n 層燃燒煎餅 圖中點對點容錯繞線問題,其路徑長度上限為 2n + 2,時間複雜度為 O(n²)。最 後,第四章以我們的演算法提出結論與討論未來展望。

(25)

17

第二章 煎餅圖上之最短路徑演算法

利用煎餅圖排列,可將序列反轉過程的點跟邊連接起來,因為有正負號的問 題形成燃燒煎餅圖 Bn (Burnt Pancake),”n”代表 1 2 … n。當 n 為” 1 ”時稱為 B1, 當 n 為” 2 ”時稱為 B2,如圖 2.1。

圖 2.1 : 燃燒煎餅圖 B2

在燃燒煎餅圖上(Brunt Pancake Graph),假設序列長度為 n,煎餅圖表示為 Bn,所有可能排列形成點集合(Vertex Set),所以共有 n!個點。每個點可能的字首 反轉長度為 2 到 n,可連接 n 條邊(Edges),所以共有 n!×2n 個點。圖 2.1 為燃燒 煎餅圖 B3,其中六個子圖分別表示最後位置的數字編號。煎餅圖直徑(Diameter of Pancake Graph)假設序列長度為 n,煎餅圖 Bn由完全排列π=(1 2 … n)出發拜訪所 有點,最遠的拜訪路徑長度即為 Bn的直徑(Diameter)。

(26)

圖 2.2 : 燃燒煎餅圖 B3

(27)

19

2.1 符號定義

首先我們先定義包括燃燒煎餅圖上的符號,設 n=(1,2…………n)。定義一個 序列 n 的整數 n = (1, 2, ………n) ,滿足 n=(|1|, |2|………|n|),如圖 2.2 n=(-4,-3,1,2,5) 我們先翻轉(-4,-3,1,2)變成(-2,-1,3,4,5),在翻轉(1,2)就可得到正確的序列這就是有 方向的字首反轉。

圖 2.3 :有方向之字首反轉

由剛剛燃燒煎餅圖 B2我們可以遞回出燃燒煎餅圖 B3,後面加上 3 能形成 B3(3)子圖。以此類推後面加上 2 形成 B3(2)子圖,任何一點全翻能到另一子圖全 部 6 子圖建構出燃燒煎餅圖 B3

(28)

2.2 一對一無故障節點演算法

Cohen 跟 Blum 於 1993 年[19]提出沒有故障的節點時間複雜度 O(n²)長度為 2n 的算法,分為 4 大類情況條件(Case)每大類又細分不同情況。

根據演算法,設 p 是序列中最大數,要注意的是 p + 1 需上下顛倒除非 p = n:

1. 如果在序列中-(p + 1)小於 p 的話:

圖 2.4 : Cohen 跟 Blum 之 Case1 2. 如果在序列中-(p + 1)大於 p 的話:

圖 2.5 : Cohen 跟 Blum 之 Case2

(29)

21

圖 2.6 : Cohen 跟 Blum 之 Case3

4. 如果所有的煎餅都往下(負號),在序列中-(p + 1)大於-p:(首先先全翻,然後 n - 1 往下翻,重複這二個動作)。

圖 2.7 : Cohen 跟 Blum 之 Case4

(30)

2.3 執行結果

圖 2.8 為根據以上之演算法我們舉例實際來做反轉排序:

 首先給定一段排列π=(1, 4, 3, 5, 2),一開始用上述之演算法第三項,

找出序列中最大數 5 往上翻在全翻已經讓數字 5 在序列最底端,形成排 列π=(-2, 1, 4, 3, 5)。

 排列π=(-2, 1, 4, 3, 5),也是運用上述之演算法第三項,找出序列中 最大數 4 往上翻在全翻已經讓數字 4 在序列中的底端,形成排列π=(-3, -2, 1, 4, 5)。

 排列π=(-3, -2, 1, 4, 5),運用上述之演算法第二項,讓(-3, -2, 1)往上 翻,形成排列π=(-1, 2, 3, 4, 5)。

 排列π=(-1, 2, 3, 4, 5),再根據上述演算法之第二項,(-1)自己翻轉,

形成排列π=(1, 2, 3, 4, 5)。

圖 2.9 如果序列全部符號都是負號,根據上述之演算法我們實際來舉例:

 首先給定一段排列π=(-1, -2, -3),先全部翻轉,然後 n-1 在往下翻,

重複這二個動作。運用上述之演算法第四項,先全翻形成序列π=(3, 2, 1)。

 序列π=(3, 2, 1),在 n-1 往下翻形成序列π=(-2, -3, 1),在全翻一 此類推,重複這二個動作,最後形成序列π=(1, 2, 3)。

(31)

23

圖 2.8 : Cohen 跟 Blum Case1 提出沒有故障的演算法

圖 2.9 : Cohen 跟 Blum 提出沒有故障的演算法(都是負號)

(32)

第三章 我們的演算法

由於最近研究平行計算越來越重要,也有許多網路結構被發表,因為在平行 網路上會故障好幾個節點的低率很低, 所以我們討論如果只故障一個節點找出 一條能夠避開錯誤節點,正確的由起始節點繞行到目標節點的路徑的演算法。我 們以燃燒的煎餅做研究,Cohen 跟 Blum 於 1993 年[19]提出沒有故障的節點時間 複雜度 O(n²)長度為 2n 的算法,然後在 2009 年 Keiichi Kaneko[6,22]提出了另一 種算法在 n 層燃燒煎餅圖,這是一個互連網路,對於任意非故障節點,他的算法 為 n – 1 壞群及群間直徑為 3 的狀態下路徑長度最多為 2n + 10 它們之間其時間 複雜度為 O(n²)。接著他又在 2010 年[23]提出對 n - 2 故障節點,一個無故障路徑 的長度至多為 2n + 4 其時間複雜度為 O(n²)。我們在本篇論文中提出了一個有效 率的演算法來處理當錯誤節點為一個的時候,n 層燃燒煎餅圖中點對點容錯繞線 問題如圖 3.1,其路徑長度上限為 2n + 2,時間複雜度為 O(n²)。

3.1 符號定義

在我們的演算法中,利用字首反轉來排序,其最終目的是要將排列反轉成完 全排列 π,給一個亂序煎餅 π,利用字首反轉排序到完全排序以最少次數的翻 轉動作來完成,以數字來說就是給定一排列 π =(4, 1, 2, 3, 5 )利用字首反轉的動 作,經過 2 次無向反轉,最後變成完整排序 π =(1, 2, 3, 4, 5 )。利用字首反轉的動 作,讓整段序列變為完全排序。舉例給一個亂序排列(4, 1, 2, 3, 5)利用字首反轉 動作先翻(4, 1, 2, 3)變成(3, 2, 1, 4, 5);在翻(3, 2, 1)形成(1, 2, 3, 4, 5 )此基因序列為 完全排序。

(33)

25

圖 3.1 : 演算法總圖

(34)

圖 3.2 : 我們的演算法 Case1~4

(35)

27

圖 3.3 : 我們的演算法 Case5~7

(36)

圖 3.4 : 我們的演算法 Case8~11

以上我們把演算法區分為 3 大區塊,分別為 Case1~4、Case5~7、Case8~11,

接下來我們會每個 Case 詳細解釋步驟及最大上限長度跟時間複雜度結果。

(37)

29

3.2 啟發式演算法之執行程序

執行我們的演算法時,以下會有不同狀態的原始節點”s” (start),節點序列為

(s1,s2,...,sn-1,sn);目標節點”t” (target),節點序列為(t1,t2,...,tn-1,tn);

及錯誤節點”f” (faulty),節點序列為(f1,f2,...,fn-1,fn)。首先將其算法跟細節 分類成十一大類情況條件(Case),根據這些情況我們可算出較短的翻轉路徑,

解釋如下:

Case 1 t  Bn(sn), f  Bn(sn),|t1 = f1|,如圖 3.5 節點 s,t,f,在同一個子圖內 Bn(sn),

先判斷 s(n)如果為負號需自己先翻轉一次(虛線),然後 s(n)跟 t(n)做字首反 轉到新的子圖 B ),我們直接運用 Cohen 跟 Blum 的演算法即可。路 徑長度最多為 2(n - 1) + 2 或 3 等於 2n 或 2n + 1,時間複雜度為 O(n²)。

圖 3.5 : Case1

(38)

Case 2 t  Bn(sn), f  Bn(sn), | t1  s1|,|t1 = f1|,如圖 3.6 節點 s,t,f,在同一個子圖 內 Bn(sn),先字首反轉 s(n),如果 tk = s1,我們就做 t(k, n)負號需自己先翻 轉一次(虛線),現在兩個節點都在新的子圖 Bn( ),我們直接運用 Cohen 跟 Blum 的演算法即可。路徑長度最多為 2(n–1) + 3 或 4 等於 2n + 1 或 2n + 2,時間複雜度為 O(n²)。

圖 3.6 : Case2

Case 3 t Bn(sn), f Bn(sn), |t1  s1|,| t1  f1|,如圖 3.7 節點 s,t,f,在同一個子圖 內 Bn(sn),先字首反轉 t(n),如果 t1 = sk,我們就做 s(k, n)為負號需自己先

翻轉一次(虛線),現在兩個節點都在新的子圖 B ),我們直接運用

Cohen 跟 Blum 的演算法即可。路徑長度最多為 2(n-1)+3 或 4 等於 2n+1 或 2n+2,時間複雜度為 O(n²)。

圖 3.7 : Case3

(39)

31

Case 4 t  Bn(sn), f Bn(sn),如圖 3.8 節點 s,t,在子圖Bn(sn),我們直接運用 Cohen 跟 Blum 的演算法即可。路徑長度最多為 2(n-1)等於 2n-2,時間複雜度 為 O(n²)。

圖 3.8 : Case4

Case 5 t  Bn(sn), f  Bn(tn),|t1 = sn|,如圖 3.9 我們首先判斷 t(n)如果為負號需 自己先翻轉一次(虛線),在做字首反轉,所以現在新的節點跟 s 在 Bn(sn),最後我們直接運用 Cohen 跟 Blum 的演算法即可。路徑長度最多 為 2(n-1)+1 或 2 等於 2(n-1)或 2n,時間複雜度為 O(n²)。

圖 3.9 : Case5

(40)

Case 6 t  Bn(sn), f  Bn(tn), |t1  sn|,|t1 = s1|,如圖 3.10 我們首先讓 s(n) 跟 t(n) 做字首反轉,判斷 s(n)如果為負號需自己先翻轉一次(虛線),所以現在這 兩個新節點在 B ),最後我們直接運用 Cohen 跟 Blum 的演算法即可。

路徑長度最多為 2(n-1)+2 或 3 等於 2n 或 2n+1,時間複雜度為 O(n²)。

圖 3.10 : Case6

Case 7 t  Bn(sn), f  Bn(tn),| t1  sn|, |t1  s1|,如圖 3.11 首先我們讓 t(n)做字首 反轉,如果 sk = t1,我們就做 s(k, n),負號需自己先翻轉一次(虛線),現 在兩個節點都在新的子圖 B ),我們直接運用 Cohen 跟 Blum 的演算 法即可。路徑長度最多為 2(n-1)+3 或 4 等於 2n+1 或 2n+2,時間複雜度 為 O(n²)。

圖 3.11 : Case7

(41)

33

Case 8 t  Bn(sn), f  Bn(tn), f  Bn(sn), |t1 = s1|,如圖 3.12 首先我們先讓 s(n) 跟 t(n) 做字首反轉,判斷 t(n)如果為負號需自己先翻轉一次(虛線),所以現 在這兩個新節點在 Bn(s1),最後我們直接運用 Cohen 跟 Blum 的演算法 即可。路徑長度最多為 2(n-1)+2 或 3 等於 2n 或 2n+1,時間複雜度為 O(n²)。

圖 3.12 : Case8

Case 9 t  Bn(sn), f  Bn(tn), f  Bn(sn), |t1  s1|,如圖 3.13 首先我們先讓 s(n)做字 首反轉,如果 tk = s1,我們就做 t(k, n),負號需自己先翻轉一次(虛線),現 在兩個節點都在新的子圖 Bn(s1),我們直接運用 Cohen 跟 Blum 的演算 法即可。路徑長度最多為 2(n-1)+3 或 4 等於 2n+1 或 2n+2,時間複雜度 為 O(n²)。

圖 3.13 : Case9

(42)

Case 10 t  Bn(sn), f  Bn(tn), f  Bn(sn), |t1 = sn|,如圖 3.14 我們先讓 t(n)做字首反 轉,判斷如果為負號需自己先翻轉一次(虛線),所以現在新節點跟 s 都 在 Bn(sn)上,我們直接運用 Cohen 跟 Blum 的演算法即可。路徑長度最 多為 2(n-1)+1 或 2 等於 2(n-1)或 2n,時間複雜度為 O(n²)。

圖 3.14 : Case10

Case 11 t  Bn(sn), f  Bn(tn), f Bn(sn), |t1  sn|,如圖 3.15 首先如果 tk = sn,我們

就做 t(k, n) ,負號需自己先翻轉一次(虛線),現在新的節點跟 s 都在新的

子圖 Bn(sn),我們直接運用 Cohen 跟 Blum 的演算法即可。路徑長度最 多為 2(n-1)+2 或 3 等於 2n 或 2n+1,時間複雜度為 O(n²)。

圖 3.15 : Case11

(43)

35

3.3 演算法分析整理

表 3.1 : 演算法分析表

Case 路徑長度 演算法時間複雜度

Case1 2n+1 O(n²)

Case2 2n+2 O(n²)

Case3 2n+2 O(n²)

Case4 2n-2 O(n²)

Case5 2n O(n²)

Case6 2n O(n²)

Case7 2n+1 O(n²)

Case8 2n+1 O(n²)

Case9 2n+2 O(n²)

Case10 2n O(n²)

Case11 2n+1 O(n²)

由上述 Bn,有一個故障的節點,考慮繞線算法由原節點到目的節點,最短 長度為 2n + 2,時間複雜度為 O(n²)。

(44)

第四章 結論

4.1 研究成果

本篇論文中,第一章先介紹何謂基因重組,再來談到基因重組之反轉排序以 及字首反轉排序問題,進而延伸討論如何運用字首反轉來解決燃燒煎餅圖問題,

在一個設計良好的穩定系統中,節點發生錯誤的機率極低,而且當發生錯誤時,

也能在極短時間修復,因此容錯繞線的問題大部分情況錯誤節點為一個,所以我 們討論如果只故障一個節點的演算法。我們以燃燒的煎餅做研究,Cohen 跟 Blum 於 1993 年[19]提出沒有故障的節點時間複雜度 O(n²)長度為 2n 的算法,然後 Iwasaki 和 Kaneko 於 2010 年在故障節點為 n - 1 提出了路徑長度上限為 2n + 4 複 雜度為 O(n²)演算法,然後 Iwasawa 等人提出了算法為 n - 1 群及群間直徑為 3 的 狀態下路徑長度最多為 2n + 10 它們之間其時間複雜度為 O(n²)。我們在本篇論 文中提出了一個有效率的演算法來處理當錯誤節點為一個的時候,n 層燃燒煎餅 圖中點對點容錯繞線問題,其路徑長度上限為 2n + 2,時間複雜度為 O(n²)。

(45)

37

4.2 未來研究方向

本論文研究主題為燃燒煎餅圖。n 層燃燒煎餅圖上,考慮點對點繞線,Cohen 跟 Blum 於 1993 年提出了 O(n²)演算法,路徑長度上限為 2n。在一個穩定系統中,

節點發生錯誤的機率極低,因此容錯繞線的問題大部分情況錯誤節點為一個。我 們在本篇論文中提出了一個有效率的演算法來處理當錯誤節點為一個的時候,n 層燃燒煎餅圖中點對點容錯繞線問題,其路徑長度上限為 2n + 2,時間複雜度為 O(n²),進一步分析錯誤節點 1 到 n-1 之間的演算法,或擴展 n-1 群之上限值。

(46)

參考文獻

[1] C. Makaroff and J. Palmer, “Mitochondrial DNA rearrangements and transcriptional alterations in the male sterile cytoplasm of Ogura radish”, Mol.

Cell. Biol., Vol. 8, pp. 1474-1480, 1988.

[2] N. Jones and P. Pevzner, “An introduction to bioinformatics algorithms”,MIT Press, Cambridge, 2004.

[3] S. Hannenhalli and P. Pevzner, “Transforming men into mice (polynomial algorithm for genomic distance problem)”, Proc. of the 36th Annual IEEE Symposium on Foundations of Computer Science, pp. 581-592, 1995.

[4] S. Hannenhalli and P. Pevzner, “Transforming cabbage into turnip: polynomial algorithm for sorting signed permutations by reversals”, J. of ACM, Vol. 46, pp.

1-27, 1999.

[5] S. Asai, Y. Kounoike, Y. Shinano, and K. Kaneko, “Computing the Diameter of 17-Pancake Graph Using a PC Cluster”, Lecture Notes in Computer Science, Vol.

4128, pp. 1114–1124, 2006.

[6] D. Bass and I. Sudborough, “Pancake problems with restricted prefix reversals and some corresponding cayley networks”, Journal of Parallel and Distributed Computing archive, Vol. 63, pp. 327-336, 2003

[7] J. Fischer and S. Ginzinger, “A 2-approximation algorithm for sorting by prefix reversals”, Proc. of ESA: 13th Annual European Symposium, pp. 415-425, 2005.

[8] M. Heydari and I. Sudborough, “Sorting by prefix reversals is NP-complete”, to be submitted, 1993.

[9] A. Caprara, “Sorting by reversals is difficult”, Proc. of 1st ACM Conference on Research in Computational Molecular Biology, pp. 75-83, 1997.

[10] Y. Kounoike, K. Kaneko, and Y. Shinano, “Computing the diameters of 14 and

(47)

39

15 pancake graphs”, Proceedings of the International Symposium on Parallel Architectures, Algorithms and Networks, pp. 490–495, 2005.

[11] B. Chitturi, et al., “An (18/11) n upper bound for sorting by prefix reversals”, Theoretical Computer Science, Vol. 410, pp.3372-3390, 2008.

[12] V. Bafna and P. Pevzner, “Genome rearrangements and sorting by reversals”, SIAM J. on Computing, Vol. 25, pp. 272-289, 1996

[13] D. Christie, “A 3/2 Approximation algorithm for sorting by reversals”, Proc. of 9th ACM-SIAM SODA, pp. 244-252, 1998.

[14] H. Sturtevant and T. Dobzhansky, “Inversions in the third chromosome of wild races of Drosophila pseudoobscura, and their use in the study of the history of the species”, Proc. of the National Academy of Sciences of the United States of America, Vol. 22, pp. 448-450, 1936.

[15] P. Berman, S. Hannenhalli and M. Karpinski, “1.375-approximation algorithm for sorting by reversals”, Lecture Notes in Computer Science, Vol. 2461, pp.

200-210, 2002.

[16] W. Gates, and C. Papadimitriou, “Bounds for sorting by prefix reversal”, Discrete Math., pp. 47–57, 1979.

[17] M. Heydari and I. Sudborough, “Sorting by prefix reversals is NP-complete”, to be submitted, 1993.

[18] C. Chin, T. Weng, L. Hsu, and S. Chiou, “The spanning connectivity of the burnt pancake graphs”, IEICE Trans. Inf. and Systems, pp. 389–400, 2009.

[19] D. Cohen, and M. Blum, “On the problem of sorting burnt pancakes”, Discrete Appl. Math., pp. 105–120, 1995.

[20] J. Mao, and C. Yang, “Shortest path routing and fault-tolerant routing on de Bruijn networks”, Networks, pp. 207–215, 2000.

[21] K. Kaneko, “ An algorithm for node-to-node disjoint paths problem in burnt

(48)

pancake graphs “, IEICE Trans. Inf. and Systems, pp. 306–313, 2007.

[22] T. Iwasaki, and K. Kaneko, “A fault-tolerant routing algorithm of burnt pancake graphs” , Proc. 2009 Int’l Conf. Parallel and Distributed Processing Techniques and Applications, pp. 307–313 , 2009.

[23] K. Kaneko N. Sawada, and S. Peng, “Cluster fault-tolerant routing in pancake graphs”, Proc. 19th IASTED Conf.: Parallel and Distributed Computing and Systems, pp. 423–428, 2007.

[24] K. Kaneko, Hamiltonian cycles and Hamiltonian paths in faulty burnt pancake graphs”, IEICE Trans, Inf. and Systems, pp. 716–721, 2007.

[25] K. Kaneko, “An algorithm for node-to-set disjoint paths problem in burnt pancake graphs”, IEICE Trans. Inf. and Systems, pp. 2588–2594, 2003.

[26] K. Qiu, H. Meijer, and S. Akl, “Parallel routing and sorting on the pancake network”, Proc. the Third International Conference on Computing and Information, Lecture Notes in Computer Science, pp. 360-371, 1991.

[27] L. Gargano, U. Vaccaro, and A. Vozella, ” Fault tolerant routing in the star and pancake interconnection networks”, Inf. Process. Lett, pp. 315–320, 1993.

[28] Q.Gu, “Cluster fault-tolerant routing in star graphs”, Networks, pp. 83–90, 2000.

[29] Q.Gu, and S. Peng, “Optimal algorithms for node-to-node fault tolerant routing in hypercubes”, The Computer Journal, pp. 626–629, 1996.

[30] Q.Gu, and S. Peng, “Node-to-node cluster fault tolerant routing in star graphs”, Inf. Process. Lett, pp. 29–35, 1995.

[31] S. Akers, and B. Krishnamurthy, “A group-theoretic model for symmetric interconnection networks”, IEEE Trans. Computers, pp. 555–566, 1989.

[32] S. Akers, and B. Krishnamurthy , “A group theoretic model for symmetric interconnection networks”, Proc. 1986 International Conference on Parallel

Figure

Updating...

References

Related subjects :