1 / 19

Cursul 6

Cursul 6. Paradigma algoritmilor “greedy” (continuare) Studii de caz arborele partial de cost minim secventializarea activitatilor Prezentarea formala a paradigmei. Arborele partial de cost minim - formulare. instanta: un graf ponderat (G, w), G = (V, E), w : E  R

marcin
Download Presentation

Cursul 6

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Cursul 6 • Paradigma algoritmilor “greedy” (continuare) • Studii de caz • arborele partial de cost minim • secventializarea activitatilor • Prezentarea formala a paradigmei

  2. Arborele partial de cost minim - formulare • instanta: • un graf ponderat (G, w), G = (V, E), w : E  R • arbore = graf conex fara cicluri • subgraf partial: G’ = (V, E’) cu E’  E • arbore partial = subgraf partial + arbore • costul unui arbore partial este w(G’) = {i,j}E’ w({i,j}) • iesire: • un arbore partial de cost minim

  3. Arborele partial de cost minim – algoritm generic procedure APCM(G, w) begin A   E1  E while ((V, A) nu este arbore partial) do alege din E1 o muchie {i,j} “sigura” pentru A E1  E1 - {{i,j}} A  A  {{i,j}} end • muchia {i,j} “sigura” pentru A  A  {{i,j}}este submultime a unui arbore partial de cost minim

  4. Arborele partial de cost minim – algoritmul lui Kruskal 10 10 20 20 50 20 30 30 30 40 10 10 • A este o padure • pasul de alegere locala alege o muchie de cost minim ce uneste doi arbori din A • structura de date pentru A: union-find

  5. Arborele partial de cost minim – algoritmul lui Kruskal (cont) procedure APCM_Kruskal(G, w) begin A   for each i in V do single(i) sorteaza E crescator dupa w for each {i,j} in E in ordine crescatoare do if (find(A, i)  find(A, j) then union(A, i, j) end

  6. Algoritmul lui Kruskal - formalizare • S = multimea de muchii • X  C(S) daca X este padure • alegere locala: • adauga la B muchia {i,j} de cost minim a.i. • {i,j} uneste doi arbori din (B  {{i,j}}  C(S) ) • {i,j} de cost minim peste muchiile care satisfac proprietatea de mai sus • proprietatea de substructura optima

  7. Arborele partial de cost minim – algoritmul lui Prim 10 10 20 20 50 20 30 30 30 50 40 10 10 40 • A este arbore cu radacina r • pasul de alegere locala alege o muchie de cost minim ce se poate adauga la A mentinind proprietatea de arbore • structura de date pentru A: arbore reprezentat prin legatura parinte • structura de data pentru E1: un min-heap Q cu cheie[i] = ponderea minima peste ponderile muchiilor ce unesc pe i cu un virf ales deja

  8. Arborele partial de cost minim – algoritmul lui Prim procedure APCM_Prim(G, w, r) begin Q  V for fiecare i in Q do cheie[i]   cheie[r]  0; parinte[r]  -1 while (Q  ) do citeste(Q,i); elimina(Q) for (fiecare j in listaDeAdiac[i]) do if (j  Q and w({i,j}) < cheie[j]) then parinte[j] = i; cheie[j]  w({i,j}) end

  9. Algoritmul lui Kruskal - formalizare • S = multimea de muchii • X  C(S) daca X estearbore • alegerelocala: • adauga la B muchia {i,j} de cost minim a.i. • B  {{i,j}} arbore ( C(S) ) • {i,j} de cost minim pestemuchiile care satisfacproprietatea de maisus • proprietatea de substructura optima

  10. Secventializarea optima a activitatilor: formulare • Intrare: • n activitati 0,1,2, …,n-1 • fiecare unitate dureaza o unitate de timp • realizarea activitatii i aduce profitul p(i) > 0 • activitatea i trebuie terminata la termenul limita d(i) (deadline) • Iesire • o lista liniara s = (s(0),…, s(k-1)) de activitati a.i. • orice activitate s(i) este realizata in termen, d(s(i))  i+1 • profitul este maxim

  11. Secventializarea optima a activitatilor: exemplu • o solutie posibila: (0, 3,1) cu profitul 20 + 25 + 35 = 80 • d(0) = 2  1, d(3) = 2  2, d(1) = 3  3 • o alta solutie posibila: (2, 3,1) cu profitul 35 + 25 + 35 = 95 • d(2) = 1  1, d(3) = 2  2, d(1) = 3  3 • exista vreo solutie mai buna?

  12. Secventializarea optima a activitatilor: model mat. • solutie acceptabila: s = (s(0),…, s(k-1)) a.i. (i) d(s(i))  i+1 (orice activitate este realizata in timp) • solutia optima: s* a.i. s* aduce profit maxim peste solutiile acceptabile i p(s*(i)) = max{i p(s(i)) | s acceptabila} • reordonarea unei solutii acceptabile in ordinea crescatoare a termenelor limita produce tot o solutie acceptabila (2, 0, 1) solutie acceptabila  (0, 2, 1) solutie acceptabila Rezulta ca putem reprezenta o solutie acceptabila ca o multime: {0, 1, 2}; secventa acceptabila se obtine ordonand multimea dupa termenii limita

  13. Secventializarea optima a activitatilor: model mat. • criteriul de alegere locala: B  B  {i} unde i este activitatea de profit maxim a.i. B  {i} este solutie acceptabila • Teorema. Daca B este determinata de algoritmul greedy, atunci orice secventializare acceptabila a lui B este optima. s = (2,3,1) B = Ø B = {1} B = {1,2} B = {1,2,3} Ideea de demonstratie: Fie B’solutie optima. Daca B  B’ si B are r elemente comune cu B’, se construieste o alta solutie optima B’’ din B’ a.i. B si B’’ au r+1 elemente comune.

  14. Secventializarea optima a activitatilor: model mat. • S = multimea activitatilor • C(S): X  C(S) daca X este solutie acceptabila (admite o secventializare acceptabila) • proprietatea de alegere locala: • proprietatea de substructura optima:

  15. Algoritmi “greedy” – formulare matematica • modelul matematic • S multime de stari, C colectie de submultimi ale lui S • axioma de accesibilitate (AA) X  C: X    (x  X: X  {x}  C) • sistem accesibil: (S, C) • X este extensibila daca exista y  S – C a.i. X {y}  C • baza: X  C maximala • presupunere: B, B’ baze  (B  B’  B’  B)

  16. Algoritmi “greedy” – formulare matematica (continuare I) • modelul matematic (continuare) • clasa de probleme: • intrare: S, C, f : C R (functia obiectiv) • iesire: o baza B cu f(B) = optim{f(X) | X baza in C} • alegere “greedy”: alege x dintre elementele nealese a.i. f(B  {x}) este optim peste {f(B  {y}) | y neales si (B  {y})  C} (*)

  17. Algoritmi “greedy” – formulare matematica (continuare II) procedure algGreedy(S, C, f, B) begin S1  S B   while (B este extensibila) do alege x din S1 conf. crit. (*) S1  S1 – {x} B  B  {x} end

  18. Algoritmi “greedy” – formulare matematica (continuare III) • un cazcindalegerea “greedy” produce optim global: • (S, C) estematroid: • AA esteinlocuita cu proprietatea de ereditate: X  C, X    (x  X: X  {x}  C) • are loc proprietatea de interschimbare (PI): X, Y  C, |X| < |Y|  (y  Y-X: X {y}  C) • (S, C) estematroidponderat: • f este o pondere: f : S  R , f(X) = (f(x) | x  X) • optim = max • alegere “greedy”: alege x a.i. f(x) = max{f(y) | y in S  B, B  {y})  C}

  19. Algoritmi “greedy” – formulare matematica (continuare IV) Teorema: Algoritmul “greedy” determina o submultime optima daca (S, C) este matroid ponderat. • Demonstratie: • x de pondere maxima • Fapt: exista o solutie optima B care contine pe x • fie B’ o solutie optima; pp ca x nu e in B’ • luam B ={x}; apoi utilizam PI si adaugam la B elem. din B’ a.i. B = B’ – {y}  {x} • B este optima • S’ = { y | {x,y}  C }, C’ = {X | X  {x}  C} • daca B este solutie pentru (S, C) care contine x, atunci B – {x} este solutie optima pentru (S’, C’)

More Related