Professional Documents
Culture Documents
Bioinformatički Algoritmi Analiza DNK Sekvenci
Bioinformatički Algoritmi Analiza DNK Sekvenci
Petar Velikovi
Matematika gimnazija, Nedelja informatike
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Uvod u bioinformatiku
DNK
Sinteza proteina
Bioinformatika
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Uvod u bioinformatiku
DNK
Sinteza proteina
Bioinformatiki algoritmi
Bioinformatiki algoritmi pripadaju raznim oblastima:
Teorija grafova;
Vetaka inteligencija;
Analiza podataka (data mining);
Obrada slika;
Raunarska simulacija;
...
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Uvod u bioinformatiku
DNK
Sinteza proteina
DNK
Dezoksiribonukleinska kiselina (deoxyribonucleic acid,
skraeno DNK/DNA): molekul koji u sebi sadri genetike
instrukcije neophodne za razvoj i funkcionisanje gotovo svih
ivih organizama.
Sastoji se od dve niti isprepletane u formi dvostrukog heliksa:
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Uvod u bioinformatiku
DNK
Sinteza proteina
Transkripcija gena
Glavna funkcija DNK je uvanje "recepta" za sintezu proteina.
Proteini se dobijaju 3D uvrtanjem nekog niza amino-kiselina;
deo DNK koji sadri informacije neophodne za sintezu jednog
takvog niza se naziva gen.
Sinteza proteina poinje prepisivanjem (transkripcijom)
neophodnog gena u RNK molekul (informacioni
RNK/messenger RNA (iRNK/mRNA)).
Ribonukleinska kiselina (ribonucleic acid, skraeno
RNK/RNA) je molekul slian DNK, s tim to je timin zamenjen
uracilom (U) i sastoji se od samo jedne niti.
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Uvod u bioinformatiku
DNK
Sinteza proteina
Translacija u protein
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Uvod u bioinformatiku
DNK
Sinteza proteina
DNK
transkripcija
GUGCAUCUGACUCCUGAGGAGUAG
iRNK
translacija
V
Petar Velikovi
E STOP
protein
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
DNK mutacije
Struktura DNK nije konstantna, nego je podlona
mutacijama; ovo je deo prirodne selekcije i nain kojim nove,
prilagoenije vrste organizama nastaju od starijih.
Neki tipovi mutacija:
Supstitucija:
TGCATTGCGTAGGC
TGCATTCCGTAGGC
Insercija/delecija:
TGCATT---TAGGC
TGCATTCCGTAGGC
Inverzija:
TGCATTGCGTAGGC
TGCGCGTTATAGGC
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Problem poravnanja
Ovo nas dovodi do glavnog problema koji emo razmatrati:
problem poravnanja DNK sekvenci (DNA sequence
alignment).
Pretpostavimo da imamo dve DNK sekvence, koje pripadaju
dvema razliitim vrstama. Zadatak je da identifikujemo sline
( nemutirane) regione izmeu njih.
Razlikujemo dva odvojena problema:
Globalno poravnanje: poravnanje celokupnih sekvenci;
Lokalno poravnanje: pronalaenje regiona visoke slinosti.
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Hamming distanca
Najjednostavniji algoritam za poravnanje razmatra samo
supstitucije kao mogue mutacije.
Udaljenost se onda rauna kao Hamming distanca izmeu
sekvenci; broj mesta na kojima se nukleotidi razlikuju.
Hamming("ATCG", "ACCG") = 1
O(n) algoritam za raunanje trivijalan (uz potencijalne
optimizacije ako vie puta raunamo distancu nad
podstringovima iste sekvence. . . Quals 2015: Retrovirus)
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Dinamiko programiranje
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
LCS
LCS algoritam:
Ulaz: sekvence X (duine n) i Y (duine m).
Definiimo LCS(i, j) (i n, j m) kao duinu najdueg
zajednikog podniza od prefiksa X[1..i] i Y [1..j]. Optimalna
duina je onda LCS(n, m); sam podniz se izvlai backtrack-om
kroz tabelu.
Bazni sluajevi: LCS(i, 0) = LCS(0, j) = 0.
(
LCS(i 1, j 1) + 1
LCS(i, j) =
max(LCS(i 1, j), LCS(i, j 1))
X[i] = Y [j]
X[i] 6= Y [j]
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Needleman-Wunsch algoritam
Needleman-Wunsch algoritam:
Modifikacija LCS algoritma u kojoj su dozvoljene supstitucije;
dati su i "skorovi" za svaku akciju:
m za isti nukleotid;
s za supstituciju;
d za inserciju/deleciju.
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Needleman-Wunsch, contd
Bazni sluajevi: N W (i, 0) = N W (0, i) = i d.
N W (i 1, j 1) + score(i, j)
N W (i, j) = max N W (i 1, j) d
N W (i, j 1) d
(
m X[i] = Y [j]
score(i, j) =
s X[i] 6= Y [j]
Primetiti: LCS(i, j) je N W (i, j) sa parametrima:
m = 1;
s = +;
d = 0.
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Needleman-Wunsch, primer
NeedlemanWunsch("CATGT", "ACGCTG")
m=2
s=d=1
C
A
T
G
T
0
1
2
3
4
5
0
0
-1
-2
-3
-4
-5
A
1
-1
Petar Velikovi
C
2
-2
G
3
-3
C
4
-4
T
5
-5
G
6
-6
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Needleman-Wunsch, primer
NeedlemanWunsch("CATGT", "ACGCTG")
m=2
s=d=1
C
A
T
G
T
0
1
2
3
4
5
0
0
-1
-2
-3
-4
-5
A
1
-1
-1
1
0
-1
-2
Petar Velikovi
C
2
-2
1
0
0
-1
-2
G
3
-3
0
0
-1
2
1
C
4
-4
-1
-1
-1
1
1
T
5
-5
-2
-2
1
0
3
G
6
-6
-3
-3
0
3
2
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Needleman-Wunsch, primer
NeedlemanWunsch("CATGT", "ACGCTG")
m=2
s=d=1
A C G C T G
0 1 2 3 4 5 6
0
0 -1 -2 -3 -4 -5 -6
C 1 -1 -1 1 0 -1 -2 -3
A 2 -2 1 0 0 -1 -2 -3
T 3 -3 0 0 -1 -1 1 0
G 4 -4 -1 -1 2 1 0 3
T 5 -5 -2 -2 1 1 3 2
-C-ATGT
ACGCTGPetar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Needleman-Wunsch, primer
NeedlemanWunsch("CATGT", "ACGCTG")
m=2
s=d=1
A C G C T G
0 1 2 3 4 5 6
0
0 -1 -2 -3 -4 -5 -6
C 1 -1 -1 1 0 -1 -2 -3
A 2 -2 1 0 0 -1 -2 -3
T 3 -3 0 0 -1 -1 1 0
G 4 -4 -1 -1 2 1 0 3
T 5 -5 -2 -2 1 1 3 2
-CA-TGT
ACGCTGPetar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Needleman-Wunsch, primer
NeedlemanWunsch("CATGT", "ACGCTG")
m=2
s=d=1
A C G C T G
0 1 2 3 4 5 6
0
0 -1 -2 -3 -4 -5 -6
C 1 -1 -1 1 0 -1 -2 -3
A 2 -2 1 0 0 -1 -2 -3
T 3 -3 0 0 -1 -1 1 0
G 4 -4 -1 -1 2 1 0 3
T 5 -5 -2 -2 1 1 3 2
CATG-T-ACGCTG
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Smith-Waterman algoritam
Smith-Waterman algoritam:
Modifikacija N-W algoritma koja rauna optimalna lokalna
poravnanja; skor nikad ne pada ispod nule.
Definiimo SW (i, j) kao optimalan skor lokalnog poravnanja
koje se zavrava na i-toj poziciji prve i j-toj poziciji druge
sekvence.
Uglavnom rekonstruiemo sva poravnanja sa SW (i, j) > t.
Bazni sluajevi: SW (i, 0) = SW (0, j) = 0.
SW (i 1, j 1) + score(i, j)
SW (i, j) = max
SW (i 1, j) d
SW (i, j 1) d
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Kljune opservacije
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Hirschberg-ov algoritam
Hirschberg-ov algoritam:
Ukoliko je |X| 2 ili |Y | 2, odraditi regularan
Needleman-Wunsch algoritam nad X i Y .
Definisati sledee parametre:
xmid = |X|
2 ;
ScoreL[] = N W Score(X[1..xmid ], Y );
ScoreR[] = N W Score(reverse(X[xmid + 1..|X|]), reverse(Y ));
m
ymid = argmax (ScoreL[i] + ScoreR[m i]).
i=0
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Heuristiki pristup
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
BLAST
Prva heuristika koju emo razmatrati je Basic Local Alignment
Search Tool (BLAST)trenutno verovatno najkorieniji
algoritam u bioinformatici.
Najee se koristi kada elimo da pretraimo poravnanja neke
query sekvence unutar baze podataka sekvenci (npr. ukoliko
elimo saznati kojoj vrsti pripada neka nepoznata sekvenca);
Kljuna pretpostavka: uglavnom nas zanimaju jedino lokalna
poravnanja koja su skoro savrena (95+%!).
= Ovakva lokalna poravnanja e verovatno imati neki
podstring koji je savreno sparen (bez mutacija)!
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
BLAST, contd
BLAST algoritam:
Podeliti query sekvencu na sve podstringove duine w (gde je w
dat parametarza DNK, w = 12 uglavnom).
npr. sekvenca "ATCG", w = 2 generie:
{"AT", "TC", "CG"}
Pronai sva mesta unutar baze podataka gde se neki od ovih
podstringova nalazi (tako to se preraunaju lokacije svih
podstringova duine w u bazi podataka, ili koristei npr.
Knuth-Morris-Pratt (KMP) algoritam).
Proiriti sve lokacije gde je dolo do poklapanja, u oba smera,
sve dok ukupan skor poravnanja ne padne ispod neke
definisane granice, T .
Oekivana vremenska sloenost algoritma je O(n + m), gde je
n duina query sekvence, a m duina baze podataka.
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Problematinosti sa BLAST-om
Zbog predugake vrednosti w, moe se namestiti "nesrean"
primer koji je oigledno skoro savreno poravnat sa query
sekvencom, ali ga BLAST i dalje nee razmatrati:
GAGTACTCAACACCAACATTAGTGGGCAATGGAAAAT
|| ||||||||| |||||| | ||||||
||||||
GAATACTCAACAGCAACATCAATGGGCAGCAGAAAAT
Jedna opcija: smanjiti w (na 9 za gorenavedeni primer); ovo bi
imalo negativan efekat na brzinu algoritma (jer bi daleko vie
poklapanja moralo da se proiruje).
Druga opcija. . .
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
PatternHunter
PatternHunter je algoritam koji je gotovo identian BLAST-u,
osim u jednom kljunom detalju: nezahtevanje potpunog
poklapanja podstringa u bazi podataka.
Trae se poklapanja koristei (paljivo odabrane) ablone sa
rupama (spaced seeds)nizovi nula i jedinica koji odreuju na
kojim indeksima elimo da se poklope podstring i baza
podataka.
Na primer: 111010010100110111 podstringovi duine w = 18,
ali se trai poklapanje samo na datih 11 mesta!
BLAST bi za istu koliinu poklapanja koristio ablon
11111111111: generie vie podstringova!
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Viestruko poravnanje
esto nas interesuje da u isto vreme poravnamo vie od dve
sekvence.
Optimalno poravnanje k sekvenci je u optem sluaju jako
teko nai.
DP pristup zahteva izgradnju k-dimenzione hipermatrice (za
svako polje treba proveriti 2k 1 suseda);
Ukupna vremenska sloenost: O((2n)k )!
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
Progresivno poravnanje
Veina heuristika svodi problem viestrukog poravnanja na
problem poravnanja dve sekvence.
Jedan od najpopularnijih takvih algoritama je CLUSTAL; ovo je
algoritam progresivnog poravnanja, koji u svakom momentu
poravnava po dva elementa (od ega element moe biti ili
sekvenca ili poravnata grupa sekvenci).
Kada poravnavamo grupe sekvenci, raunamo ukupan skor
neke pozicije kao neku kombinaciju ukupnih doprinosa skoru
od svake sekvence iz grupe.
Insercije/delecije su fiksirane u konanom poravnanju nakon
to ih jednom odredimo.
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
CLUSTAL
CLUSTAL algoritam:
Izraunati skor optimalnog poravnanja za svaki par sekvenci iz
ulaza (dobija se matrica udaljenosti);
Upotrebiti ovu matricu da se izgradi binarno stablo navoenja
(ili korisnik moe zadati svoje stablo u tom sluaju se
preskae prvi korak);
Progresivno graditi poravnanje koristei se stablom, uvek
poravnajui po dve elementa.
Vremenska sloenost: O((nk)2 ), memorijska sloenost:
O(nk + n2 + k 2 ).
Metodama izgradnje stabla navoenja emo se baviti kasnije.
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Dinamiko programiranje
Heuristike
Progresivno poravnanje
CLUSTAL, primer
Primer CLUSTAL algoritma nad sekvencama
"ACA"(1), "CCA"(2), "ACGA"(3), "AGTA"(4) i "AGA"(5),
i stablom navoenja (((1, 2), 3), (4, 5)):
ACA
CCA
ACA
CCA
ACGA
AGTA
AC-A
CC-A
ACGA
AGA
AGTA
AG-A
AC--A
CC--A
ACG-A
A-GTA
A-G-A
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
BWT, primer
ACAACG
T
AACGAC
ACAACG
ACGACA
CAACGA
CGACAA
GACAAC
Petar Velikovi
AACGAC
ACAACG
ACGACA
CAACGA
CGACAA
GACAAC
(CGAAAC, 2)
BW T (T )
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Prednosti BWT-a
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Inverz BWT-a
BW T (T ) nam daje poslednju kolonu matrice; prvu kolonu
C1 (T ) moemo dobiti sortirajui BW T (T ).
LF Property: i-ta pojava nekog karaktera u prvoj koloni je na
istoj poziciji kao i-ta pojava tog karaktera u poslednjoj koloni!
Definiimo LF (i) kao mapiranje pozicija iz poslednje kolone
na prvu kolonu, tako da vai:
BW T [i] = C1 [LF (i)]
BW T [i] = BW T [j] i < j = LF (i) < LF (j)
Iterativni algoritam za raunanje T :
Inicijalizacija: i = x (gde je x indeks reda koji sadri T );
Iteracija: T = BW T [LF (i)] + T , i = LF (i)
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Izgradnja genoma
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Hamiltonov graf
Najpre generiemo sve podstringove duine w od proitanih
podstringova (slino kao u BLAST algoritmu).
Prvih w 1 karaktera stringa duine w nazvaemo njegovim
prefiksom, a poslednjih w 1 karaktera njegovim sufiksom.
npr. prefiks od "ATCG" je "ATC", a sufiks je "TCG".
Napravimo graf takav da svaki uoeni podstring duine w ima
jedan vor; dva vora spajamo usmerenom ivicom ukoliko se
sufiks prvog poklapa sa prefiksom drugog;
npr. "ATCG" "TCGG".
Genom dobijamo iz Hamiltonovog ciklusa nad ovim
grafomciklusa koji obilazi svaki vor tano jednom.
Vremenska sloenost: O(n2 2n ), worst-case
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
AAT
ATG
TGG
GGC
GCA
TGC
GTG
CGT
GCG
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
de Bruijn-ov graf
Ponovo generiemo sve podstringove duine w od proitanih
podstringova.
Meutim, ovoga puta vorove grafa vezujemo za prefikse i
sufikse svih ovih stringova.
Dva vora u ovom grafu se spajaju ivicom ukoliko postoji
podstring kome je prvi vor prefiks a drugi vor sufiks;
npr. "ATC" "TCG" ukoliko imamo podstring "ATCG".
Genom dobijamo iz Ojlerovog ciklusa nad ovim grafomciklusa
koji obilazi svaku ivicu tano jednom.
Vremenska sloenost: O(|V | + |E|).
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
ATG
TG
AAT
TGG
GG
TGC
GGC
GC
GTG
AA
GCA
GCG
CAA
GT
CA
CGT
CG
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Filogenetska stabla
Pretpostavimo da imamo DNK sekvence od nekoliko vrsta za
koje sumnjamo da su povezane (tj. da su nastale od zajednikog
pretka).
Filogenetska analiza se bavi rekonstrukcijom ovih evolucionih
stabala.
Problem: preci su (uglavnom) izumrle vrste, tako da ne moemo
lako doi do njihovog DNK (osim fosila).
Dva pristupa problemu:
tedljivost (parsimony) minimizacija broja mutacija;
Razdaljine (distances) koristi matricu rastojanja, dobijenu iz
meusobnih poravnanja.
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Fitch-ov algoritam
Fitch-ov algoritam:
Jednostavan algoritam koji implementira pristup tedljivosti;
ulaz za algoritam je niz DNK sekvenci istih duina n, i binarno
stablo koje treba popuniti sa DNK sekvencama predaka (date
DNK sekvence su listovi stabla).
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Fitch, contd
Downpass prolaz: raunanje skupa Ri , koji sadri potencijalne
vrednosti nukleotida u voru i:
Ukoliko je i list, Ri = {vali };
U suprotnom, prvo rekurzivno izraunaj Rj i Rk od dece vora i;
Ukoliko Rj Rk 6= , Ri = Rj Rk ;
U suprotnom, Ri = Rj Rk .
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Fitch, primer
Primer Fitch-ovog algoritma nad nukleotidima G, G, C, A, A i
stablom:
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Fitch, primer
Uppass:
{A, C, G}
{C, G}
{G}
{G}
{A}
{C}
{A}
{A}
{G}
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Fitch, primer
Downpass: (jedno od moguih optimalnih stabala)
A
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
UPGMA algoritam
Unweighted Pair Group Method with Arithmetic mean (UPGMA):
Algoritam koji implementira pristup rastojanja; ulaz za
algoritam je matrica udaljenosti koja dri udaljenosti izmeu
svih parova sekvenci. Izlaz je binarno stablo koje predstavlja
potencijalnu strukturu zajednikih predaka.
UPGMA algoritam se esto koristi za izradu stabla navoenja za
prethodno spomenuti CLUSTAL algoritam.
Algoritam je zasnovan na aritmetikoj sredini svih udaljenosti
kao metrici za razdaljinu izmeu dva skupa, A i B:
d(A, B) =
XX
1
d(x, y)
|A| |B|
xA yB
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
UPGMA, contd
Na poetku, svaka sekvenca x je u svom (jedininom) skupu
Cx = {x}, i svaki skup je vezan za neki list izlaznog stabla;
U svakoj iteraciji, biramo Ci i Cj tako da je d(Ci , Cj )
minimalno.
Definiemo novi skup Ck = Ci Cj i raunamo njegova
rastojanja od svih preostalih skupova. Takoe, Ck vezujemo za
novi vor u stablu, koji je roditelj od vorova vezanih za Ci i Cj .
Briemo skupove Ci i Cj .
Iteriramo dok ne ostane samo jedan skup (koren stabla).
Najefikasnija poznata implementacija ima vremensku
sloenost O(n2 ).
Petar Velikovi
Uvod
Poravnanje DNK sekvenci
Dodatni algoritmi
Petar Velikovi