190 likes | 463 Views
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
E N D
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 • 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
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
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
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
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
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
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
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
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
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?
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
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.
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:
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)
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} (*)
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
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}
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’)