Agim ROBERT SEDGEWICK KEVIN WAYNE Summ f pfmnc f m- impmnin Od f gw f fqunc f pin..2 TRIES impmnin pic c c in d dd pin pin n k Agim F O U R T H E D I T I O N R-w i n c i cc-d pin d-ck BST g N g N g N cmpt() qu() Cd() und unifm ing umpin ROBERT SEDGEWICK KEVIN WAYNE p://g.c.pincn.du Q. Cn w d? u cc mk R-w dciin (ind f in dciin) A. Y, if w cn vid xmining ni k, wi ing ing. 2 Sing m ic API Sing m impmnin c umm Sing m. Sm pciizd ing k. cc cc (pic c) ddup puic c SingST<Vu> impmnin c i c mi in pc (fnc) m.x c.x SingST() c n mp m d-ck BST L + c g 2 N c g 2 N c g 2 N N. 9. vid pu(sing k, Vu v) pu k-vu pi in m Vu g(sing k) un vu pid wi givn k ing (in ping) L L L N N.. vid d(sing k) d k nd cpnding vu Pm N = num f ing L = ng f ing R = dix fi iz wd diinc m.x.2 MB 2 K 2 K c.x 82 MB. M 9 K G. F n ing, m fxi n BST. Cng. Efficin pfmnc f ing k.
Ti.2 TRIES Agim R-w i n c i cc-d pin ROBERT SEDGEWICK KEVIN WAYNE p://g.c.pincn.du Ti Sc in i Ti. [fm iv, u pnuncd ""] S cc in nd (n k). Ec nd R cidn, n f c pi cc. (f nw, w d n dw nu ink) Fw ink cpnding c cc in k. Sc i: nd w c nd nn-nu vu. Sc mi: c nu ink nd w c nd nu vu. ink i f k wi ink i f k wi g("") k vu vu f in nd cpnding k cc un vu cid wi k cc (un ) 8
Sc in i Sc in i Fw ink cpnding c cc in k. Sc i: nd w c nd nn-nu vu. Sc mi: c nu ink nd w c nd nu vu. Fw ink cpnding c cc in k. Sc i: nd w c nd nn-nu vu. Sc mi: c nu ink nd w c nd nu vu. g("") g("") c m mind n inmdi nd (un ) 9 n vu cid wi k cc (un nu) Sc in i Inin in i Fw ink cpnding c cc in k. Sc i: nd w c nd nn-nu vu. Sc mi: c nu ink nd w c nd nu vu. Fw ink cpnding c cc in k. Encun nu ink: c nw nd. Encun cc f k: vu in nd. g("") pu("", ) n ink (un nu) 2
Ti cnucin dm Ti cnucin dm i i Ti pnin: Jv impmnin R-w i: Jv impmnin Nd. A vu, pu fnc R nd. piv ic c Nd piv Ojc vu; piv Nd[] nx = nw Nd[R]; u Ojc ind f Vu inc n gnic cin in Jv puic c TiST<Vu> piv ic fin in R = 2; piv Nd = nw Nd(); piv ic c Nd /* pviu id */ xndd ASCII puic vid pu(sing k, Vu v) = pu(, k, v, ); 2 cc impici dfind ink indx 2 c nd n f ink nd vu ni k n cc xpici d piv Nd pu(nd x, Sing k, Vu v, in d) if (x == nu) x = nw Nd(); if (d == k.ng()) x.v = v; un x; c c = k.ca(d); x.nx[c] = pu(x.nx[c], k, v, d+); un x; Ti pnin
R-w i: Jv impmnin (cninud) Ti pfmnc Sc i. Nd xmin L cc f qui. puic n cnin(sing k) un g(k)!= nu; puic Vu g(sing k) Nd x = g(, k, ); if (x == nu) un nu; un (Vu) x.v; c ndd piv Nd g(nd x, Sing k, in d) if (x == nu) un nu; if (d == k.ng()) un x; c c = k.ca(d); un g(x.nx[c], k, d+); Sc mi. Cud v mimc n fi cc. Tpic c: xmin n fw cc (uin). Spc. R nu ink c f. (u uin pc pi if mn ing cmmn pfix) c impici dfind ink indx 2 c nd n f in nd vu Bm in. F c i nd vn f c mi, u w pc. 8 Din in n R-w i Din in n R-w i T d k-vu pi: Find nd cpnding k nd vu nu. If nd nu vu nd nu ink, mv nd (nd cu). T d k-vu pi: Find nd cpnding k nd vu nu. If nd nu vu nd nu ink, mv nd (nd cu). d("") d("") vu nu 9 nu vu nd ink (d nd) 2
Sing m impmnin c umm cc cc (pic c) ddup impmnin c i c mi in pc (fnc) m.x c.x d-ck BST L + c g 2 N c g 2 N c g 2 N N. 9. ing (in ping) L L L N N.. R-w i L g R N L (R+) N.2 u f mm Agim.2 TRIES R-w i n c i cc-d pin R-w i. Md f cic f m R. T muc mm f g R. ROBERT SEDGEWICK KEVIN WAYNE p://g.c.pincn.du Cng. U mm,.g.,,-w i f Unicd! 2 Tn c i S cc nd vu in nd (n k). Ec nd cidn: m (f), qu (midd), g (ig). Tn c i S cc nd vu in nd (n k). Ec nd cidn: m (f), qu (midd), g (ig). F Agim f Sing nd Scing Sing ink TST f k wi f ink TST f k wi Jn L. Bn* R Sdgwick# u u Ac W pn ic gim f ing nd cing muik d, nd div fm m pcic C impmnin f ppicin in wic k cc ing. T ing gim nd Quick nd dix ; i i cmpiiv wi knwn C cd. T cing gim nd i nd in c ; i i f n ing nd cmmn ud c md. T ic id ind g- i cmpiiv wi m fficin ing ing pgm knwn. T cnd pgm i m impmnin i f n ing, wic i cmmn gdd f m impmnin. T m impmnin i muc m pc-fficin n muiw, nd upp m dvncd c. In mn ppicin pgm, u Quick impmnin d n n c cmp pin, 2 8 2 c nd ink 8 TST pnin f i 2 2
Sc i in TST Sc mi in TST g("") g("") un vu cid wi k cc 2 n ink (un nu) 2 Tn c i cnucin dm Tn c i cnucin dm n c i n c i 2 28
Sc in TST 2-w i v. TST Fw ink cpnding c cc in k. If, k f ink; if g, k ig ink. If qu, k midd ink nd mv nx k cc. Sc i. Nd w c nd nn-nu vu. Sc mi. Rc nu ink nd w c nd nu vu. g("") mimc: k f ig ink, d n mv nx c 2 un vu cid wi k cc TST c xmp mc: k midd ink, mv nx c u 8 29 2-w i. 2 nu ink in c f. TST. nu ink in c f. 2-w i ( nu ink, n wn) TST ( nu ink) nw f ip ik dim g j n k u c mn gg fw j w j p gig w w c wd cw cu f p g jm dug nd TST pnin in Jv TST: Jv impmnin A TST nd i fiv fid: A vu. A cc c. A fnc f TST. A fnc midd TST. A fnc ig TST. piv c Nd piv Vu v; piv c c; piv Nd f, mid, ig; puic c TST<Vu> piv Nd ; piv c Nd /* pviu id */ puic vid pu(sing k, Vu v) = pu(, k, v, ); ndd f ink (R = 2) u ink f k wi Ti nd pnin n c (TST) ink f k wi u u piv Nd pu(nd x, Sing k, Vu v, in d) c c = k.ca(d); if (x == nu) x = nw Nd(); x.c = c; if (c < x.c) x.f = pu(x.f, k, v, d); if (c > x.c) x.ig = pu(x.ig, k, v, d); if (d < k.ng() - ) x.mid = pu(x.mid, k, v, d+); x.v = v; un x; 2
TST: Jv impmnin (cninud) Sing m impmnin c umm puic n cnin(sing k) un g(k)!= nu; impmnin c i cc cc (pic c) c mi in pc (fnc) m.x ddup c.x puic Vu g(sing k) Nd x = g(, k, ); if (x == nu) un nu; un x.v; piv Nd g(nd x, Sing k, in d) if (x == nu) un nu; c c = k.ca(d); if (c < x.c) un g(x.f, k, d); if (c > x.c) un g(x.ig, k, d); if (d < k.ng() - ) un g(x.mid, k, d+); un x; d-ck BST L + c g 2 N c g 2 N c g 2 N N. 9. ing (in ping) Rmk. Cn uid ncd TST vi in civ L + g N w-c gun. L L L N N.. R-w i L g R N L (R+) N.2 Bm in. TST i f ing (f ing k), pc fficin. u f mm TST L + n N n N L + n N N.2 8. TST wi R 2 ncing Sing m impmnin c umm Hid f R-w i nd TST. D R 2 -w ncing. Ec f R 2 nd pin TST. impmnin c i cc cc (pic c) c mi in pc (fnc) m.x ddup c.x f 2 2 c z zz TST TST TST TST TST d-ck BST L + c g 2 N c g 2 N c g 2 N N. 9. ing (in ping) L L L N N.. R-w i L g R N L (R+) N.2 u f mm TST L + n N n N L + n N N.2 8. TST wi R 2 L + n N n N L + n N N + R 2. 2. Q. W u n- nd w- wd? Bm in. F n ing f u ncmk cin.
TST v. ing Hing. Nd xmin ni k. Sc i nd mi c u m. Pfmnc i n funcin. D n upp dd m pin. TST. Wk n f ing ( digi) k. On xmin ju nug k cc. Sc mi m invv n fw cc. Supp dd m pin (pu x!). Bm in. TST : F n ing (pci f c mi). M fxi n d-ck BST. [ und] Agim ROBERT SEDGEWICK KEVIN WAYNE p://g.c.pincn.du.2 TRIES R-w i n c i cc-d pin Sing m API Sing m API Cc-d pin. T ing m API upp v ufu cc-d pin. k vu puic c SingST<Vu> SingST() c m wi ing k Pfix mc. K wi pfix :,, nd. Widcd mc. K mc.: nd. Lng pfix. K i ng pfix f :. vid pu(sing k, Vu v) pu k-vu pi in m Vu g(sing k) vu pid wi k vid d(sing k) d k nd cpnding vu I<Sing> k() k I<Sing> kwipfix(sing ) k ving pfix I<Sing> ktmc(sing ) k mc (w. i widcd) Sing ngpfixof(sing ) ng k i pfix f Rmk. Cn dd dd ST md,.g., f() nd nk(). 9
Wmup: dd iin Odd iin: Jv impmnin T i ug k in d d: D ind v f i; dd k ncund quu. Minin qunc f cc n p fm nd. T i ug k in d d: D ind v f i; dd k ncund quu. Minin qunc f cc n p fm nd. kwipfix(""); k() k q puic I<Sing> k() Quu<Sing> quu = nw Quu<Sing>(); cc(, "", quu); un quu; qunc f cc n p fm x piv vid cc(nd x, Sing pfix, Quu<Sing> q) if (x == nu) un; if (x.v!= nu) q.nquu(pfix); f (c c = ; c < R; c++) cc(x.nx[c], pfix + c, q); u SingBuid Ccing k in i (c) 2 Pfix mc Pfix mc in n R-w i Find k in m ing wi givn pfix. Find k in m ing wi givn pfix. Ex. Aucmp in c pn, c, x di,. U p cc n im. Sm p mcing ing. kwipfix(""); find ui f k ginning wi "" cc k in ui Pfix mc in i puic I<Sing> kwipfix(sing pfix) Quu<Sing> quu = nw Quu<Sing>(); Nd x = g(, pfix, ); cc(x, pfix, quu); un quu; f ui f ing ginning wi givn pfix k quu
Lng pfix Lng pfix in n R-w i Find ng k in m i pfix f qu ing. Ex. T nd pck wd dinin IP dd, u c IP dd in uing i ng pfix mc. Find ng k in m i pfix f qu ing. Sc f qu ing. Kp ck f ng k ncund. "28" "28.2" "28.2." "28.2.." "28.2." "28.2.." "28.2.." "28.222" "28.222." pnd 2-i in num f IPv (ind f ing) ngpfixof("28.2..") = "28.2." ngpfixof("28.2..") = "28.2" ngpfixof("28..2.") = "28" N. N m f: f("28.2..") = "28.2.." "" 2 c nd nd f ing vu i n nu un "" 2 c nd nd f ing vu i nu un ( k n p) Piiii f ngpfixof() xof() "" 2 c nd nu ink un ( k n p) Lng pfix in n R-w i: Jv impmnin T9 xing Find ng k in m i pfix f qu ing. Sc f qu ing. Kp ck f ng k ncund. puic Sing ngpfixof(sing qu) in ng = c(, qu,, ); un qu.uing(, ng); piv in c(nd x, Sing qu, in d, in ng) if (x == nu) un ng; if (x.v!= nu) ng = d; if (d == qu.ng()) un ng; c c = qu.ca(d); un c(x.nx[c], qu, d+, ng); G. Tp x mg n pn kpd. Mui-p inpu. En pd ping k. Ex. : T9 x inpu. Find wd cpnd givn qunc f num. P cmpin pin. Ex. : Q. Hw impmn? " muc f nd m fun w n x" www.9.cm 8
Pici i Suffix Pici i. [Pcic Agim Riv Infmin Cdd in Apnumic] Rmv n-w ncing. Ec nd pn qunc f cc. Impmnin: n p nd i cu. pu("", ); pu("fi", 2); ndd i n n-w ncing Suffix. Pici i f uffix f ing. Lin-im cnucin: w nd cp f i cu. uffix f BANANAS Appicin. D c. P2P nwk c. IP uing : find ng pfix mc. Cmpd qud- f N-d imuin. Efficin ing nd quing XML dcumn. A knwn : ci-i, dix. f i 2 inn n-w ncing xn n-w ncing fi 2 Appicin. BANANAS A NA S NAS NA S S NAS S Lin-im: ng pd uing, ng cmmn uing, ng pindmic uing, uing c, ndm p,. Cmpuin ig d (BLAST, FASTA). 2 Sing m umm A ucc in gim dign nd ni. Rd-ck BST. Pfmnc gun: g N k cmp. Supp dd m API. H. Pfmnc gun: cnn num f p. Rqui gd funcin f k p. Ti. R-w, TST. Pfmnc gun: g N cc ccd. Supp cc-d pin. Bm in. Yu cn g ning xmining - i (!!!)