MAC0328 Algoritmos m Gros AULA 1 Eição 2011 MAC0328 Algoritmos m Gros Aministrção Págin isiplin: uls, stro, órum,... http://p.im.usp.r/ Liro: PF = Pulo Folo, Algoritmos pr Gros m C i Sgwik www.im.usp.r/ p/lgoritmos_pr_gros/ S = Rort Sgwik, Algorithms in C (prt 5: Grph Algorithms) http://spikmth.om/250.html CLRS = Cormn-Lisrson-Rist-Stin, Introutions to Algorithms MAC0328 MAC0328 MAC0328 Algoritmos m gros é: MAC0328 omin ténis um isiplin introutóri m projto nális lgoritmos sor gros um lortório lgoritmos sor gros progrmção struturs os nális lgoritmos tori os gros pr rsolr prolms sor gros.
Pré-rquisitos O pré-rquisito oil MAC0328 é MAC0122 Prinípios Dsnolimnto Algoritmos. No ntnto, é romnál qu já tnhm urso MAC0211 Lortório progrmção; MAC0323 Estruturs os Costum sr onnint ursr MAC0328 simultnmnt om MAC0338 Anális lgoritmos. Prinipis tópios gros irigios struturs os pr gros onstrução gros ltórios orsts árors minhos ilos us m lrgur minhos mínimos gros iprtios us m prouni gros irigios ílios ornção topológi ponts ilos gros onxos omponnts gros ionxos árors grors mínims uxo m rs Digros Digros Um igro (irt grph) onsist um onjunto értis (ols) um onjunto ros (hs) Exmplo: rprsntção um gro S 17.0, 17.1 Aros Um ro é um pr orno értis Exmplo: w são értis -w é um ro Pont iniil nl Pr ro -w, o érti é pont iniil w é pont nl Exmplo: é pont iniil w é pont nl -w w w w
Aros nti-prllos Dois ros são nti-prllos s pont iniil um é pont nl o outro Exmplo: -w w- são nti-prllos Digros simétrios Um igro é simétrio s um sus ros é nti-prllo outro Exmplo: igro simétrio w Grus ntr sí gru ntr = no. ros om pont nl gru sí = no. ros om pont iniil Númro ros Quntos ros, no máximo, tm um igro om V értis? Exmplo: tm gru ntr 1 sí 2 Númro ros Quntos ros, no máximo, tm um igro om V értis? A rspost é V (V 1) = Θ(V 2 ) Espição Digros pom sr spios trés su list ros Exmplo: igro omplto = too pr orno értis istintos é ro igro nso = tm muitos muitos ros - - - - igro sprso = tm pouos ros - -
Gros Gros Um gro é um igro simétrio Exmplo: um gro S 17.0, 17.1 Gros Um gro é um igro simétrio Exmplo: rprsntção usul Arsts Um rst é um pr ros nti-prllos. Exmplo: - - são msm rst Espição Gros pom sr spios trés su list rsts Exmplo: Grus értis Em um gro gru = númro rsts om pont m Exmplo: tm gru 3 - - - - - -
Númro rsts Númro rsts Qunts rsts, no máximo, tm um gro om V értis? Qunts rsts, no máximo, tm um gro om V értis? A rspost é V (V 1)/2 = Θ(V 2 ) gro omplto = too pr não-orno értis istintos é rst Estruturs os Vértis Vértis são rprsntos por ojtos o tipo Vrtx. Os értis um igro são 0,1,...,V-1. S 17.2 #n Vrtx int Aros ARC Um ojto o tipo Ar rprsnt um ro om pont iniil pont nl w. A unção ARC r ois értis w ol um ro om pont iniil pont nl w. typ strut { Vrtx ; Vrtx w; } Ar;
ARC Arsts A unção ARC r ois értis w ol um ro om pont iniil pont nl w. Um ojto o tipo Eg rprsnt um rst om ponts w. Ar ARC (Vrtx, Vrtx w) { 1 Ar ; 2.= ; 3.w= w; 4 rturn ; } Arsts Arsts Um ojto o tipo Eg rprsnt um rst om ponts w. A unção EDGE r ois értis w ol um rst om ponts w. #n Eg Ar Arsts Gros no omputor A unção EDGE r ois értis w ol um rst om ponts w. Usrmos us rprsntçõs lássis: mtriz jêni (gor) tor lists jêni (próxims uls) #n EDGE ARC Há áris outrs mnirs, omo, por xmplo mtriz iniêni qu é propri pr MAC0315 Prog. Linr.
Mtrizs jêni Mtriz jêni igros Mtriz jêni um igro tm linhs oluns inxs por értis: j[][w] = 1 s -w é um ro j[][w] = 0 m so ontrário S 17.3 Exmplo: 0 1 2 3 0 1 2 3 0 0 1 1 0 1 0 0 0 1 2 0 1 0 1 3 0 0 0 0 Consumo spço: Θ(V 2 ) áil implmntr Mtriz jêni gros Mtriz jêni um gro tm linhs oluns inxs por értis: j[][w] = 1 s -w é um rst j[][w] = 0 m so ontrário Exmplo: 0 1 2 3 1 0 2 3 0 0 1 1 0 1 1 0 1 1 2 1 1 0 1 3 0 1 1 0 Estrutur igrph A strutur igrph rprsnt um igro V ontém o númro értis A ontém o númro ros o igro j é um pontiro pr mtriz jêni Consumo spço: Θ(V 2 ) áil implmntr Estrutur igrph Estrutur Digrph A strutur igrph rprsnt um igro V ontém o númro értis A ontém o númro ros o igro j é um pontiro pr mtriz jêni Um ojto o tipo Digrph ontém o nrço um igrph strut igrph { int V; int A; int **j; };
Estrutur Digrph Digro Digrph G Um ojto o tipo Digrph ontém o nrço um igrph 2 1 typ strut igrph *Digrph; 0 4 3 5 Estruturs os Estruturs grph Grph G 6 10 V A j Ess msm strutur srá us pr rprsntr gros 0 0 1 2 3 4 5 0 0 1 1 1 0 1 0 0 0 0 0 0 2 0 1 0 0 1 0 3 0 0 0 0 1 1 4 5 0 1 0 0 0 1 0 1 0 0 0 0 Estruturs grph Grph Estruturs grph Grph Ess msm strutur srá us pr rprsntr gros Ess msm strutur srá us pr rprsntr gros #n grph igrph #n Grph Digrph O númro rsts um gro G é #n grph igrph #n Grph Digrph O númro rsts um gro G é (G->A)/2
Funçõs ásis MATRIXint Alo um mtriz om linhs 0..r-1 oluns 0..-1, lmnto mtriz r lor l int **MATRIXint (int r, int, int l) { S 17.3 MATRIXint Alo um mtriz om linhs 0..r-1 oluns 0..-1, lmnto mtriz r lor l linh Consumo tmpo númro xuçõs linh int **MATRIXint (int r, int, int l) { 0 Vrtx i, j; 1 int **m = mllo(r * sizo(int *)); 2 or (i = 0; i < r; i++) 3 m[i] = mllo( * sizo(int)); 4 or (i = 0; i < r; i++) 5 or (j = 0; j < ; j++) 6 m[i][j] = l; 7 rturn m; } Conlusão 1 = 1 = Θ(1) 2 = r + 1 = Θ(r) 3 = r = Θ(r) 4 = r + 1 = Θ(r) 5 = r ( + 1) = Θ(r ) 6 = r = Θ(r ) totl Θ(1) + 3 Θ(r) + 2 Θ(r ) = Θ(r ) DIGRAPHinit Supono qu o onsumo tmpo unção mllo é onstnt Dol (o nrço ) um noo igro om értis 0,..,V-1 nnhum ro. Digrph DIGRAPHinit (int V) { O onsumo tmpo unção MATRIXint é Θ(r ).
DIGRAPHinit Dol (o nrço ) um noo igro om értis 0,..,V-1 nnhum ro. Digrph DIGRAPHinit (int V) { 0 Digrph G = mllo(sizo *G); 1 G>V = V; 2 G>A = 0; 3 G>j = MATRIXint(V,V,0); 4 rturn G; }