Vkommn Vkommn Fos: Guppæ: Dino Kbg, Sin Kogd, P Kisinsn Hvm dino@ifi.uio.no sink@ifi.uio.no pk@ifi.uio.no pos@sudn.mn.uio.no Læbok: Agoims: Squni, P, nd Disibud, Knn A. Bmn nd Jom L. Pu. Ti sgs i bokndn. (Søg fo å få bok md opyig 5.) Obig: To/ sykk, som må godkjnns. And, næiggnd kus: INF-MAT 3/437 Linæ opiming INF-MAT 536 Mmisk opiming INF 534 Agoim i bioinfomikk Kvissiking vd Ifi Undvisningspn Som sudn du og pik i å bid i kvissikingn v sudi di. D gjø du føs og fms gjnnom å d i undvisningsvuing. Fgæ vi iniiiv i å s i gng undvisningsvuingn fo v nk mn. Undvisningsvuingn gi dg muig i å komm md ibkmding og innspi på undvisningn i øp v sms, sik fobding kn gjøs undvis. 3/8 pk Søking i sng (kp. ) 6/9 pk Dynmisk pogmming (kp. 9) 3/9 /9 7/9 4/ / Undvisningsfi uk Du finn m infomsjon om d på ovdsidn i Insiu fo infomikk, und Ann Kvissiking, vd å føg dnn inkn: p://www.ifi.uio.no/sudinf/kvissiking/sudn. 4/ Eksmn
Søking i sng Dfinisjon Vnig søkgoim (on-in-søk) Pfiks-søking Niv goim Knu-Mois-P-goimn Suffiks-søking Boy-Moo-goimn Hs-bs Kp-Rbin-goimn E fb n mngd symbo A = {,,, k }. En sng S = S[:n-] v ngd n n skvns v symbo f A. (Vi kn s på sngn S båd som y S[:n-] og som n skvns v symbo S=s s s n-.) Indksing v ks Dsuku Ti-æ Suffiks-æ n - T [:n -] (Tks) P [:m -] (Pn) Søk foov Vindu Niv goim Niv goim n - n-m n - T [:n -] T [:n -] P [:m -] P [:m -] funion NivSingM (P [:m -], T [:n -]) fo s o n - m do if T [s :s + m -] = P n}fo-økk kskvs n m + gng. un(s) Hv sjkk inni m symbosmmnikning. ndif O(nm) kjøid (wos s) ndfo un(-) nd NivSingM
Knu-Mois-P-goimn Knu-Mois-P-goimn D, goimoisk s, om fo fobding v dn niv goimn. Dn fy vindu/pn b kk i v sg. Kn vi knskj fy m nn b sg? i - d j i j - j j - j j - d j d j d j ngdn v ngs suffix v P [ : j -] som også pfix v P [ : j - ] Vi v nå vi kn fy P j - d j sg. Og vi v P [: d j -] m T, så vi kn s å smmnikn md P [d j :m-]. funion KMPSingM (P [:m -], T [:n -]) i // indks i T j // indks i P CNx(P [:m -], Nx [n -]) wi i < n do if P [ j ] = T [ i ] n if j = m n un(i m + ) ndif i i + j j + s j Nx [ j ] if j = n if T [ i ] P [] n i i + ndif ndif ndif ndwi un(-) nd KMPSingM Knu-Mois-P-goimn O(n) Knu-Mois-P-goimn funion CNx (P [:m -], Nx [:m -]) Nx [ ] Nx [ ] i j wi i < m do if P [ j ] = P [ i - ] n Nx [ i ] j + i i + j j + s if j > n j Nx [ j ] (Tykkfi i bok) s Nx [ i ] i i + ndif ndif ndwi nd CNx
Knu-Mois-P-goimn Linæ goim, O(n) kjøid wos s. Dn niv goimn, og Knu-Mois-P pfiksbs (f vns mo øy). Boy-Moo-goimn (og vin) suffiksbs (f øy mo vns). i f x s m M B Boy-Moo-goimn (Hospoo) Dn niv goimn, og Knu-Mois-P pfiksbs (f vns mo øy). Boy-Moo-goimn (og vin) suffixbs (f øy mo vns). i f x s m M B Boy-Moo-goimn (Hospoo) O(mn) kjøid wos s (som dn niv goimn). Sub-inæ ( n) i gjnnomsni O(n og A m / m). Boy-Moo-goimn (Hospoo) funion HospooSingM (P [:m -], T [:n -]) i CSif(P [:m -], Sif [ A - ]) wi i < n m do j m wi j nd T [ i + j ] = P [ j ] do j j - ndwi if j = n un( i ) ndif i i + Sif[ T[ i + m -] ] ndwi un(-) nd HospooSingM
Kp-Rbin-goimn Vi n sngn vå komm f k-æ fb A = {,,,, k -}. Hv symbo i A kn ss på som siff i k-ssysm. Hv sng S i A* kn ss på som S i k-ssysm. Eks: k =, og A = {,,,, 9} (D vnig -ssysm) Sngn 683355 kn ss på som 6 83 355. Gi n sng P [:m -], kn vi bgn d kospondnd md m muipiksjon og m ddisjon (Hons g): Kp-Rbin-goimn Gi n kssng T [:n -], og s (s-indx), buk vi T s som bgns på dsngn T [s: s + m -]. (Vi n pn vå ngd m.) En goim bs på Hons g bgn T, T, T, og smmnikn diss n md P fo pn P. (Tisvnd dn niv goimn.) Gi T s - og k m, kn vi gn u T s i konsn id.! P = P [m -] + k(p [m -] + k(p [m -] + + k(p [] + kp [])...)) Eks: 34 = 4 + (3 + ( + *)) s- s s + m - n - T [:n -] T s Gunnn i vi kn bgn T s i konsn id nå vi T s - og k m, føgnd kunssjon: T s = k(t s - - k m *T [s]) + T [s+m] Kp-Rbin-goimn s =,, n m Konsn, bgns n gng, kn gjøs i id O(og m) Eks: k =, A = {,,,, 9} (D vnig -ssysm) og m = 7. T s - = 793745 T s = 937458 T s = (793745 ( * 7)) + 8 Kp-Rbin-goimn Kn bgn T s i konsn id nå vi T s - og k m. Aså kn vi bgn d n m + n T s, s =,,, n m og P i id O(n). Vi kn så, i oin, impmn n søkgoim md kjøid O(n). Dssv vi n T s og P i pksis væ fo so i goimn bi pkisk nvndb. Tiks å buk moduo-imikk. Vi gjø bgning moduo q (q ifdig vg pim, sik kq kku pss i 3/64 bis gis). Kn gjøs i konsn id. B muipiksjon og ddisjon, vi n diss opsjonn kn gjøs i konsn id.
Vi bgn T (q) s og P (q), vo T (q) s = T s mod q, P (q) = P mod q, og smmnikn. Kp-Rbin-goimn } Rsn i divisjonn, nå vi d på q: i inv {,,, q -}. funion KpRbinSingM (P [:m -], T [:n -], k, q) k m - mod q P (q) T (q) s fo i o m do P (q) (k * P (q) + P [ i ]) mod q T (q) (k * T (q) + T [ i ]) mod q ndfo Kp-Rbin-goimn Vi kn T (q) s = P (q), sv om T s P, n såk spuiøs m. H vi T (q) s = P (q), må vi så gjø n nøykig sjkk v T s og P. Md so nok q, snnsynign fo spuiøs m v. fo s o n - m do if s > n T (q) s (k * ( T (q) s - -T[ s ] * ) + T [ s + m ]) mod q ndif if T (q) s = P (q) n if T s = P n un(s) ndif ndif ndfo un(-) nd KpRbinSingM Kp-Rbin-goimn Lngs kjøid fo Kp-Rbin-goimn få vi nå pn P finns i sun v sngn T. Snnsynign fo T (q) s n n spsifikk vdi i inv {,,, q-} unifom /q. (Vi n sngn unifom fod.) T (q) s, s =,,, n-m- vi så gi oppv i n spuiøs m md snnsynig /q. L væ d fovnd n spuiøs m. Hv v diss innbæ inni m smmnikning. I igg må vi sjkk T (q) n-m, vo vi få m. Kjøidn bi så: ( + )m + (n m + ) n binomifod soksisk vib. (Hv skif fosøk, md suksssnsynig /q, og vi gjø n-m fosøk) [Nå ns vi spuiøs m som suksss ] E[] = (n-m)/q. (Fovnning v binomifod vib.) To få vi så Kp-Rbin-goimn n m + m+ ( n m+ ) q Fovn kjøid nå mn finns i su i T. Hvis q < C, vo C n konsn, bi kjøidn O(nm). MEN d imig å n q >> m, d bi kjøidn O(n)
Ti-æ Ti-æ i w Tykkfi i bok n o g o b in w i m n v w d goim n viw b od y y Suffix-æ Div. Suffix fo bbbg b g bbg g bg bbg g