Estrutur d Ddos pr Cojutos Aul 16 Estrutur d ddos pr Cojutos Disjutos Prof. Mro Aurélio Stfs mro m dt.ufms.r www.dt.ufms.r/ mro Complxidd srá mdid m fução: úmro d oprçõs Mk_St m úmro totl d oprçõs Mk_St, Uio Fid_St Os.1: m Os.2: Númro d Op. Uio 1 Exmplo: Dtrmir s ompots oxs d um grfo G = (V,E) Df.: Compot ox: Sugrfo oxo mximl d G Aul 16 p. 1 Aul 16 p. 3 Estrutur d Ddos pr Cojutos Di Sj S = {s 1,s 2,...,s k } ojuto d oj. disjutos Cd s i tm um rprstt x s i qu idtifi s i Qulqur método d solh d x srv, dsd qu o rprstt ão mud s s i ão mud Oprçõs Mk_St(x): Cri um ovo ojuto ujo úio lmto é x Uio(x,y): Cri um ojuto qu é uião dos ojuto otdo x y, digmos s x,s y. Supomos qu s x s y =. s x s y são dstruídos. Um lmto é solhido omo rprstt d uião Fid_St(x): dvolv um potdor pr o rprstt do úio ojuto otdo x. Compots oxs Compots_Coxs(G) 1:for Cd v V do 2: Mk_St(v) 3:for d rst (u, v) E do 4: if Fid_St(u) Fid_St(v)th 5: Uio(u, v) Msm_Compot(u, v) 1:if Fid_St(u)=Fid_St(v)th 2: dvolvt 3:ls 4: dvolvf Aul 16 p. 2 Aul 16 p. 4
Implmtção por lists ligds d g Mk_St, Fid_St: são os rprstts f Implmtção por lists ligds Sqüêi d m oprçõs rqur Θ(m 2 ) Mk_St(x 1 ). Mk_St(x ) Uio(x 1,x 2 ) Uio(x 2,x 3 ). Uio(x 1,x ) Os.: m = 2 1 Mlhori: N uião ot list mor o fil. É ssário mtr otdors os rprstts Aul 16 p. 5 Aul 16 p. 7 Implmtção por lists ligds Uio(x,y): ot list d x o fil d list d y. É ssário tulizr os potdors pr os rprstts d list otdo x d g f Implmtção por lists ligds Torm Usdo mlhori trior, um sqüêi d m oprçõs, sdo dls Mk_St, é fit tm tmpo O(m + lg ) Prov: Cosidr um lmto x. Quts vzs o potdor d x pr su rprstt pod sr tulizdo? Cd vz qu houvr um tulizção, o oj. otdo x plo mos dor d tmho. Portto o potdor pod sr tulizdo o máximo lg vzs. Assim, tmpo totl pr op. Uio é O( lg ). Como Mk_St Fid_St são fito m tmpo O(1) xistm O(m) dls, o tmpo do lgoritmo é O(m + lg ) Aul 16 p. 6 Aul 16 p. 8
Implmtção por Florsts disjut A riz d árvor é o rprstt Mk_St: árvor om um ó Fid_St: pror árvor té riz xl d yl h j i Mlhoris Mlhori 1 : Uião por rk Mlhori 2 : Comprssão d miho Rk: itiro, limitt suprior ltur d x d Fid g f Aul 16 p. 9 Aul 16 p. 11 Implmtção por Florsts disjut Mlhoris Uio: riz d um árvor pss potr pr riz d outr xl d Uio yl h i j Mlhori 1 : Uião por rk Mlhori 2 : Comprssão d miho Rk: itiro, limitt suprior ltur d x d g f Fid Aul 16 p. 10 Aul 16 p. 12
Algoritmos Mk_St(x) 1: p[x] = x 2: rk[x] = 0 Fid_St(x) 1:if p[x] xth 2: p[x] =Fid_St(p[x]) 3: dvolv p[x] Uio(x, y) 1: Lik(Fid_St(x),Fid_St(y)) Prorpidds dos Rks Lm 22.2 Qulqur x, rk[x] rk[p[x]], om dsiguldd strit s x p[x]. O vlor d rk[x] iii om 0 umt té qu x p[x]. A prtir dí rk[x] ão mud. Prov: Idução o o. d oprçõs (Exr.) Sj siz[x] o o. d ós d árvor om riz x. Aul 16 p. 13 Aul 16 p. 15 Algoritmos Lik(x, y) 1:if rk[x] > rk[y] th 2: p[y] = x 3:ls 4: p[x] = y 5: if rk[x] = rk[y] th 6: rk[y] = rk[y] + 1 Vmos mostrr qu o tmpo d prossmto d m oprçõs om s mlhoris é O(m lg ) lg (0) = lg (k) = lg(lg (k 1) ) lg = mi{k 0 lg (k) 1} Propridds dos Rks Lm22.3 Qulqur riz x, siz[x] 2 rk[x] Prov: Idução o o. d oprçõs Lik. Bs 0 Liks: rk[x] = 0 árvor só otém x P.I. Pl HI siz[x] 2 rk[x] siz[y] 2 rk[y]. Cso rk[x] rk[y]. SPG, supor rk[x] < rk[y]. siz [y] = siz[y] + siz[x] 2 rk[y] + 2 rk[x] = 2 rk [y] Cso rk[x] = rk[y]: siz [y] 2 rk[y] + 2 rk[x] = 2 rk[y]+1 = 2 rk [y] Aul 16 p. 14 Aul 16 p. 16
Propridds dos Rks Lm22.4 Qulqur r 0, itiro há o máximo 2 r ós d rk r. Prov: Fix um vlor d r. Cd x om rk[x] = r, ssoimos plo mos 2 r ós: os ós qu stvm árvor d riz x qudo rk[x] s torou r. Not qu d lmto y fi ssoido o máximo um ó x, qulqur ovo strl d y trá rk plo mos r + 1. Portto, tmos o máximo 2 r ós d rk r. Corolário22.5 Cd ó tm rk o máximo lg. Prov: Cso lgum ó th rk > lg, plo Lm trá 2 lg +1 < 1 ós. Asurdo. Aul 16 p. 17 Aális Amortizd do Fid_St Prtiio os ós m loos d ordo om o rk: lmto d rk r stá o loo lg r. 1 s j = 1 1 s j = 0 B(j) = 2 s j = 1 2 2 2... 2 9 = ; j s j 2 Os. último loo é lg 1, pois rk máximo é lg Etão, o j o loo, j = 0, 1,...,lg 1, osist do oj. d ós d rk {B(j 1) + 1,...,B(j)} Pr um op. Fid_St vmos usr dois tipos d usto: tipo loo tipo miho. Aul 16 p. 19 Propridds dos Rks Lm22.6 Covrt um sqüêi S d m oprçõs Mk_St, Uio Fid_St m um sqüêi S d m oprçõs Mk_St, Lik Fid_St, trformdo d Uio m dus Fid_St um Lik. S S é xutd m tmpo O(m lg ), S é xutd m tmpo O(m lg ). Prov: Como m 3m, tmpo O(m lg ) pr S impli m tmpo O(m lg ) pr S. Torm22.7 Um sqüêi d m oprçõs Mk_St, Lik Fid_St, ds quis são Mk_St, são xutds m tmpo O(m lg ) um florst disjut om uião por rk omprssão d mihos Prov: Aális mortizd. Mk_St Lik tm usto mortizdo O(1). Aális Amortizd do Fid_St Supoh qu o miho do Fid_St osist d x 0, x 1,...,x l, od o ó x i = p[x i 1 ] x l é riz. Pr j = 0, 1,...,lg 1, triuímos um usto tipo loo o último ó om rk o loo j do miho tmém o ó x l 1. Pr d ó sm usto tipo loo triuímos um usto tipo miho. Totl d usto tipo loos: No máximo lg + 1 usto tipo loo pro Fid_St. Como o totl dsts oprçõs é limitdo por m, o totl d usto loos é O(m lg ) Totl d usto tipo miho: Um vz qu um ó x (x riz x filho d riz) r um usto tipo loo l u mis r um usto tipo miho: rk[x] prm ostt difrç rk[p[x]]-rk[x] só pod umtr. Portto, x smpr trá ustos tipo loos dí té o fil ds oprçõs. Aul 16 p. 18 Aul 16 p. 20
Aális Amortizd do Fid_St S um ó x r um usto tipo miho tão p[x] x ts d omprssão. Portto p[x] mudrá pós omprssão. Admis, o ovo pi d x trá um rk mior do qu o do su vlho pi. Quts vzs isto pod oorr? Est úmro é máximo qudo x tm o mor rk do loo, isto é, B(j 1) + 1. Sus pis trim rk {B(j 1) + 2,...,B(j)}. Portto d ó pod tr usto miho B(j) B(j 1) 1 vzs. Sj N(j) o o. d ós om rk o loo j. Etão Portto N(j) j 1, N(j) N(j) B(j) r=b(j 1)+1 j = 0, N(0) 2 r B(j) B(j 1) 1 1 2 B(j 1)+1 2 i B(j) i=0 B(j) pr todo j 0 Aul 16 p. 21 Aális Amortizd do Fid_St Sj P() o totl d usto tipo miho P() lg 1 j=0 lg 1 j=0 = lg (B(j) B(j 1) 1) B(j) B(j) B(j) Portto, o totl d usto durt s oprçõs Fid_St é O(m lg ) pois < m. Sgu o torm. Aul 16 p. 22