Temat: Algorytmy zachłanne

Podobne dokumenty
Temat: Technika zachłanna. Przykłady zastosowania. Własno wyboru zachłannego i optymalnej podstruktury.

Ćwiczenie 3 Programowanie dynamiczne

Temat: Algorytmy zachłanne

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Programowanie dynamiczne cz. 2

Algorytmy zachłanne. dr inż. Urszula Gałązka

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 5 i 6. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie

PROBLEM: SORTOWANIE PRZEZ ODWRÓCENIA METODA: ALGORYTMY ZACHŁANNE

Programowanie dynamiczne i algorytmy zachłanne

Algorytmy i struktury danych.

Wstęp do programowania

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

Schemat programowania dynamicznego (ang. dynamic programming)

Wstęp do programowania

Projektowanie i analiza algorytmów

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Sortowanie Shella Shell Sort

Algorytmy i Struktury Danych

Programowanie dynamiczne

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

INFORMATYKA WYBRANE ALGORYTMY OPTYMALIZACYJNE KRYPTOLOGIA.

TEORETYCZNE PODSTAWY INFORMATYKI

Podejście zachłanne, a programowanie dynamiczne

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Zadanie 5 - Algorytmy genetyczne (optymalizacja)

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Wstęp do programowania

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?

EGZAMIN MATURALNY Z INFORMATYKI. 10 maja 2017 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

Sortowanie przez wstawianie Insertion Sort

[1] E. M. Reingold, J. Nievergelt, N. Deo Algorytmy kombinatoryczne PWN, 1985.

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Analiza algorytmów zadania podstawowe

9. Schematy aproksymacyjne

Strategia "dziel i zwyciężaj"

Wykład z modelowania matematycznego. Zagadnienie transportowe.

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

Struktury Danych i Złożoność Obliczeniowa

Scenariusz lekcji. podać definicję metody zachłannej stosowanej w algorytmie; wymienić cechy algorytmów zachłannych;

Czas pracy: 60 minut

Zagadnienie transportowe

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

Techniki konstruowania algorytmów. Metoda dziel i zwyciężaj

Algorytmika Problemów Trudnych

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Wstęp do Programowania potok funkcyjny

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 9. Karol Tarnowski A-1 p.

Materiały dla finalistów

) a j x j b; x j binarne (j N) całkowitoliczbowe; przyjmujemy (bez straty ogólności): c j > 0, 0 <a j b (j N), P n

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

ALGORYTMY I STRUKTURY DANYCH

podać definicję metody zachłannej stosowaną w algorytmice; wymienić cechy algorytmów zachłannych;

Przykładowe zadania z teorii liczb

Podstawy Informatyki. Sprawność algorytmów

zajęcia 3. Marcin Andrychowicz, Tomasz Kulczyński,

Zaawansowane algorytmy i struktury danych

Optymalizacja. Algorytmy dokładne

Sortowanie przez scalanie

Teoretyczne podstawy informatyki

Algorytmy sortujące. sortowanie kubełkowe, sortowanie grzebieniowe

Wstęp do programowania

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Programowanie dynamiczne

Wykład 2. Poprawność algorytmów

Matlab Składnia + podstawy programowania

Wykład 3. Metoda dziel i zwyciężaj

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

ALGORYTMY I STRUKTURY DANYCH

Jeszcze o algorytmach

... (środowisko) minut

2.8. Algorytmy, schematy, programy

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Programowanie liniowe całkowitoliczbowe

EGZAMIN MATURALNY Z INFORMATYKI 19 MAJA 2015 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 9:00 CZĘŚĆ I WYBRANE: Czas pracy: 90 minut

ZADANIE 1. Ważenie (14 pkt)

Zasady analizy algorytmów

Algorytmy stochastyczne laboratorium 03

Poprawność semantyczna

Efektywność Procedur Obliczeniowych. wykład 5

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Aproksymacja funkcji a regresja symboliczna

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony.

Matlab Składnia + podstawy programowania

Programowanie w VB Proste algorytmy sortowania

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Sortowanie. Bartman Jacek Algorytmy i struktury

Programowanie liniowe

Programowanie nieliniowe

Wstęp do Techniki Cyfrowej... Teoria automatów

Metoda graficzna może być stosowana w przypadku gdy model zawiera dwie zmienne decyzyjne. Metoda składa się z dwóch kroków (zobacz pierwszy wykład):

Algorytm. a programowanie -

Metoda eliminacji Gaussa

Transkrypt:

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ą możliwość w nadziei, że doprowadzi ona do globalnie optymalnego rozwiązania. a) Problem kasjera Problem Kasjer ma wydać resztę, będącą dowolną kwotą między 0,0$ a 0,99$, przy użyciu minimalnej liczby monet. Rozwiązanie oparte na algorytmie zachłannym Najpierw używamy monety o największej dopuszczalnej wartości, redukując w ten sposób problem do wypłacenia mniejszej kwoty. Przykład Aby wydać 0,94 $, kasjer wypłaci: - półdolarówkę (zostawiając do zapłacenia 0,44 $), następnie - ćwierćdolarówkę (zostaje 0,9 $), - dziesięciocentówkę ( zostaje 0,09 $), - pięciocentówkę (zostaje 0,04 $) i w końcu - cztery jednocentówki W sumie kasjer wypłaci osiem monet. Jest to minimalna liczba i faktycznie algorytm zachłanny jest optymalny dla monet amerykańskich. Jak jest dla innych systemów monetarnych? (Sprawdź!!!)

b) Problem wyboru zajęć Dany jest zbiór S = {,2,...,n } składający się z n proponowanych zajęć, do których mają być przydzielone zasoby, takie jak na przykład sala wykładowa, w której może się odbywać w danej chwili tylko jedno z tych zajęć. Każde zajęcia mają swój czas rozpoczęcia s i oraz czas zakończenia f i, takie, że. Jeżeli zajęcia o numerze i zostaną wytypowane, to zajmują zasób si f i czasu [ ) i f i [ f ) s,. Zajęcia o numerze i oraz j są zgodne, jeśli przedziały [ ) s, i s j, j nie zachodzą na siebie ( czyli si f j lub s j fi ). Problem wyboru zajęć polega na wyborze największego podzbioru parami zgodnych zajęć. Rozwiązanie Bez utraty ogólności zakładamy, że zajęcia są uporządkowane ze względu na czas zakończenia: f f... 2 Jeżeli powyższe założenie nie jest spełnione, to przed realizacją algorytmu należy posortować ciąg czasów zakończenia (optymalny koszt sortowania O(nlogn). WYBOR_ZAJEC(s, f); // s, f tablice czasów rozpoczęcia i // zakończenia zajęć, tablica f- posortowana { A={}; j=; for (i=2; i<=n; i++) if (s[i] >= f[j]) { A=A {i}; j=i; } } Wynikiem powyższego algorytmu jest zbiór A zawierający numery zajęć. Zmienna j zawiera ostatnio dodane do A zajęcia. f n i f i 2

nr s i f i 4 2 3 5 2 3 0 6 3 4 5 7 5 3 8 6 5 9 4 5 4 4 6 7 6 0 8 8 9 8 2 0 2 3 7 4 8 4 9 4 8 0 4 8 2 4 4 8 4 8 0 2 3 4 5 6 7 8 9 0 2 3 4 czas 3

Powyższy schemat ilustruje działanie procedury WYBOR_ZAJEC na - elementowym zbiorze zajęć. Każdy wiersz na rysunku odpowiada jednej iteracji pętli "for". Strzałka w lewo wskazuje zajęcia odrzucone, strzałka w prawo - zajęcia wybrane i dodane do zbioru A. Koszt czasowy Zakładając, że dane wejściowe są uporządkowane rosnąco według czasów zakończenia zajęć, procedura WYBOR_ZAJEC dla n- elementowego zbioru zajęć działa w czasie Θ(n). Zajęcia wybierane procedurą WYBOR_ZAJEC mają zawsze najwcześniejszy czas zakończenia wśród wszystkich zajęć. Po wybraniu wszystkich zajęć ze zbioru A pozostaje maksymalna ilość nie zajętego czasu. 3) Ogólne własności metody zachłannej Jak przekonać się czy zastosowanie strategii zachłannej daje optymalne rozwiązanie problemu? Problemy, dla których może być zastosowana strategia zachłanna mają dwie cechy charakterystyczne: własność wyboru zachłannego, własność optymalnej podstruktury a) Własność wyboru zachłannego Jeżeli wybory "lokalne" są optymalne, to wybór "globalny" (ostateczny) jest optymalny. W algorytmie zachłannym wybory są podejmowane jako najlepsze (z punktu widzenia zadania) w danej chwili. Wybory podejmowane w algorytmie zachłannym nie są zależne od wyborów przeszłych. Można formalnie udowodnić (stosując metodę indukcji), że dany problem ma własność wyboru zachłannego. 4

b) Własność optymalnej podstruktury Problem ma własność optymalnej podstruktury, jeżeli optymalne rozwiązanie jest funkcją optymalnych rozwiązań podproblemów. Na przykład dla problemu wyboru zajęć własność optymalnej podstruktury polega na tym, że: Jeżeli optymalne rozwiązanie A tego problemu rozpoczyna się od zajęć o numerze, to A' = A \{} jest optymalnym rozwiązaniem problemu optymalnego wyboru zajęć dla zbioru S' = { i S : s i f }. 4. Dyskretny problem plecakowy Złodziej rabujący sklep znalazł n przedmiotów; i-ty przedmiot ma wartość c i złotych i waży w i kilogramów, gdzie c i i w i są nieujemnymi liczbami całkowitymi. Dąży on do zabrania jak najwartościowszego łupu, ale do swojego plecaka nie może wziąć więcej niż W kilogramów. Złodziej nie może 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 może zabrać złodziej, przy wymienionych wyżej ograniczeniach. Dyskretny problem plecakowy nie może być rozwiązany 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 następujących elementów: - Przedmiot o wadze 0 kg i wartości 60 zł - Przedmiot 2 o wadze 20 kg i wartości 00 zł - Przedmiot 3 o wadze 30 kg i wartości 20 zł Plecak ma maksymalną pojemność 50 kg. 5

Kryterium wyboru przy zastosowaniu metody zachłannej jest cena jednostkowa, czyli cena kg przedmiotu. Według tego kryterium najwyższą cenę jednostkową ma : - Przedmiot (6 zł/kg), potem - Przedmiot 2 (5 zł/kg), w końcu - Przedmiot 3 (4 zł/kg). i to właśnie Przedmiot zostałby wybrany jako pierwszy. Następny wybrany byłby Przedmiot 2. Do plecaka nie trafiłby Przedmiot 3, ponieważ wszystkie trzy przedmioty mają za dużą wagę łączną (60 kg). Rozwiązanie polegające na wyborze Przedmiotu i Przedmiotu 2 nie jest optymalne. Rozwiązaniem 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. Rozważmy najwartościowszy ładunek plecaka o masie nie większej niż W. Jeżeli usuniemy z tego ładunku przedmiot j o wadze w j, to pozostający ładunek jest najwartościowszym zbiorem przedmiotów o wadze nie przekraczającej W - w j, jakie złodziej może wybrać z n- oryginalnych przedmiotów z wyjątkiem j. Okazuje się, że dyskretny problem plecakowy można rozwiązać stosując technikę programowania dynamicznego (patrz następny wykład) 5. Ciągły problem plecakowy Ciągły problem plecakowy różni się od dyskretnego problemu plecakowego tym, że złodziej może zabierać ułamkowe części przedmiotów (przedmioty trzeba teraz raczej nazywać substancjami). Ciągły problem plecakowy może być rozwiązany metodą zachłanną. 6

Czy dyskretny problem plecakowy ma własność wyboru zachłannego? Odpowiedź: TAK Algorytm ) Policzyć cenę jednostkową każdego przedmiotu. 2) Zabrać największą możliwą ilość najbardziej wartościowej substancji. 3) Jeśli zapas tej substancji się wyczerpał, a w plecaku wciąż jest jeszcze wolne miejsce, złodziej wybiera następną pod względem ceny jednostkowej substancję i wypełnia nią plecak. 4) Kroki 2 i 3 są powtarzane do momentu, gdy plecak będzie już pełen. Powyższy algorytm wymaga, aby substancje były posortowane według malejącej ceny jednostkowej. Przy tym założeniu wybór określony w algorytmie ma własność wyboru zachłannego. Przykład 3 Dane jak w przykładzie dla dyskretnego problemu plecakowego. Przypomnijmy: - Przedmiot (Substancja ) o wadze 0 kg i wartości 60 zł (6 zł/kg) - Przedmiot 2 (Substancja 2) o wadze 20 kg i wartości 00 zł (5 zł/kg) - Przedmiot 3 (Substancja 3) o wadze 30 kg i wartości 20 zł (4 zł/kg) Plecak ma maksymalną pojemność 50 kg. Rozwiązanie: Złodziej wkłada do plecaka : 0 kg Substancji (wartość 60 zł), 20 kg Substancji 2 (wartość 00 zł), 20 kg Substancji 3 (wartość 80 zł) Łączna wartość wynosi: 60 zł + 00 zł + 80 zł = 240 zł. 7

Czy ciągły problem plecakowy ma własność optymalnej podstruktury? Odpowiedź: TAK. Jeżeli usuniemy z optymalnego ładunku w kilogramów pewnej substancji j, to pozostający ładunek powinien być najwartościowszym ładunkiem o wadze co najwyżej W-w, który złodziej może skompletować z n- oryginalnych substancji, plus w j - w kilogramów substancji j. Koszt czasowy Sortowanie ciągu substancji według kosztu jednostkowego jest realizowane kosztem optymalnym Θ(nlogn). Zasadniczy algorytm rozwiązujący ciągły problem plecakowy ma koszt Θ(n). Zatem koszt łączny wynosi Θ(nlogn). 8