Vlkommn Fols: INF 3/43 Dino Kbg, dino@ifi.uio.no Sin Kogdl, sink@ifi.uio.no P Kisinsn pk@ifi.uio.no Algoim: Dsign og ffkivi Læbok: Algoims: Squnil, Plll, nd Disibud, Knn A. Bmn nd Jom L. Pul. Til slgs i bokndln. (Søg fo å få bok md opyig 5.) Vlkommn Gupplæ: Kisoff Sk kissk@sudn.mn.uio.no Oblig: T sykk, som må godkjnns. And, næliggnd kus: INF-MAT 3/437 Linæ opiming INF-MAT 536 Mmisk opiming INF 534 Algoim i bioinfomikk Kvlissiking vd Ifi Som sudn du og plik il å bid il kvlissikingn v sudi di. D gjø du føs og fms gjnnom å dl i undvisningsvluing. Fglæ vil iniiiv il å s i gng undvisningsvluingn fo v nkl mn. Undvisningsvluingn gi dg mulig il å komm md ilbkmlding og innspill på undvisningn i løp v sms, slik fobding kn gjøs undvis. Du finn m infomsjon om d på ovdsidn il Insiu fo infomikk, und Ann Kvlissiking, ll vd å følg dnn linkn: p://www.ifi.uio.no/sudinf/kvlissiking/sudn.
Undvisningspln Søking i sng 3/8 pk Søking i sng (kp. ) 7/9 pk Dynmisk pogmming (kp. 9) 4/9 sk Fly i gf. Ming i bipi gf (kp. 4) /9 sk Ms om ming i gnll gf (kp. 4 + no) 8/9 5/ / Undvisningsfi uk Vnlig søklgoim Pfiks-søking Niv lgoim Knu-Mois-P-lgoimn Suffiks-søking Boy-Moo-lgoimn Hs-bs Kp-Rbin-lgoimn Indksing v ks Dsuku Ti-æ Suffiks-æ Dfinisjon Niv lgoim E lfb n mngd symbol A = {,,, k }. Søk foov n - En sng S = S[:n-] v lngd n n skvns v symbol f A. T [:n -] (Vi kn s på sngn S båd som y S[:n-] og som n skvns v symbol S=s s s n-.) P [:m -] n - T [:n -] (Tks) P [:m -] (Pn)
Niv lgoim Knu-Mois-P-lgoimn n-m n - T [:n -] D, lgoimisk s, om fo fobding v dn niv lgoimn. Dn fly pn b kk i v sg. Kn vi knskj fly pn m nn b sg? P [:m -] funion NivSingM (P [:m -], T [:n -]) fo s o n - m do if T [s :s + m -] = P n}fo-løkk kskvs n m + gng. un(s) Hv sjkk innil m symbolsmmnlikning. O(nm) kjøid (wos s) ndfo un(-) nd NivSingM j - d j i - d j d j Knu-Mois-P-lgoimn j - i j j - j d j lngdn v lngs pfix v P [ : j - ] som også suffix v P [: j -] Vi v nå vi kn fly P mksiml j - d j sg. Og vi v P [: d j -] m T, så vi kn s å smmnlikn md P [d j :m-]. funion KMPSingM (P [:m -], T [:n -]) i j CNx(P [:m -], Nx [n -]) wil i < n do if P [ j ] = T [ i ] n if j = m n un(i m + ) i i + j j + ls j Nx [ j ] if j = n if T [ i ] P [] n i i + ndwil un(-) nd KMPSingM Knu-Mois-P-lgoimn O(n)
Knu-Mois-P-lgoimn funion CNx (P [:m -], Nx [:m -]) Nx [ ] Nx [ ] i j wil i < m do if P [ j ] = P [ i - ] n Nx [ i ] j + i i + j j + ls if j > n j Nx [ j ] (Tykkfil i bok) ls Nx [ i ] i i + ndwil nd CNx Knu-Mois-P-lgoimn Linæ lgoim, O(n) kjøid wos s. Boy-Moo-lgoimn (Hospool) Dn niv lgoimn, og Knu-Mois-P pfiksbs (f vns mo øy). Boy-Moo-lgoimn (og vin) suffiksbs (f øy mo vns). Boy-Moo-lgoimn (Hospool) Dn niv lgoimn, og Knu-Mois-P pfiksbs (f vns mo øy). Boy-Moo-lgoimn (og vin) suffixbs (f øy mo vns). B M m _ s i f x B M m _ s i f x O(mn) kjøid wos s (som dn niv lgoimn). Sub-linæ ( n) i gjnnomsni O(n log A m / m).
funion HospoolSingM (P [:m -], T [:n -]) i CSif(P [:m -], Sif [ A - ]) wil i < n m do j m wil j nd T [ i + j ] = P [ j ] do j j - ndwil if j = n un( i ) i i + Sif[ T[ i + m -] ] ndwil un(-) nd HospoolSingM Boy-Moo-lgoimn (Hospool) Kp-Rbin-lgoimn Vi n sngn vå komm f k-æ lfb A = {,,,, k -}. Hv symbol i A kn ss på som siff i k-llssysm. Hv sng S i A* kn ss på som ll S i k-llssysm. Eks: k =, og A = {,,,, 9} (D vnlig -llssysm) Sngn 683355 kn ss på som ll 6 83 355. Gi n sng P [:m -], kn vi bgn d kospondnd ll md m mulipliksjon og m ddisjon (Hons gl): P = P [m -] + k(p [m -] + k(p [m -] + + k(p [] + kp [])...)) Eks: 34 = 4 + (3 + ( + *)) Kp-Rbin-lgoimn Kp-Rbin-lgoimn Gi n kssng T [:n -], og lll s (s-indx), buk vi T s som bgnls på dlsngn T [s: s + m -]. (Vi n pn vå lngd m.) En lgoim bs på Hons gl bgn T, T, T, og smmnlikn diss lln md ll P fo pn P. (Tilsvnd dn niv lgoimn.) Gi T s - og k m, kn vi gn u T s i konsn id.! Gunnn il vi kn bgn T s i konsn id nå vi T s - og k m, følgnd kunslsjon: T s = k(t s - - k m *T [s]) + T [s+m] s =,, n m Konsn, bgns n gng, kn gjøs i id O(log m) Eks: k =, A = {,,,, 9} (D vnlig -llssysm) og m = 7. T s - = 793745 T s = 937458 s- s s + m - n - T s = (793745 ( * 7)) + 8 T s T [:n -] Kn gjøs i konsn id. B mulipliksjon og ddisjon, vi n diss opsjonn kn gjøs i konsn id.
Kp-Rbin-lgoimn Kp-Rbin-lgoimn Kn bgn T s i konsn id nå vi T s - og k m. Alså kn vi bgn d n m + lln T s, s =,,, n m og P i id O(n). Vi kn lså, i oin, implmn n søklgoim md kjøid O(n). Vi bgn T (q) s og P (q), vo T (q) s = T s mod q, P (q) = P mod q, og smmnlikn. } Rsn i divisjonn, nå vi dl på q: ll i invll {,,, q -}. Dssv vil lln T s og P i pksis væ fo so il lgoimn bli pkisk nvndb. Tiks å buk modulo-imikk. Vi gjø ll bgning modulo q (q ilfldig vlg pimll, slik kq kku pss i 3/64 bis gis). Vi kn T (q) s = P (q), slv om T s P, n såkl spuiøs m. H vi T (q) s = P (q), må vi lså gjø n nøykig sjkk v T s og P. Md so nok q, snnsynlign fo spuiøs m lv. funion KpRbinSingM (P [:m -], T [:n -], k, q) k m - mod q P (q) T (q) s Kp-Rbin-lgoimn Kp-Rbin-lgoimn Wos s-kjøid fo Kp-Rbin-lgoimn få vi nå pn P finns l i slun v sngn T. fo i o m do P (q) (k * P (q) + P [ i ]) mod q T (q) (k * T (q) + T [ i ]) mod q ndfo fo s o n - m do if s > n T (q) s (k * ( T (q) s - -T[ s ] * ) + T [ s + m ]) mod q if T (q) s = P (q) n if T s = P n un(s) ndfo un(-) nd KpRbinSingM Snnsynlign fo T (q) s n n spsifikk vdi i invll {,,, q-} unifom /q. (Vi n sngn unifom fodl.) T (q) s, s =,,, n-m- vil lså gi oppv il n spuiøs m md snnsynlig /q. L væ d fovnd nll spuiøs m. Hv v diss innbæ (wos s) m smmnlikning. I illgg må vi sjkk T (q) n-m, vo vi få m. Kjøidn bli lså: ( + )m + (n m + )
Kp-Rbin-lgoimn Ti-æ n binomilfodl soksisk vibl. (Hv skif fosøk, md suksssnsynlig /q, og vi gjø n-m fosøk) [Nå ns vi spuiøs m som suksss ] Tykkfil i bok E[] = (n-m)/q. (Fovnning v binomilfodl vibl.) Tol få vi lså n m + m+ ( n m+ ) q Fovn kjøid nå mn finns l il slu i T. Hvis q < C, vo C n konsn, bli kjøidn O(nm). MEN d imlig å n q >> m, d bli kjøidn O(n) Ti-æ Suffix-æ Suffix fo bbbg
Div.