Čas 3: Sravnjivanje niski (string matching)

Σχετικά έγγραφα
DISKRETNA MATEMATIKA - PREDAVANJE 7 - Jovanka Pantović

Osnovni primer. (Z, +,,, 0, 1) je komutativan prsten sa jedinicom: množenje je distributivno prema sabiranju

Iskazna logika 3. Matematička logika u računarstvu. novembar 2012

3.1 Granična vrednost funkcije u tački

XI dvoqas veжbi dr Vladimir Balti. 4. Stabla

SISTEMI NELINEARNIH JEDNAČINA

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET SIGNALI I SISTEMI. Zbirka zadataka

M086 LA 1 M106 GRP. Tema: Baza vektorskog prostora. Koordinatni sustav. Norma. CSB nejednakost

Strukture podataka i algoritmi 1. kolokvij 16. studenog Zadatak 1

IZVODI ZADACI ( IV deo) Rešenje: Najpre ćemo logaritmovati ovu jednakost sa ln ( to beše prirodni logaritam za osnovu e) a zatim ćemo

18. listopada listopada / 13

Operacije s matricama

Zavrxni ispit iz Matematiqke analize 1

a M a A. Može se pokazati da je supremum (ako postoji) jedinstven pa uvodimo oznaku sup A.

IZVODI ZADACI (I deo)

APROKSIMACIJA FUNKCIJA

KOMUTATIVNI I ASOCIJATIVNI GRUPOIDI. NEUTRALNI ELEMENT GRUPOIDA.

Ispitivanje toka i skiciranje grafika funkcija

Zadaci iz Osnova matematike

Teorijske osnove informatike 1

DRUGI KOLOKVIJUM IZ MATEMATIKE 9x + 6y + z = 1 4x 2y + z = 1 x + 2y + 3z = 2. je neprekidna za a =

Klasifikacija blizu Kelerovih mnogostrukosti. konstantne holomorfne sekcione krivine. Kelerove. mnogostrukosti. blizu Kelerove.

Računarska grafika. Rasterizacija linije

radni nerecenzirani materijal za predavanja R(f) = {f(x) x D}

Veleučilište u Rijeci Stručni studij sigurnosti na radu Akad. god. 2011/2012. Matematika. Monotonost i ekstremi. Katica Jurasić. Rijeka, 2011.

7 Algebarske jednadžbe

IspitivaƬe funkcija: 1. Oblast definisanosti funkcije (ili domen funkcije) D f

MATRICE I DETERMINANTE - formule i zadaci - (Matrice i determinante) 1 / 15

Osnovne teoreme diferencijalnog računa

ELEKTROTEHNIČKI ODJEL

Kontrolni zadatak (Tačka, prava, ravan, diedar, poliedar, ortogonalna projekcija), grupa A

Binarno stablo (BinaryTree)

Zadaci sa prethodnih prijemnih ispita iz matematike na Beogradskom univerzitetu

PRAVA. Prava je u prostoru određena jednom svojom tačkom i vektorom paralelnim sa tom pravom ( vektor paralelnosti).

Elementi spektralne teorije matrica

41. Jednačine koje se svode na kvadratne

4.7. Zadaci Formalizam diferenciranja (teorija na stranama ) 343. Znajući izvod funkcije x arctg x, odrediti izvod funkcije x arcctg x.

PARCIJALNI IZVODI I DIFERENCIJALI. Sama definicija parcijalnog izvoda i diferencijala je malo teža, mi se njome ovde nećemo baviti a vi ćete je,

PID: Domen P je glavnoidealski [PID] akko svaki ideal u P je glavni (generisan jednim elementom; oblika ap := {ab b P }, za neko a P ).

5. Karakteristične funkcije

Apsolutno neprekidne raspodele Raspodele apsolutno neprekidnih sluqajnih promenljivih nazivaju se apsolutno neprekidnim raspodelama.

Računarska grafika. Rasterizacija linije

Kaskadna kompenzacija SAU

radni nerecenzirani materijal za predavanja

(P.I.) PRETPOSTAVKA INDUKCIJE - pretpostavimo da tvrdnja vrijedi za n = k.

MATEMATIKA 2. Grupa 1 Rexea zadataka. Prvi pismeni kolokvijum, Dragan ori

Sortiranje prebrajanjem (Counting sort) i Radix Sort

INTEGRALNI RAČUN. Teorije, metodike i povijest infinitezimalnih računa. Lucija Mijić 17. veljače 2011.

FTN Novi Sad Katedra za motore i vozila. Teorija kretanja drumskih vozila Vučno-dinamičke performanse vozila: MAKSIMALNA BRZINA

IZVODI ZADACI (I deo)

SOPSTVENE VREDNOSTI I SOPSTVENI VEKTORI LINEARNOG OPERATORA I KVADRATNE MATRICE

6 Polinomi Funkcija p : R R zadana formulom

Zadaci iz trigonometrije za seminar

numeričkih deskriptivnih mera.

Matematička analiza 1 dodatni zadaci

III VEŽBA: FURIJEOVI REDOVI

Sistemi veštačke inteligencije primer 1

Pismeni ispit iz matematike Riješiti sistem jednačina i diskutovati rješenja sistema u zavisnosti od parametra: ( ) + 1.

2. Ako je funkcija f(x) parna onda se Fourierov red funkcije f(x) reducira na Fourierov kosinusni red. f(x) cos

Struktura indeksa: B-stablo. ls/swd/btree/btree.html

IZRAČUNAVANJE POKAZATELJA NAČINA RADA NAČINA RADA (ISKORIŠĆENOSTI KAPACITETA, STEPENA OTVORENOSTI RADNIH MESTA I NIVOA ORGANIZOVANOSTI)

RIJEŠENI ZADACI I TEORIJA IZ

Neka su A i B proizvoljni neprazni skupovi. Korespondencija iz skupa A u skup B definiše se kao proizvoljan podskup f Dekartovog proizvoda A B.

Riješeni zadaci: Limes funkcije. Neprekidnost

π π ELEKTROTEHNIČKI ODJEL i) f (x) = x 3 x 2 x + 1, a = 1, b = 1;

Algoritmi zadaci za kontrolni

Cauchyjev teorem. Postoji više dokaza ovog teorema, a najjednostvniji je uz pomoć Greenove formule: dxdy. int C i Cauchy Riemannovih uvjeta.

Relacije poretka ure denja

Prvi kolokvijum. y 4 dy = 0. Drugi kolokvijum. Treći kolokvijum

Inženjerska grafika geometrijskih oblika (5. predavanje, tema1)

Linearna algebra 2 prvi kolokvij,

2 tg x ctg x 1 = =, cos 2x Zbog četvrtog kvadranta rješenje je: 2 ctg x

Trigonometrija 2. Adicijske formule. Formule dvostrukog kuta Formule polovičnog kuta Pretvaranje sume(razlike u produkt i obrnuto

Funkcije dviju varjabli (zadaci za vježbu)

1. Leksička analiza 0 1 A D A 0 B A C 0 C A F 0 D B C 0 E B C 1 F E A 1 B A C 0 C A F 0 D B C 0 E B C 1 F E A 1. (F,1)=A funkcija prelaza

SEMINAR IZ KOLEGIJA ANALITIČKA KEMIJA I. Studij Primijenjena kemija

1 Afina geometrija. 1.1 Afini prostor. Definicija 1.1. Pod afinim prostorom nad poljem K podrazumevamo. A - skup taqaka

Matematka 1 Zadaci za drugi kolokvijum

Dijagonalizacija operatora

Konstruisati efikasan algoritam znači dati skup preciznih uputstava kako doći do rešenja zadatog problema Algoritmi se mogu opisivati:

2log. se zove numerus (logaritmand), je osnova (baza) log. log. log =

Univerzitet u Nišu Građevinsko-arhitektonski fakultet. Informatika2. 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje.

Pismeni ispit iz matematike GRUPA A 1. Napisati u trigonometrijskom i eksponencijalnom obliku kompleksni broj, zatim naći 4 z.

Trigonometrijske nejednačine

Numerička matematika 2. kolokvij (1. srpnja 2009.)

Dvanaesti praktikum iz Analize 1

SKUPOVI I SKUPOVNE OPERACIJE

TRIGONOMETRIJSKE FUNKCIJE I I.1.

Prvi pismeni zadatak iz Analize sa algebrom novembar Ispitati znak funkcije f(x) = tgx x x3. 2. Naći graničnu vrednost lim x a

Minimalno povezujuće stablo

Uvod u teoriju brojeva

Iskazna logika 1. Matematička logika. Department of Mathematics and Informatics, Faculty of Science, University of Novi Sad, Serbia.

9. GRANIČNA VRIJEDNOST I NEPREKIDNOST FUNKCIJE GRANIČNA VRIJEDNOST ILI LIMES FUNKCIJE

1 Svojstvo kompaktnosti

Linearna algebra 2 prvi kolokvij,

Aksioma zamene. Aksioma dobre zasnovanosti. Aksioma dobre zasnovanosti Svaki neprazan skup A sadrži skup a takav da je A a = 0.

Algoritmi i strukture podataka - 1.cas

1. Pojam fazi skupa. 2. Pojam fazi skupa. 3. Funkcija pripadnosti, osobine i oblici. 4. Funkcija pripadnosti, osobine i oblici

Matematiqki fakultet. Univerzitet u Beogradu. Domai zadatak

Univerzitet u Nišu, Prirodno-matematički fakultet Prijemni ispit za upis OAS Matematika

Transcript:

Čas 3: Sravnjivanje niski (string matching) 1.Naivni algoritam za sravnjivanje niski 2.Konačni automat za sravnjivanje niski 3.Sufiksna stabla 4.Primena sufiksnih stabala 5.Bojer-Murov algoritam izvor: Algoritmic Aspects of Bioinformatics H.J.Böckenhauer,D.Bongartz,poglavlje 4

SRAVNJIVANJE NISKI Data je proizvoljna azbuka Σ. Problem uparivanja stringova definiše se na sledeći način: Ulaz: dva stringa nad Σ, t=t 1...t n (tekst) i p=p 1...p m (obrazac) Izlaz: Skup svih pozicija u stringu t gde počinje pojavljivanje stringa p

NAIVNI ALGORITAM Velika složenost O(m(n-m)) za tekst dužine n i obrazac dužine m Poboljšanja: preprocesiranje teksta ili obrasca uštedeti poređenja korišćenjem strukture stringa

KONAČNI AUTOMATI - PODSEĆANJE Konačni automat je torka M=(Q,Σ,q 0,d,F) gde je: Q konačan skup stanja Σ azbuka q 0 Q početno stanje F Q skup završnih stanja d: Q x Σ -> Q funkcija prelaska Proširenje funkcije prelaska d na skup Σ*: d : Q * d( q, ) q Q d ( q, xa) d ( d ( q, x), a) q Q, a, x *

KONAČNI AUTOMAT ZA UPARIVANJE STRINGOVA Korak1: konstrukcija automata koji propušta tekstove koji se završavaju datim obrascem DKA za obrazac aba

FUNKCIJA PRELASKA

KONAČNI AUTOMAT Kako implementirati funkciju prelaska? Ideja: za obrazac p dužine m definisati m+1 stanja koja su povezana karakterima obrasca; iz svakog stanja, pored postojećih pravila prelaska dodati još po jedno pravilo prelaska za svaki karakter azbuke Σ koji nedostaje; završno stanje za svako dodatno pravilo određujemo na osnovu strukture uopštenog preklapanja dve niske

KONAČNI AUTOMAT ZA UPARIVANJE STRINGOVA UOPŠTENO PREKLAPANJE Neka su s i t stringovi nad azbukom Σ. Ako postoje stringovi x,y i z iz Σ* takvi da: 1. s=xy 2. t=yz 3. y je maksimalna Tada y zovemo uopštenim preklapanjem stringova s i t označavamo sa Ov( s, t), a dužinu preklapanja sa ov( s, t) Napomena: String s može biti podstring stringa t, i obrnuto t može biti podstring stringa s. Odnosno x ili z mogu biti jednaki (prazna niska). Kod standardnog preklapanja Ov(s,t), to nije dopušteno!

PRIMERI STANDARDNOG I UOPŠTENOG PREKLAPANJA aba sa aabb aba aabb abb sa aba aabb aba aabb sa aabb standardno: uopšteno: aabb aabb x=z= aabb aabb

KONAČNI AUTOMAT ZA UPARIVANJE STRINGOVA Ideja: definisati pravilo prelaska na sledeći način: za svako q Q i svako s d ( q, s) ov( p... p s, p) 1 q

KONAČNI AUTOMAT ZA UPARIVANJE STRINGOVA { a, b}, p " aba ", Q {0,1,2,3} q 0 s a Ov( a, aba) " a ", ov( a, aba) 1 s b Ov( b, aba) "", ov( b, aba) 0 q 1 s a Ov( aa, aba) " a ", ov( aa, aba) 1 s b Ov( ab, aba) " ab", ov( ab, aba) 2 q 2 s a Ov( aba, aba) " aba ", ov( aba, aba) 3 s b Ov( abb, aba) "", ov( abb, aba) 0 q 3 s a Ov( abaa, aba) " a ", ov( aba, aba) 1 s b Ov( abab, aba) " ab", ov( abb, aba) 2

PRIMER ZA BABABAA

ALGORITAM: SRAVNJIVANJE STRINGOVA PREKO KONAČNOG AUTOMATA Konstruisati konačni automat za string p=p 1...p m (obrazac) t=t 1...t n (tekst) i Propuštati karaktere teksta t=t 1...t n redom kroz konačni automat; ako se nakon karaktera t i automat dođe do završnog stanja, to znači da je obrazac p sufiks datog prefiksa t 1...t i obrazac počinje od indeksa i-m+1

PRIMER Izgraditi konačni automat nad obrascem gcagagag i pronaći sva njegova pojavljivanja u tekstu gcatcgcagagagtatacagtacg

SUFIKSNA STABLA - PRIMER Sufiksno stablo za tekst t=dabdac

SUFIKSNA STABLA Prosto sufiksno stablo za tekst t=t 1 t n je usmereno stablo T t =(V,E) sa korenom r koje zadovoljava sledeće uslove: 1. Ima tačno n listova označenih sa 1,...,n 2. Grane su označene simbolima iz S 3. Sve izlazne grane iz unutrašnjih čvorova su označene međusobno različitim simbolima 4. Putanja od korena do lista i se obeležava t i...t n

SUFIKSNA STABLA Prosta sufiksna stabla postoje za tekst t ako i samo ako nijedan njegov sufiks nije prefiks nijednog njegovog drugog sufiksa npr abab nije ispunjen uslov jedinstvenosti (3) Rešenje: simbol $ na kraju

PRIMER: SUFIKSNO STABLO ZA A 3 B 3 C

KOMPAKTNO SUFIKSNO STABLO Kompaktno sufiksno stablo za tekst t=t 1 t n je usmereno stablo T t =(V,E) sa korenom r koje zadovoljava sledeće uslove: 1. Ima tačno n listova označenih sa 1,...,n 2. Svaki unutrašnji čvor stabla T t ima bar dva potomka 3. Grane su označene podstringovima teksta t; svaki podstring dužine k je predstavljen početnom i krajnjom pozicijom u t ako važi k>=2log(n- Σ ), gde je k dužina oznake grane 4. Sve izlazne grane iz unutrašnjih čvorova počinju međusobno različitim simbolima 5. Putanja od korena do lista i se obeležava t i...t n

KOMPAKTNO SUFIKSNO STABLO ZA A 3 B 3 C

PRIMENE SUFIKSNIH STABALA 1. Traženje šablona u nizu tekstova npr traženje svih DNK sekvenci u datoj bazi podataka koji sadrže određeni DNK fragment (uopštena sufiksna stabla) 2. Traženje najdužeg zajedničkog podstringa za niz stringova npr najduži zajednički podstring za nekoliko srodnih sekvenci DNK pokazuje značajan deo DNK 3. Efikasno traženje preklapanja parova stringova u nizu stringova DNK sekvencioniranje 4. Traženje ponavljajućih sekvenci traženje takvih motiva u DNK sekvencama

TRAŽENJE OBRASCA U NIZU TEKSTOVA Ideja: Ako su dati tekstovi t 1,...,t n, konstruisati kompaktno sufiksno stablo za tekst t 1 $ 1 t 2 $ 2...t n $ n Ovo stablo sadrži sufikse tekstova t 1,...,t n u putanjama, ali se sufiksi tekstova t 1,...,t n-1 ne završavaju u listovima stabla; treba ga popraviti tako da taj uslov bude ispunjen: Završni simboli $ i pojavljuju se samo u oznakama grana koje vode do listova => za svaku granu koja vodu do lista, njenu oznaku možemo skratiti do simbola $ i Oznake listova promeniti tako da označavaju i tekst u kome je obrazac, i početak njegovog pojavljivanja

ZADATAK Konstruisati uopšteno sufiksno stablo za tekstove t 1 =aba i t 2 =ab

TRAŽENJE NAJDUŽEG ZAJEDNIČKOG PODSTRINGA Ideja: konstruisati uopšteno sufiksno stablo za string t 1 $ 1 t 2 $ 2...t n $ n Svakom unutrašnjem čvoru v pridružiti dve oznake: 1. Skup M {1,,N} gde i M ako od unutrašnjeg čvora v postoji grana do lista (i,j) za proizvoljno j 2. Dubinu čvora t koja predstavlja dužinu oznake putanje od korena do čvora t Najduži zajednički podstring je oznaka putanja od korena do unutrašnjeg čvora čiji je skup M= {1,,N}, a koji ima najveću dubinu od svih takvih čvorova

ZADATAK Naći najduži zajednički podniz za stringove t 1 =bcabcac t 2 =aabca t 3 =bcaa

TRAŽENJE STANDARDNOG PREKLAPANJA Govorimo o standardnom preklapanju koje se u odnosu na uopšteno preklapanje razlikuje za dodatni uslov da x i z ne smeju biti 1. Konstruisati uopšteno sufiksno stablo za string t 1 $ 1 t 2 $ 2...t n $ n 2. Svakom unutrašnjem čvoru v pridružiti dve oznake: 1) Skup L {1,,N} gde i L ako od unutrašnjeg čvora v postoji grana sa oznakom $ i 2) Dubinu čvora v (depth(v)) koja predstavlja dužinu oznake putanje od korena do čvora t

3. Za svaki string t j preklapanja sa ostalim stringovima se računaju na sledeći način: za j=1,..., N x := koren dokle god je x unutrašnji čvor za svako i L(x) ako je depth(x)<min{ t i, t j } U(t i,t j ) = putanja(x) u(t i,t j ) = depth(x) x := potomak čvora x na putanji t j $ j

ZADATAK Naći uzajamna preklapanja za stringove t 1 = aba t 2 = bab t 3 = aabb

Traženje maksimalnih ponavljajućih sekvenci Ponavljajuća sekvenca je maksimalna ako se ne može produžiti na bilo koju stranu a da ostane ponavljajuća sekvenca Dat je string t=t 1 t n. a T njegovo kompaktno sufiksno stablo. Tada levim simbolom indeksa i zovemo simbol t i-1. Ako je x list stabla T, tada levim simbolom lista x zovemo levi simbol početne pozicije sufiksa pathlabel(x). Za unutrašnji čvor v stabla T kažemo da je levo različit ako podstablo sa korenom u v sadrži dva lista sa različitim levim simbolima.

Traženje maksimalnih ponavljajućih sekvenci String p je maksimalna ponavljajuća sekvenca u tekstu t sa kompaktnim sufiksnim stablom T ako i samo ako postoji levo-različit čvor x u stablu T, različit od korena, takav da je p=pathlabel(x)

SUFIKSNI NIZOVI Sufiksni niz za string s je niz koji sadrži sve sufikse niza s u leksikografskom poretku Primer: s=ababbabbb, s =9 Sufiksi: s[1,9] =ababbabbb s[3,9]=abbabbb s[6,9]=abbb s[2,9]=babbabbb s[4,9]=bbabbb s[5,9]=babbb s[7,9]=bbb s[8,9]=bb s[9,9]=b

SUFIKSNI NIZOVI s[1,9] =ababbabbb s[3,9]=abbabbb s[6,9]=abbb s[9,9]=b s[2,9]=babbabbb s[5,9]=babbb s[8,9]=bb s[4,9]=bbabbb s[7,9]=bbb A = (1,3,6,9,2,5,8,4,7)

UPARIVANJE NISKI POMOĆU POMOĆU SUFIKSNIH NIZOVA Neka je p šablon, t tekst, a A(t) sufiksni niz nad tekstom t. Ako je A[i] prvi element niza A koji počinje šablonom p, a A[j] poslednji takav element, onda se šablon p pojavljuje u tekstu t sa početkom u indeksima A[i], A[i+1],,A[j].

BOJER-MUROV ALGORITAM Unapređenje naivnog algoritma za sravnjivanje stringova preprocesiranjem obrasca Ideja: abbadabacba babac Pomeranje obrasca Bojer-Murov algoritam udesno za n pozicija, n>=1 Naivni algoritam udesno za tačno jednu poziciju Pravac poređenja obrasca i teksta sdesna nalevo sleva nadesno

BOJER-MUROV ALGORITAM Koliko pozicija udesno će se obrazac pomeriti određuje se na osnovu pravila: 1. pravilo dobrog sufiksa (good suffix rule) 2. pravilo lošeg karaktera (bad character rule) Od dve predložene vrednosti za pomeranje, uzima se maksimum

PRAVILO LOŠEG KARAKTERA Primer: abbadabacba babac babac do razlike je došlo kod karaktera koji se ne pojavljuje nigde dalje u obrascu

PRAVILO LOŠEG KARAKTERA Primer: abbababacba babac babac do razlike je došlo kod karaktera koji se pojavljuje dalje u obrascu; ako se pojavljuje više puta, uzima se najdešnje pojavljivanje

PRAVILO DOBROG SUFIKSA Primer: abaababacba cabab cabab Nakon uparivanja jednog sufiksa, traži se sledeće pojavljivanje takvog sufiksa i bira najdešnje; napomena: prethodni karakter mora biti različit

PRAVILO DOBROG SUFIKSA Primer: aabababacba abbab abbab Upareni sufiks bab se ne pojavljuje dalje u obrascu; onda se traži najveći njegov sufiks koji je prefiks obrasca

PRIMER Tekst: GCATCGCAGAGAGTATACAGTACG Obrazac: GCAGAGAG, dužine m=8 Σ={A,C,G,T} Korak 1: Konstrukcija tabela pomeranja na osnovu pravila dobrog sufiksa i pravila lošeg karaktera

PRIMER Pravilo lošeg karaktera: Označiti indeks poslednjeg pojavljivanja svakog karaktera iz Σ na pozicijama od 0 do m-1 s BC(s) A 6 C 1 G 5 T -1

PRIMER Pravilo dobrog sufiksa: Za i=0,...,m-1, označiti za koliko je pozicija potrebno pomeriti obrazac udesno da bi se dobilo potencijalno poklapanje sa sufiksom p i+1,..., p m-1 kom prethodi karakter različit od p i i GS(i) G 7 1 AG 6 7 GAG 5 4 AGAG 4 7 GAGAG 3 2 AGAGAG 2 7 CAGAGAG 1 7 GCAGAGAG 0 7

PRIMER Korak 2: sravnjivanje j= 0, i=7 GCATCGCAGAGAGTATACAGTACG GCAGAGAG max{gs(i), i-bc(a)} = max{1,1} = 1 shift=1 GCATCGCAGAGAGTATACAGTACG GCAGAGAG

PRIMER j= 1, i=5 GCATCGCAGAGAGTATACAGTACG GCAGAGAG max{gs(5), 5-BC(C)} = max{4,4} = 4 shift=4 GCATCGCAGAGAGTATACAGTACG GCAGAGAG

PRIMER j= 5, i=5 GCATCGCAGAGAGTATACAGTACG GCAGAGAG pronađeno pojavljivanje, J={5} shift=bs(0)=7 GCATCGCAGAGAGTATACAGTACG GCAGAGAG

PRIMER j= 12, i=5 GCATCGCAGAGAGTATACAGTACG GCAGAGAG max{gs(5), 5-BC(C)} = max{4,4} = 4 shift=4 GCATCGCAGAGAGTATACAGTACG GCAGAGAG Kraj.

ZADATAK Primeniti Bojer-Murov algoritam na pronalaženje svih pojavljivanja obrasca ACGACG u tekstu ACACGACGACGTAG

KORISNI LINKOVI Animacije različitih algoritama: http://www-igm.univmlv.fr/~lecroq/string/index.html