IMPLEMENTASI PROGRAM DINAMIS DENGAN ALGORITMA NEEDLEMAN-WUNSCH PADA PENSEJAJARAN DNA DAN PROTEIN

dokumen-dokumen yang mirip
Penerapan Algoritma Needleman-Wunsch sebagai Salah Satu Implementasi Program Dinamis pada Pensejajaran DNA dan Protein

Penerapan Algoritma Pencocokan String Knuth-Morris-Pratt Sebagai Algoritma Pencocokan DNA

Penerapan Algoritma Program Dinamis pada Penyejajaran Sekuens dengan Algoritma Smith Waterman

DYNAMMIC PROGRAMMING DALAM MENENTUKAN ARTI URUTAN UNTAIAN GEN

PERBANDINGAN APLIKASI ALGORITMA BRUTE-FORCE DAN KOMBINASI ALGORITMA BREADTH FIRST SEARCH DAN GREEDY DALAM PENCARIAN SOLUSI PERMAINAN TREASURE HUNT

APLIKASI DYNAMIC PROGRAMMING DALAM ALGORITMA NEEDLEMAN-WUNSCH UNTUK PENJAJARAN DNA DAN PROTEIN

PENGGUNAAN ALGORITMA BRANCH AND BOUND UNTUK MENYELESAIKAN PERSOALAN PENCARIAN JALAN (PATH-FINDING)

APLIKASI ALGORITMA PENCOCOKAN STRING KNUTH-MORRIS-PRATT (KPM) DALAM PENGENALAN SIDIK JARI

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

PENERAPAN ALGORITMA BRANCH AND BOUND DALAM MENENTUKAN RUTE TERPENDEK UNTUK PERJALANAN ANTARKOTA DI JAWA BARAT

Algoritma Pencarian String Knuth-Morris-Pratt Dalam Pengenalan Tulisan Tangan

PERBANDINGAN ALGORITMA GREEDY DAN BRUTE FORCE DALAM SIMULASI PENCARIAN KOIN

Analisis Algoritma Knuth Morris Pratt dan Algoritma Boyer Moore dalam Proses Pencarian String

IMPLEMENTASI ALGORITMA BREADTH FIRST SEARCH DAN STRING MATCHING PADA SISTEM PAKAR

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

SOLUSI PERMAINAN CHEMICALS DENGAN ALGORITMA RUNUT BALIK

dengan Algoritma Branch and Bound

Menentukan Susunan Terbaik Tim Proyek dengan Algoritma Branch and Bound

Penerapan Pohon dengan Algoritma Branch and Bound dalam Menyelesaikan N-Queen Problem

Implementasi Pencocokan String Tidak Eksak dengan Algoritma Program Dinamis

Penggunaan Algoritma Runut-balik Pada Pencarian Solusi dalam Persoalan Magic Square

Menentukan Titik Evakuasi Selanjutnya bagi Sekelompok Regu Tim SAR dengan Algoritma Branch and Bound

Algoritma Branch & Bound untuk Optimasi Pengiriman Surat antar Himpunan di ITB

METODE BRANCH AND BOUND UNTUK MENEMUKAN SHORTEST PATH

PENGGUNAAN ALGORITMA HUNGARIAN DALAM MENYELESAIKAN PERSOALAN MATRIKS BERBOBOT

Pemanfaatan Algoritma BFS pada Graf Tak Berbobot untuk Mencari Jalur Terpendek

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

PENGGUNAAN ALGORITMA APOSTOLICO-CROCHEMORE PADA PROSES PENCARIAN STRING DI DALAM TEKS

Pemanfaatan Pohon dalam Realisasi Algoritma Backtracking untuk Memecahkan N-Queens Problem

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Pemecahan Masalah Longest Increasing Subsequence Memanfaatkan Program Dinamis dan Binary Search

Algoritma Penentuan Graf Bipartit

Penggunaan Algoritma Pathfinding pada Game

Pendekatan Dynamic Programming untuk Menyelesaikan Sequence Alignment

PENERAPAN ALGORITMA RUNUT BALIK DALAM PERMAINAN TEKA-TEKI SILANG

Penerapan Algoritma Branch and Bound untuk Penentuan Jalur Wisata

Memecahkan Puzzle Hidato dengan Algoritma Branch and Bound

Penggunaan Algoritma Knuth-Morris-Pratt untuk Pengecekan Ejaan

Branch and Bound untuk Rute Terpendek Tur Pengenalan Labtek V Gedung Benny Subianto Chita Najmi Nabila /

Analisis Penggunaan Algoritma Greedy dalam Program Solusi Fisibel Basis Awal Transportasi

Menyelesaikan Permainan Wordament Menggunakan Algoritma Backtracking

Penilaian Ujian Tertulis Menggunakan Algoritma Pattern Matching IF3051 Strategi Algoritma

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

Solusi Terbaik Permainan Rocket Mania Deluxe dengan Pendekatan Algoritma BFS dan Algoritma Greedy

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

Aplikasi Algoritma Pencarian String Dalam Sistem Pembayaran Parkir

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

Analisis Penerapan Algoritma Backtracking Pada Pencarian Jalan Keluar di Dalam Labirin

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

PENGGUNAAN EXHAUSTIVE SEARCH SEBAGAI SOLUSI PERMAINAN SCRAMBLE

Pencarian Solusi Optimal dalam Permainan Congklak dengan Program Dinamis

TECHNICAL REPORT PENGGUNAAN ALGORITMA PENCOCOKAN STRING BOYER-MOORE DALAM MENDETEKSI PENGAKSESAN SITUS INTERNET TERLARANG

Penerapan Algoritma Branch and Bound untuk Optimasi Rute Penempelan Poster di Papan Mading ITB

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Menentukan Susunan Pengambil Tendangan Penalti dalam Skema Adu Penalti pada Pertandingan Sepak Bola dengan Algoritma Branch and Bound

Penggunaan Algoritma Pencocokkan Pola pada Sistem Barcode

PENCARIAN MAKSIMUM CLIQUE DALAM GRAF DENGAN MENGGUNAKAN ALGORITMA BRANCH AND BOUND

Strategi Algoritma Penyelesaian Puzzle Hanjie

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

Penerapan Algoritma Pencocokan String Boyer-Moore dan Knuth-Morris-Pratt (KMP) dalam Pencocokkan DNA

ALGORITMA MENCARI LINTASAN TERPENDEK

Kombinasi Algoritma Pattern Matching dan BFS-DFS pada aplikasi Music Discovery

Modifikasi String dan Pattern untuk Mempercepat Pencocokan Rantai Asam Amino pada Rantai DNA

Penyelesaian Sum of Subset Problem dengan Dynamic Programming

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Permainan Pencarian Kata

Aplikasi Algoritma Pencocokan String dan Algoritma Runut Balik dalam Konversi Romaji ke Hangul

Penerapan Algoritma Brute Force di Permainan Nonogram

Aplikasi Algoritma Traversal Dalam Binary Space Partitioning

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

Algoritma Branch and Bound dalam Kegunaannya Memecahkan Assignment Problem

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

I. PENDAHULUAN II. DASAR TEORI. Contoh lainnya: Solusi: 0= V,1= I,2= O,3= R, 4= N,5= L,7= A,8= F,9= E.

Penerapan Algoritma Brute Force pada Teka-teki Magic Square 3 x 3

PENERAPAN ALGORITMA RUNUT-BALIK (BACKTRACKING) DALAM PENYELESAIAN PERMAINAN SUDOKU

Penggunaan Strategi Algoritma Backtracking pada Pencarian Solusi Puzzle Pentomino

PENERAPAN ALGORITMA GREEDY DALAM PENCARIAN SOLUSI TERBAIK PADA PERMAINAN TETRIS

VARIASI PENGGUNAAN FUNGSI HEURISTIK DALAM PENGAPLIKASIAN ALGORITMA A*

Penggunaan Algoritma Greedy dalam Penyelesaian Masalah Transportasi

Penerapan Algoritma Greedy untuk Memecahkan Masalah Pohon Merentang Minimum

ALGORITMA RUNUT-BALIK UNTUK MENGGANTIKAN ALGORITMA BRUTE FORCE DALAM PERSOALAN N-RATU

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Penerapan Algoritma Brute-Force serta Backtracking dalam Penyelesaian Cryptarithmetic

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Pembentukan Pohon Pencarian Solusi dalam Persoalan N-Ratu (The N-Queens Problem)

Pembentukan pohon pencarian solusi dan perbandingan masingmasing algoritma pembentuknya dalam simulasi N-Puzzle

Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

Penerapan BFS dan DFS pada Pencarian Solusi

Eksplorasi Algoritma Brute Force, Greedy, dan Dynamic Programming untuk Persoalan Integer Knapsack

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

Penyelesaian Berbagai Permasalahan Algoritma dengan Kombinasi Algoritma Brute Force dan Greedy

PENGGUNAAN ALGORITMA BACKTRACKING DALAM PENCARIAN KOEFISIEN ROOK POLYNOMIAL

Penggunaan String Matching Dalam Mencari Kata Dalam Permainan Mencari Kata Dari Sebuah Matriks Huruf

Penerapan Algoritma Backtracking pada Pewarnaan Graf

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

Implementasi Brute Force pada Game Mahjong Titans

Menentukan Starting Lineup Futsal Terbaik dengan Algoritma Branch and Bound

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

Transkripsi:

IMPLEMENTASI PROGRAM DINAMIS DENGAN ALGORITMA NEEDLEMAN-WUNSCH PADA PENSEJAJARAN DNA DAN PROTEIN Joseph Rich Aryanto Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika, Institut Teknologi Bandung Jalan Ganesha 10 Bandung, Indonesia e-mail: if17060@students.if.itb.ac.id ABSTRAK Rangkaian DNA merupakan hal terpenting untuk semua jenis kehidupan di alam semesta. Karena itu, segala upaya untuk memahami DNA menjadi sangat penting, terutama untuk kemajuan bioinformatika. Di era modern saat ini, identifikasi apakah seseorang berkerabat langsung dengan orang lain, atau menentukan apakah suatu organisme merupakan anggota dari spesies tertentu, dapat dilakukan dengan berbagai cara. Selain melalui pencocokan sidik jari, pencocokan DNA (Deoxyribo Nucleic Acid) adalah salah satu cara yang paling ampuh dan teruji untuk mengidentifikasi mahluk hidup. Dalam proses pengujian kekerabatan langsung, DNA dari kedua orang tersebut akan disejajarkan. Apabila ditemukan ketidakcocokan melebihi batas toleransi tertentu, maka dapat dipastikan bahwa kedua orang tersebut tidak mungkin memiliki hubungan kekerabatan langsung. Sedangkan untuk pengujian keanggotaan spesies, DNA organisme uji disejajarkan dengan rangkaian umum DNA spesies dugaan. Salah satu metode yang digunakan dalam pensejajaran DNA adalah algoritma Needleman- Wunsch, yang merupakan perluasan algoritma pencocokan string pada teks atau barisan sebagai salah satu implementasi program dinamis. Algoritma Needleman- Wunsch dapat diterapkan karena pada dasarnya DNA adalah rangkaian lanjar ganda gugus-gugus karbon, dimana setiap gugus karbon dapat dianalogikan sebagai karakter, sehingga DNA dapat dianalogikan sebagai rangkaian karakter. Pendekatan serupa juga dapat diterapkan untuk mensejajarkan jenis-jenis protein, yang merupakan rangkaian asam amino, dimana asam amino, seperti DNA, merupakan rangkaian gugus-gugus karbon. Pada makalah ini akan dibahas bagaimana cara kerja algoritma Needleman-Wunsch, penerapannya dalam mensejajarkan DNA dan protein, serta kompleksitas ruang dan waktu algoritma tersebut. Kata kunci: DNA, protein, algoritma Needleman- Wunsch, program dinamis 1. PENDAHULUAN DNA (Deoxyribo Nucleic Acid) merupakan struktur informasi unik terkecil yang dimiliki oleh setiap organisme, yang diwariskan dari generasi ke generasi. DNA berbentuk rangkaian lanjar ganda yang tersusun atas empat jenis gugus karbon, yaitu Adenin (A), Sitosin (C), Timin (T), dan Guanin (G). Hal ini berarti, DNA dapat dinyatakan sebagai rangkaian karakter (string) dari empat kemungkinan karakter A, C, G, dan T. Pada sebagian besar organisme, pewarisan tersebut tidak dapat berlangsung 100% sempurna, karena terdapat faktor pembatas lingkungan, seperti mutasi dan degenerasi gen. Meskipun demikian, selalu terjamin bahwa sejumlah rangkaian DNA dalam batas tertentu, bergantung pada jenis organisme, diwariskan oleh suatu organisme kepada keturunan-keturunannya. Sejumlah organisme dengan tingkat keserupaan DNA tertentu membentuk suatu spesies. Dengan kata lain, setiap organisme suatu spesies pasti memiliki kecocokan DNA dalam batas tertentu dengan rangkaian umum DNA spesies tersebut. Oleh karena itu, ilmuwan dapat mengkategorikan suatu organisme ke dalam suatu spesies baru, apabila DNA organisme tersebut tidak cocok dalam setiap batas tertentu dengan DNA spesies-spesies yang telah terdefinisi sebelumnya. Sementara itu, protein merupakan rangkaian lanjar asam amino. Asam amino, sama halnya dengan DNA, merupakan rangkaian tiga gugus karbon, tiap gugus karbon merupakan salah satu dari gugus Adenin (A), Sitosin (C), Urasil (U), atau Guanin (G). 2. PENSEJAJARAN DNA DAN PROTEIN Dalam proses pencocokkan dua atau lebih DNA, tidak mungkin ditemukan kesamaan 100% karena seperti dijelaskan sebelumnya, DNA bersifat unik. Namun, karena panjang DNA (jumlah rangkaian gugus karbon) dua atau lebih organisme tidak selalu sama, proses yang digunakan bukanlah pembandingan, melainkan MAKALAH IF2251 STRATEGI ALGORITMIK TAHUN 2007

pensejajaran. Hal yang sama juga diterapkan dalam proses pencocokkan protein. Pensejajaran dua buah DNA adalah memberikan nilai kecocokan kedua DNA tersebut. Semakin tinggi nilainya, berarti kedua DNA tersebut semakin mirip satu sama lain, dan sebaliknya, semakin rendah nilainya, berarti kedua DNA tersebut semakin tidak mirip. Apabila panjang salah satu DNA (sebut DNA A) lebih panjang daripada DNA lainnya (sebut DNA B), maka kita dapat menyisipkan celah-celah kosong pada DNA B sehingga panjang DNA B menjadi sama dengan DNA A (celah-celah kosong tersebut disimbolkan dengan - ). Contoh-contoh pensejajaran 2 buah DNA : 1. DNA A = AGCAAGTGGAC, dan DNA B =ACCAAGTGGAC, maka kedua DNA tersebut hanya berbeda pada karakter kedua. Dengan demikian, dapat disimpulkan bahwa DNA A dan DNA B mirip, sehingga nilai kecocokan DNA A dan B tinggi. 2. DNA A = AGCAAGTGGAC, dan DNA B = GCTGTCCACGT, maka kedua DNA tersebut berbeda pada semua karakter. Dengan demikian, dapat disimpulkan bahwa DNA A dan DNA B sangat tidak mirip, sehingga nilai kecocokan DNA A dan B rendah. 3. DNA A = AGCAAGTGGAC, dan DNA B = ACAAGTGGAC, DNA A lebih panjang dari DNA B, sehingga kita harus menyisipkan karakter celah kosong ( - ) pada DNA B. Jika kita menyisipkan karakter celah kosong ( - ) sebelum karakter kedua DNA B, maka DNA B = A-CAAGTGGAC. Dengan penyisipan ini, DNA A dan DNA B hanya berbeda pada karakter kedua. Karena kita dapat menyisipkan celahcelah sedemikian hingga DNA A dan B mirip, dapat disimpulkan bahwa nilai kecocokan DNA A dan B tinggi. 3. METODE Apabila terdapat sub-bab, maka judul dari tiap sub-bab ditulis dengan tipe huruf Times New Roman dengan ukuran 12pt, cetak tebal, serta penomoran dengan huruf (1.1, 1.2, 1.3,... 2.1, 2.2,... ). 3.1 Pengertian Algoritma Needleman-Wunsch merupakan perluasan algoritma pencocokan string pada teks atau barisan sebagai salah satu implementasi program dinamis. Algoritma ini merupakan salah satu algoritma yang digunakan untuk menentukan tingkat kesamaan atau kecocokan dua buah teks. 3.2 Fungsi dan Nilai yang Digunakan Prosedur algoritma Needleman-Wunsch adalah sebagai berikut. Pertama-tama, tetapkan nilai untuk setiap kecocokan karakter, ketidakcocokan karakter, serta nilai penalti apabila salah satu karakter dari kedua teks yang dibandingkan digeser sehingga diganti dengan karakter celah kosong. Nilai kecocokan karakter boleh sama untuk setiap karakter, boleh tidak (bergantung definisi yang diinginkan). Nilai kecocokan (apabila dua karakter sama) haruslah ditetapkan sebagai suatu nilai positif. Hal ini disebabkan dua teks dikatakan semakin mirip jika nilai kecocokannya tinggi, sementara nilai kecocokan kedua teks tinggi apabila nilai kecocokan tiap karakter tinggi. Sebaliknya, nilai ketidakcocokan ditetapkan sebagai nilai negatif atau nol. Nilai ketidakcocokan karakter juga harus berlaku simetris, artinya jika ketidakcocokan karakter a dan b bernilai -10, maka ketidakcocokan karakter b dan a juga harus bernilai -10. Serupa dengan nilai kecocokan, nilai ketidakcocokan harus bernilai negatif atau nol karena ketidakcocokan karakter mengurangi kemiripan kedua teks. Adapun nilai penalti apabila salah satu karakter dari kedua teks yang dibandingkan digeser sehingga diganti dengan karakter celah kosong juga harus bernilai negatif. Hal ini disebabkan kita memerlukan upaya tambahan untuk menggeser karakter-karakter setelah celah yang disisipkan. Setelah ketiga nilai tadi ditetapkan, langkah selanjutnya adalah membentuk matriks berukuran jumlah baris = panjang teks pertama + 1, dan jumlah kolom = panjang teks kedua + 1.Tambahan satu kolom dan satu baris diperlukan untuk menjadi basis bagi kolom-kolom dan baris-baris selanjutnya. Apabila penomoran baris dan kolom dimulai dari nol, maka elemen matriks pada baris ke-i dan kolom ke-j (disimbolkan dengan Fij) menyatakan nilai kecocokan maksimum hingga karakter ke-i teks pertama dan karakter ke-j teks kedua. Basis untuk algoritma Needleman-Wunsch adalah : Fi0 = 0 untuk i = 1 sampai dengan length(a) F0j = 0 untuk j = 1 sampai dengan length(b) Rekurens untuk algoritma Needleman-Wunsch adalah mengisi semua elemen pada baris ke-1 sampai dengan baris ke-length(a), dengan aturan : Fij = max(fi-1,j-1 + S(AiBj), Fi,j-1 + d, Fi-1,j + d ), dengan S(AiBj) adalah nilai perbandingan (kecocokan atau ketidakcocokan) antara karakter ke-i teks A dan karakter ke-j teks B, dan d adalah nilai penalti karena salah satu

karakter di antara karakter ke-i teks A dan karakter ke-j teks B diganti oleh celah. Dalam setiap pengisian elemen matriks, Fungsi Fij selalu mendasarkan pada solusi optimum elemenelemen pada tahap sebelumnya (yaitu pada baris dan kolom sebelumnya). Dengan demikian, setiap elemen matriks Fij akan berisi nilai kecocokan maksimum hingga karakter ke-i teks A dan karakter ke-j teks B. Di akhir pengisian nilai elemen-elemen matriks, nilai elemen matriks pada baris ke3 length(a) dan kolom ke-length(b) akan menyatakan nilai kecocokan maksimum antara teks A dan teks B. Setelah matriks F terbentuk, maka langkah selanjutnya adalah menentukan jalur dari elemen pada baris kelength(a) dan kolom ke-length(b) (misal Fij) hingga elemen pada baris ke-0 dan kolom ke-0 (misal F00). Hal ini dapat dianalogikan dengan pencarian jalur dari simpul solusi ke simpul awal (akar) pada pohon yang dibangkitkan dengan algoritma Breadth First Search (BFS). Pencarian jalur ini dimungkinkan karena apabila kita mengambil sembarang elemen matriks F (misal Fij), maka kita dapat membandingkannya dengan nilai Fi-1,j-1 + S(AiBj), Fi,j-1 + d, dan Fi-1,j + d untuk menentukan dari mana nilai Fij berasal. Apabila dalam mencari jalur dari elemen Fij, terdapat lebih dari satu asal nilai Fij, maka hal ini mengakibatkan kita dapat menemukan lebih dari satu jalur menuju elemen F00. Pada kasus demikian, terdapat lebih dari satu solusi penyelesaian. Langkah terakhir setelah jalur dari elemen pada baris kelength(a) dan kolom ke-length(b) (misal Fij) hingga elemen pada baris ke-0 dan kolom ke-0 (misal F00) terbentuk adalah mencocokkan karakterkarakter kedua teks yang bersesuaian. Prosedur ini, dan juga prosedurprosedur sebelumnya, akan lebih jelas ditunjukkan pada Pseudo-code dan penerapan akan dibahas pada bagian selanjutnya. 3.3 Pseudo-Code Pseudo-code untuk membuat matriks F berdasarkan input teks A dan B adalah sebagai berikut : Procedure Fmatriks(input A, B : string, input/output F : matriks) I.S : Matriks kosong dengan ukuran length(a)+1 x length(b)+1 F.S : Matriks terisi sesuai ketentuan Algoritma Needleman-Wunsch, yaitu mengisi tiap elemen matriks dengan basis dan rekurens seperti dijelaskan pada bagian 3.2. Algoritma for i=0 to length(a) F(i,0) <- 0 for j=0 to length(b) F(0,j) <- 0 for i=1 to length(a) for j = 1 to length(b) Value1 <- F(i-1,j-1)+ S(A(i), B(j)) Value2 <- F(i-1, j) + d Value3 <- F(i, j-1) + d F(i,j) <- max(value1, Value2, Value3) End-Algoritma Pseudo-code untuk menyusun jalur dari elemen pada baris ke-length(a) dan kolom ke-length(b) (misal Fij) hingga elemen pada baris ke-0 dan kolom ke-0 (misal F00), sekaligus mencocokkan karakterkarakter A dan B adalah sebagai berikut : Procedure ScorePath(input A, B : string, input F : matriks, output AlignmentA, AlignmentB : string) I.S : Matriks sudah terisi F.S : Menciptakan jalur untuk penjajaran, AlignmentA dan AlignmentB berisi string dengan nilai kecocokan maksimum Algoritma AlignmentA <- "" AlignmentB <- "" i <- length(a) j <- length(b) while (i > 0 and j > 0) Score <- F(i,j) ScoreDiag <- F(i - 1, j - 1) ScoreUp <- F(i - 1, j) ScoreLeft <- F(i, j - 1) if (Score==ScoreDiag+S(A(i),B(j))) AlignmentA <- A(i)+AlignmentA AlignmentB <- B(j)+AlignmentB else if (Score == ScoreLeft + d) AlignmentA <- "-"+AlignmentA AlignmentB <- B(j)+AlignmentB Else if (Score == ScoreUp + d)

AlignmentA <- A(i)+AlignmentA AlignmentB <- "-"+AlignmentB while (i >= 0) AlignmentA <- A(i) + AlignmentA AlignmentB <- "-" + AlignmentB while (j >= 0) AlignmentA <- "-" + AlignmentA AlignmentB <- B(j) + AlignmentB End-Algoritma Keterangan : Dalam Pseudo-code ini, hanya diambil satu jalur solusi saja, dengan prioritas membandingkan kesamaan setiap elemen matriks dengan elemen di sebelah kiri atasnya, kemudian elemen di sebelah kirinya, dan terakhir elemen di sebelah atasnya. 3.4 Kompleksitas Kompleksitas waktu dan ruang algoritma Needleman- Wunsch adalah sebanding dengan besar matriks yang dibutuhkan untuk menampung elemenelemen berisi nilai kecocokan kedua teks yang dibandingkan. Apabila panjang teks pertama adalah m dan panjang teks kedua adalah n, maka ukuran matriks yang dibutuhkan adalah m x n. Dengan demikian, kompleksitasnya adalah O(mn). Adapun algoritma Brute Force untuk masalah ini (dengan asumsi bahwa m > n) memiliki kompleksitas O(m!/n!). Artinya, untuk nilai m dan n semakin besar, algoritma Needleman-Wunsch lebih mangkus daripada algoritma Brute Force. 3.5 Pensejajaran DNA dan Protein Tinjau DNA A = ATC dan DNA B = AGCT. Akan dihitung berapa nilai kecocokan maksimal kedua DNA tersebut, dan susunan dengan celah seperti apa yang dibutuhkan untuk mencapai nilai kecocokan maksimum tersebut. Definisikan nilai kecocokan setiap karakter adalah 5, nilai ketidakcocokan setiap karakter adalah -2, dan nilai penalti karena suatu karakter diganti celah adalah -3. Misalkan ditetapkan pula batas minimal nilai kecocokan kedua DNA tersebut agar termasuk dalam spesies yang sama adalah 4. Dengan demikian, apabila nilai kecocokan maksimal kedua DNA tersebut lebih besar atau sama dengan 4, maka dapati disimpulkan bahwa A dan B merupakan satu spesies. Bentuk suatu matriks berukuran jumlah kolom = panjang DNA A + 1, dan jumlah baris = panjang DNA B + 1. Jadi, matriks yang terbentuk memiliki jumlah kolom = 4 + 1 = 5. Isi setiap elemen pada baris ke-0 dan kolom ke-0 dengan 0. A 0 Selanjutnya, isi elemen pada baris ke-1 dan kolom ke-1 sesuai aturan Needleman-Wunsch. F00 = F10 = F01 = 0. Sementara itu, karena karakter ke-1 DNA A = karakter ke 1 DNA B, maka S(A1B1) = 5. Oleh karena itu, F11 = max(f00 + S(A1B1), F10 + d, F01 + d ) = max(0 + 5, 0 + (-3), 0 + (-3)) = max(5, -3,-3) = 5. A 0 5 Selanjutnya, isi elemen pada baris ke-1 dan kolom ke-2. F01 = F02 = 0, sementara F11 = 5. Sementara itu, karena karakter ke-1 DNA A tidak sama dengan karakter ke-2 DNA B, maka S(A1B1) = -2. Oleh karena itu, F11 = max(f01 + S(A1B2), F11 + d, F02 + d) = max(0 + (-2), 5 + (-3), 0 + (-3)) = max(-2, 2,-3) = 2. A 0 5 2 Apabila proses ini diteruskan, maka kita dapat memperoleh matriks yang merepresentasikan nilai kecocokan DNA A dan B sebagai berikut : A 0 5 2-1 -2 2 3 0 4-1 0 8 5 Karena elemen pada baris ke-length(a) dan kolom kelength(b) bernilai 5, maka nilai kecocokan maksimum kedua DNA tersebut adalah 5. Dalam menentukan nilai

setiap elemen matriks, dapat pula diberi tanda panah untuk mengetahui dari elemen mana nilai elemen matriks tersebut berasal. Hal ini akan memudahkan dalam menentukan jalur dari elemen pada baris ke-length(a) dan kolom ke-length(b) (misal Fij) hingga elemen pada baris ke-0 dan kolom ke-0 (misal F00), karena kita cukup menelusuri tanda panah tersebut. Jalur untuk matriks tersebut tampak pada matriks di bawah ini : A 0 5 2-1 -2 2 3 0 4-1 0 8 5 Langkah terakhir adalah mencocokkan karakter-karakter DNA A dan B sesuai jalur pada matriks tersebut. Pertama, tinjau elemen pada baris ke-1 dan kolom ke-1. Karena baris ke-1 dan kolom ke-1 belum digunakan oleh kedua teks, maka karakter pertama DNA A setelah pensejajaran adalah A dan karakter pertama DNA B setelah pensejajaran adalah A. Selanjutnya, dari elemen tersebut kita berpindah ke elemen pada baris ke-2 kolom ke-2. Karena baris ke-2 dan kolom ke-2 belum digunakan oleh kedua teks, maka karakter kedua DNA A setelah pensejajaran adalah T dan karakter kedua DNA B setelah pensejajaran adalah G. Selanjutnya, dari elemen tersebut kita berpindah ke elemen pada baris ke-3 kolom ke-3. Karena baris ke-3 dan kolom ke-3 belum digunakan oleh kedua teks, maka karakter ketiga DNA A setelah pensejajaran adalah C dan karakter ketiga DNA B setelah pensejajaran adalah C. Selanjutnya, kita berpindah ke elemen pada baris ke-3 kolom ke-4. Baris ke-3 sudah digunakan oleh DNA A, sementara kolom ke-4 belum digunakan oleh DNA B. Oleh karena itu, karakter keempat DNA A setelah pensejajaran adalah - dan karakter keempat DNA B setelah pensejajaran adalah T. protein. Di masa yang akan datang, pengembanganpengembangan algoritma ini masih mungkin dilakukan, sebagai contoh meminimalisasi matriks yang diperlukan. Dengan demikian, proses pensejajaran DNA dan protein yang sangat diperlukan dalam menentukan kekerabatan, menentukan jenis spesies makhluk hidup, serta mengolah protein, dapat dijalankan dengan lebih baik dan mangkus. REFERENSI [1] Pollar, Bergman, Stoye, Celniker, dan Eisen, Benchmarking Tools for the Alignment of Functional Noncoding DNA, http://rana.lbl.gov/alignmentbenchmarking/methods.html, diakses tanggal 02 Januari 2010 pukul 14.00. [2] Wikipedia, Needleman-Wunsch Algorithm, http://en.wikipedia.org/wiki/needleman- Wunsch_algorithm.htm, diakses tanggal 02 Januari 2010 pukul 14.30 [3] Yun Xing, Sequence Alignment Algorithm, http://icl.pku.edu.cn/yujs/papers/pdf/seqali.pdf, diakses tanggal 02 Januari 2010 pukul 16.00 [4] Zhenghong Zhao, Sequence Alignment, http://www2.cs.uh.edu/~zhenzhao/review/alignment.htm, diakses tanggal 02 Januari 2010 pukul 18.00 [5] L. Gonick dan M. Wheelis, Kartun Biologi Genetika, KPG, Gramedia, Jakarta, 2003 [6] Rinaldi Munir, Diktat Kuliah IF2251 Strategi Algoritmik, Program Studi Teknik Informatika ITB, 2005 Dengan demikian, nilai kecocokan maksimum DNA A dan DNA B adalah 5, dan ini dicapai oleh DNA A = ATCdan DNA B = AGCT. Karena nilai kecocokan maksimum kedua DNA tersebut lebih besar daripada batas minimal nilai kecocokan kedua DNA tersebut agar termasuk dalam spesies yang sama, maka dapat disimpulkan bahwa A dan B merupakan satu spesies. 4. KESIMPULAN Algoritma Needleman-Wunsch yang merupakan perluasan algoritma pencocokan string pada teks atau barisan sebagai salah satu implementasi program dinamis memiliki kompleksitas waktu dan ruang O(mn) dan lebih baik daripada algoritma Brute Force. Oleh karena itu, algoritma ini merupakan algoritma yang cukup baik apabila diterapkan dalam proses pensejajaran DNA dan