Sunteți pe pagina 1din 11

Arborii sufix si aplicarea lor in Bioinformatica

Arborele sufix este o structura de date de baza pentru algoritmii sirurilor de


caractere si in analiza secventelor biologice.
Din pacate, proprietatile teoretice ale arborelui sufix nu intodeauna se
potrivesc cu domeniul practic. Principalul motiv pentru care arborii sufix au ramas o
unealta teoretica este din cauza spatiului foarte mare ocupat. Chiar pentru o secventa
rezonabila de 100 de MB, arborele sufix al sau necesita 5 GB din memoria principala.
Acest fenomen nu este doar o consecinta a unor factori constanti in implementarea
structurii, mai degraba fiind un efect asimptotic.
Potrivirea sufixelor de stringuri este o problema cu care programatorii se
confrunta de obicei. Unele teme de programare, cum ar fi secventa AND, pot
beneficia de foarte mult de o imbunatatire a algoritmilor care lucreaza cu stringuri.
Spre exemplu daca ar fi nevoie sa realizam o baza de date cu genomii unui
virus, ne vom confrunta cu o problema. Genomii virusului pot sa aiba sute de mii
de nuclee la baza si astfel in baza de date vom avea cateva sute de alti virusi.
O cautare care ar cere sa facem o comparatie string pentru fiecare nucleu
al fiecarui genom din baza de date este o metoda ineficienta.
Solutia este sa construim un arbore, numit arbore sufix; arborele are N
ramuri posibile pentru fiecare nod, iar N este numarul de caractere din alfabet.
Cuvantul sufix se refera in acest caz la faptul ca un arbore contine toate sufixele
dintr-un text.
Se observa ca pornind de la nodul de sus fiecare dintre sufixele cuvantului
BANANAS este gasit incepand cu BANANAS, ANANAS, NANAS si terminand cu S.
Datorita acestei organizari este posibila cautarea oricarui substring al cuvantului,
incepand de la nodul de sus si urmarind apoi toate posbilitatile pana la epuizare.
Motivul pentru care nu sunt utilizati arborii sufix este faptul ca necesita mult
timp si spatiu pentru a fi construit.
O solutie ar fi sa eliminam nodurile care au singur decendent. Acest procedeu
este cunoscut ca si compresie si inseamna ca nodurile individuale intr-un arbore pot
reprezenta secvente de text in loc de simple caractere.

Arborele este acelasi ca si in figura precedenta, dar are mai putine noduri.
Reducerea numarului de noduri, implica si reducerea timpului si a spatiului de lucru;
spatiul este redus de la O(N^2) la O(N).
Problema este ca arborele este construit in ordine inversa, caracterele fiind
adaugate de la sfarsit la inceput; astfel algoritmul este mult mai greu de folosit pentru
aplicatii cum ar fi compresia de date.
O solutie este pornirea de la un arbore vid si adaugarea progresiva a N
prefixe si T sufixe. De exemplu cand construim arborele sufix pentru cuvantul
BANANAS, B este inserat in arbore, apoi BA, apoi BAN, si tot asa pana cand intr-
un final este introdus sufixul BANANAS si astfel arborele este complet.
 
Adăugarea de noi prefixe în arbore se face parcurgand arborele şi
vizitandu-i fiecare sufix. Incepem cu cel mai lung suffix din figura 5 şi ne întoarcem
pană la cel mai scurt sufix care este stringul vid. Fiecare sufix se termină la un nod
care conţine unul din cele trei tipuri:
-Noduri terminale, în figura nodurile terminale sunt 1,2,4 şi 5.

- Nod explicit. Nodurile care nu sunt terminale, 0 şi 3 din figura sunt noduri
explicite. Ele reprezintă puncte din arbore în care două sau mai multe puncte se
despart.

- Nod implicit. In figura, prefixe ca BO, BOO şi OO toate se termină în mijlocul


nodului. Aceste poziţii se referă la nodurile implicite. Ele vor reprezenta noduri în
arborele sufix, dar calea spre comprimare le-a eliminat. În timp ce arborele este
construit nodurile implicite sunt cateodata transformate în noduri explicite.
Adăugand urmatorul prefix, BOOKK în arbore înseamnă că au fost vizitate
toate sufixele din arborele existent şi că a fost adăugată litera K la sfărşitul sufixului.
Fiecare sufix se termină cu K. Din cauza modalităţii de comprimare aplicată arborelui
sufix, se adaugă un nou caracter unui nod terminal.
Niciodata nu se va crea un nod nou datorită literei adăugate. Cel mai nou
suffix adăugat K va fii găsit la nodul 0 şi se va termina la nodul implicit găsit langă
nodul 2.
Am facut doua tipuri de modifcari: prima a fost simpla extensie a unui
nod , iar a doua a fost un update implicit care nu a implicat nimic de lucru.
Adaugand BOOKKE in arbore vom demonstra alte doua tipuri de updateuri.
In primul tip un nod nou este creat pentru a despartii un nod existent de
un nod implicit existent.
Al doilea tip de update consta in adaugarea unui nod nou la un nod
explicit.
După ce se actualizează sufixul K mai trebuie să actualizăm şi următorul
sufix scurt, care este stringul vid. Sufixul string se termină la nodul explicit 0
astfel încat trebuie doar să verificăm dacă acesta mai are un descendent care
începe cu litera E. O scurtă privire asupra figurii precedente ne arată că nodul 0
nu are nici un descendent şi astfel un nou nod terminal este adăugat.
Bioinformatica este un camp unde arborii sufix par sa aiba un
potential mare; spre deosebire de textele normale formate din cuvinte si
delemitari, secventele biologice sunt fluxuri de simboluri fara orice fel de
secvente de cuvinte predefinite, continand mai multe structuri ascunse.
Arborii sufix trateaza orice substring egal, stabileste daca este
cuvant sau nu

S-ar putea să vă placă și