Temat: Algorytmy zachłanne Algorytm zachłanny ( ang. greedy algorithm) wykonuje zawsze działanie, które wydaje si w danej chwili najkorzystniejsze. Wybiera zatem lokalnie optymaln moliwo w nadziei, e doprowadzi ona do globalnie optymalnego rozwizania. 1. Problem kasjera Problem Kasjer ma wyda reszt, bdc dowoln kwot midzy 0,01$ a 0,99$, przy uyciu minimalnej liczby monet. Rozwizanie oparte na algorytmie zachłannym Najpierw uywamy monety o najwikszej dopuszczalnej wartoci, redukujc w ten sposób problem do wypłacenia mniejszej kwoty. Przykład Aby wyda 0,94 $, kasjer wypłaci: - półdolarówk (zostawiajc do zapłacenia 0,44 $), nastpnie - wierdolarówk (zostaje 0,19 $), - dziesiciocentówk ( zostaje 0,09 $), - piciocentówk (zostaje 0,04 $) i w kocu - cztery jednocentówki W sumie kasjer wypłaci osiem monet. Jest to minimalna liczba i faktycznie algorytm zachłanny jest optymalny dla monet amerykaskich. Jak jest dla innych systemów monetarnych? (Sprawd!!!)
2. Problem wyboru zaj Problem = składajcy si z n proponowanych zaj, do których maj by przydzielone zasoby, takie jak na przykład sala wykładowa, w której moe si odbywa w danej chwili tylko jedno z tych zaj. Kade zajcia maj swój czas rozpoczcia s i oraz czas zakoczenia f i, takie, e Dany jest zbiór S { 1,2,...,n } s i f i. Jeeli zajcia o numerze i zostan wytypowane, to zajmuj zasób czasu s, f [ s i, f i ). Zajcia o numerze i oraz j s zgodne, jeli przedziały [ i f i ) s, i [ ) nie zachodz na siebie ( czyli si f j lub s j fi ). Problem wyboru zaj polega na wyborze najwikszego podzbioru parami zgodnych zaj. Rozwizanie Bez utraty ogólnoci zakładamy, e zajcia s uporzdkowane ze wzgldu na czas zakoczenia: f 1 f... Jeeli powysze załoenie nie jest spełnione, to przed realizacj algorytmu naley posortowa cig czasów zakoczenia (optymalny koszt sortowania O(nlogn). Type Tabs = array[1..n] of Word; Tabf = array[1..n] of Real; var s: Tabs; f: Tabf; procedure ACTIVITY_SELECTOR(s: Tabs; f: Tabf); var i, j: Word; begin A:={1}; j:=1; for i:=2 to n do if s[i] >= f[j] then begin A:=A {i}; j:=i; end; end; Wynikiem powyszej procedury jest zbiór A zawierajcy numery zaj. Zmienna j zawiera ostatnio dodane do A zajcia. 2 f n j j
Przykład i s i f i 1 1 4 2 3 5 1 2 3 0 6 3 1 4 5 7 5 3 8 6 5 9 4 1 5 1 4 1 4 6 7 6 10 8 8 11 9 8 12 10 2 13 7 1 4 8 1 4 9 1 4 8 10 1 4 8 11 12 14 11 1 4 8 1 4 8 11 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 czas
Powyszy schemat ilustruje działanie procedury ACTIVITY_SELECTOR na 11- elementowym zbiorze zaj. Kady wiersz na rysunku odpowiada jednej iteracji ptli "for". Strzałka w lewo wskazuje zajcia odrzucone, strzałka w prawo - zajcia wybrane i dodane do zbioru A. Koszt czasowy Zakładajc, e dane wejciowe s uporzdkowane rosnco według czasów zakoczenia zaj, procedura ACTIVITY_SELECTOR dla n-elemen- towego zbioru zaj działa w czasie Θ(n). Zajcia wybierane procedur ACTIVITY_SELECTOR maj zawsze najwczeniejszy czas zakoczenia wród wszystkich zaj. Po wybraniu wszystkich zaj ze zbioru A pozostaje maksymalna ilo nie zajtego czasu. 3. Ogólne własnoci metody zachłannej Jak przekona si czy zastosowanie strategii zachłannej daje optymalne rozwizanie problemu? Problemy, dla których moe by zastosowana strategia zachłanna maj dwie cechy charakterystyczne: własno wyboru zachłannego, własno optymalnej podstruktury. a) Własno wyboru zachłannego Jeeli wybory "lokalne" s optymalne, to wybór "globalny" (ostateczny) jest optymalny. Rónica midzy strategi zachłann a programowaniem dynamicznym polega na tym, e w programowaniu dynamicznym w kadym kroku podejmowane s decyzje, których wybór zaley od rozwiza podproblemów. W algorytmie zachłannym wybory s podejmowane jako najlepsze (z punktu widzenia zadania) w danej chwili. Wybory podejmowane w algorytmie zachłannym nie s zalene od wyborów przeszłych, w przeciwiestwie do wyborów podejmowanych przy strategii programowania dynamicznego. Mona formalnie udowodni (stosujc metod indukcji), e dany problem ma własno wyboru zachłannego.
b) Własno optymalnej podstruktury Problem ma własno optymalnej podstruktury, jeeli optymalne rozwizanie jest funkcj optymalnych rozwiza podproblemów. Ta własno jest równie spełniona dla problemów rozwizywalnych metod programowania dynamicznego. Na przykład dla problemu wyboru zaj własno optymalnej podstruktury polega na tym, e: Jeeli optymalne rozwizanie A tego problemu rozpoczyna si od zaj o numerze 1, to A' = A \{1} jest optymalnym rozwizaniem problemu optymalnego wyboru zaj dla zbioru S' = { i S : s i f 1 }. Przykład Dyskretny problem plecakowy Złodziej rabujcy sklep znalazł n przedmiotów; i-ty przedmiot ma warto c i złotych i way w i kilogramów, gdzie c i i w i s nieujemnymi liczbami całkowitymi. Dy on do zabrania jak najwartociowszego łupu, ale do swojego plecaka nie moe wzi wicej ni W kilogramów. Złodziej nie moe dzieli przedmiotów (zabra do plecaka tylko cz wybranego przedmiotu) ani wielokrotno przedmiotu. Interesuje nas odpowied na pytanie: Jakie przedmioty z puli n wybranych przedmiotów moe zabra złodziej, przy wymienionych wyej ograniczeniach. Dyskretny problem plecakowy nie moe by rozwizany metod zachłann. Czy dyskretny problem plecakowy ma własno wyboru zachłannego? Odpowied: NIE Kontrprzykład Dane: n=3. Zbiór wybranych przedmiotów składa si z nastpujcych elementów: - Przedmiot 1 o wadze 10 kg i wartoci 60 zł - Przedmiot 2 o wadze 20 kg i wartoci 100 zł - Przedmiot 3 o wadze 30 kg i wartoci 120 zł Plecak ma maksymaln pojemno 50 kg. Kryterium wyboru przy zastosowaniu metody zachłannej jest cena jednostkowa, czyli cena 1 kg przedmiotu. Według tego kryterium najwysz cen jednostkow ma :
- Przedmiot 1 (6 zł/kg), potem - Przedmiot 2 (5 zł/kg), w kocu - Przedmiot 3 (4 zł/kg). i to włanie Przedmiot 1 zostałby wybrany jako pierwszy. Nastpny wybrany byłby Przedmiot 2. Do plecaka nie trafiłby Przedmiot 3, poniewa wszystkie trzy przedmioty maj za du wag łczn (60 kg). Rozwizanie polegajce na wyborze Przedmiotu 1 i Przedmiotu 2 nie jest optymalne. Rozwizaniem optymalnym jest natomiast wybór Przedmiotu2 i Przedmiotu 3 (łczna waga wynosi 50 kg, łczna warto 220 zł). Czy dyskretny problem plecakowy ma własno optymalnej podstruktury? Odpowied: TAK. Dyskretny problem plecakowy wykazuje cech optymalnej podstruktury. Rozwamy najwartociowszy ładunek plecaka o masie nie wikszej ni W. Jeeli usuniemy z tego ładunku przedmiot j o wadze w j, to pozostajcy ładunek jest najwartociowszym zbiorem przedmiotów o wadze nie przekraczajcej W - w j, jakie złodziej moe wybra z n-1 oryginalnych przedmiotów z wyjtkiem j. Okazuje si, e dyskretny problem plecakowy mona rozwiza stosujc technik programowania dynamicznego. Cigły problem plecakowy Cigły problem plecakowy róni si od dyskretnego problemu plecakowego tym, e złodziej moe zabiera ułamkowe czci przedmiotów (przedmioty trzeba teraz raczej nazywa substancjami). Cigły problem plecakowy moe by rozwizany metod zachłann. Czy dyskretny problem plecakowy ma własno wyboru zachłannego? Odpowied: TAK Algorytm 1) Policzy cen jednostkow kadego przedmiotu. 2) Zabra najwiksz moliw ilo najbardziej wartociowej substancji.
3) Jeli zapas tej substancji si wyczerpał, a w plecaku wci jest jeszcze wolne miejsce, złodziej wybiera nastpn pod wzgldem ceny jednostkowej substancj i wypełnia ni plecak. 4) Kroki 2 i 3 s powtarzane do momentu, gdy plecak bdzie ju pełen. Powyszy algorytm wymaga, aby substancje były posortowane według malejcej ceny jednostkowej. Przy tym załoeniu wybór okrelony w algorytmie ma własno wyboru zachłannego. Przykład Dane jak w przykładzie dla dyskretnego problemu plecakowego. Przypomnijmy: - Przedmiot 1 (Substancja 1) o wadze 10 kg i wartoci 60 zł (6 zł/kg) - Przedmiot 2 (Substancja 2) o wadze 20 kg i wartoci 100 zł (5 zł/kg) - Przedmiot 3 (Substancja 3) o wadze 30 kg i wartoci 120 zł (4 zł/kg) Plecak ma maksymaln pojemno 50 kg. Rozwizanie: Złodziej wkłada do plecaka : 10 kg Substancji 1 (warto 60 zł), 20 kg Substancji 2 (warto 100 zł), 20 kg Substancji 3 (warto 80 zł) Łczna warto wynosi: 60 zł + 100 zł + 80 zł = 240 zł. Czy cigły problem plecakowy ma własno optymalnej podstruktury? Odpowied: TAK. Jeeli usuniemy z optymalnego ładunku w kilogramów pewnej substancji j, to pozostajcy ładunek powinien by najwartociowszym ładunkiem o wadze co najwyej W-w, który złodziej moe skompletowa z n- 1 oryginalnych substancji, plus w j - w kilogramów substancji j. Koszt czasowy Sortowanie cigu substancji według kosztu jednostkowego jest realizowane kosztem optymalnym Θ(nlogn). Zasadniczy algorytm rozwizujcy cigły problem plecakowy ma koszt Θ(n). Zatem koszt
łczny wynosi Θ(nlogn). 4. Przykłady zastosowania strategii zachłannej - algorytm kompresji plików metod Huffmana - algorytm Kruskala wyznaczania minimalnego drzewa rozpinajcego grafu