Algorytmy i struktury danych.



Podobne dokumenty
Schemat programowania dynamicznego (ang. dynamic programming)

Projektowanie i analiza algorytmów

Algorytmy i Struktury Danych

Programowanie dynamiczne cz. 2

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

Temat: Algorytmy zachłanne

Programowanie liniowe metoda sympleks

Wstęp do programowania

Programowanie liniowe metoda sympleks

Programowanie dynamiczne (optymalizacja dynamiczna).

Wstęp do programowania

Wstęp do programowania

Programowanie liniowe całkowitoliczbowe

zadaniem programowania liniowego całkowitoliczbowego. nazywamy zadaniem programowania liniowego 0-1. Zatem, w

Programowanie liniowe metoda sympleks

Programowanie liniowe całkowitoliczbowe

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

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

TEORETYCZNE PODSTAWY INFORMATYKI

Optymalizacja. Algorytmy dokładne

Optymalizacja. Algorytmy dokładne

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

) 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

Programowanie dynamiczne

Zaawansowane algorytmy i struktury danych

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

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

Ćwiczenie 3 Programowanie dynamiczne

Podejście zachłanne, a programowanie dynamiczne

9. Schematy aproksymacyjne

Wykład VII. Kryptografia Kierunek Informatyka - semestr V. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Wstęp do Programowania potok funkcyjny

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

Programowanie dynamiczne i algorytmy zachłanne

Wyk lad 7 Metoda eliminacji Gaussa. Wzory Cramera

Strategia "dziel i zwyciężaj"

Programowanie dynamiczne

Algorytmika Problemów Trudnych

etody programowania całkowitoliczboweg

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

Programowanie liniowe

Wstęp do programowania

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Zadania laboratoryjne i projektowe - wersja β

Metody numeryczne w przykładach

Programowanie liniowe

Obliczenia naukowe Wykład nr 8

Wstęp do metod numerycznych Faktoryzacja QR i SVD. P. F. Góra

Programowanie liniowe

Teoretyczne podstawy informatyki

Algorytmy i Struktury Danych.

Zagadnienie transportowe

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

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

Dualność w programowaniu liniowym

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

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):

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

METODA SYMPLEKS. Maciej Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Zadanie 4 Zadanie 5 Zadanie 6. Repetytorium z JFiZO. Jakub Michaliszyn 25 maja 2017

ALGORYTMY I STRUKTURY DANYCH

EGZAMIN MATURALNY Z INFORMATYKI

INFORMATYKA WYBRANE ALGORYTMY OPTYMALIZACYJNE KRYPTOLOGIA.

Rozdział 2 PROGRAMOWANIE LINIOWE CAŁKOWITOLICZBOWE

Obliczenia iteracyjne

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

Wybrane podstawowe rodzaje algorytmów

Algorytmy i Struktury Danych, 2. ćwiczenia

Programowanie nieliniowe

Wstęp do programowania

Macierze. Rozdział Działania na macierzach

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

Układy równań liniowych

Programowanie w Baltie klasa VII

Załóżmy, że musimy zapakować plecak na wycieczkę. Plecak ma pojemność S. Przedmioty mają objętości,,...,, których suma jest większa od S.

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

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

TEORETYCZNE PODSTAWY INFORMATYKI

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

Wstęp do metod numerycznych Uwarunkowanie Eliminacja Gaussa. P. F. Góra

Programowanie dynamiczne

Algorytmy Równoległe i Rozproszone Część III - Układy kombinacyjne i P-zupełność

Przykłady problemów optymalizacyjnych

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Kombinatoryczne problemy optymalizacyjne to problemy wyboru najlepszego rozwiązania z pewnego zbioru rozwiązań

EGZAMIN MATURALNY Z INFORMATYKI

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI STYCZEŃ POZIOM ROZSZERZONY Część I

Wykład 5 Dopasowywanie lokalne

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

Rozdział 1 PROGRAMOWANIE LINIOWE

Wykład z równań różnicowych

Wykład 10 Grafy, algorytmy grafowe

Algorytmy i Struktury Danych.

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

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

Wstęp do metod numerycznych Eliminacja Gaussa Faktoryzacja LU. P. F. Góra

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Teoria obliczeń i złożoność obliczeniowa

Algorytm Euklidesa. Największy wspólny dzielnik dla danych dwóch liczb całkowitych to największa liczba naturalna dzieląca każdą z nich bez reszty.

Transkrypt:

Algorytmy i struktury danych. Wykład 4 Krzysztof M. Ocetkiewicz Krzysztof.Ocetkiewicz@eti.pg.gda.pl Katedra Algorytmów i Modelowania Systemów, WETI, PG

Problem plecakowy mamy plecak o określonej pojemności W oraz zestaw n przedmiotów, ktore możemy do tego plecaka włożyć każdy z przedmiotów ma określona: wagę w i, cenę c i chcemy do plecaka zapakować przedmioty o jak największej łacznej wartości

Problem plecakowy gdy przedmioty sa podzielne (np. sa płynami) problem plecakowy można rozwiazać optymalnie metoda zachłanna wybieramy przedmioty o nawiększym stosunku ceny do wagi ( c i w i ) i wkładamy do plecaka w przypadku przedmiotów niepodzielnych algorytm zachłanny już się nie sprawdzi (np. W = 4, w 1 = 3, c 1 = 5, w 2 = w 3 = 2, c 2 = c 3 = 3) zastosujemy tu programowanie dynamiczne

Programowanie dynamiczne rozwiazujemy problem poprzez złożenie rozwiazań odpowiednich podproblemów każdy podproblem rozwiazujemy tylko raz, rozwiazanie zapamiętujac w tabeli zazwyczaj stosowane do rozwi azywania problemów optymalizacyjnych: przy danych ograniczeniach mamy zmaksymalizować lub zminimalizować pewien koszt

Programowanie dynamiczne podczas rozwiazywania możemy wyszczególnić cztery etapy: scharakteryzowanie struktury optymalnego rozwiazania rekurencyjne rozwiazanie kosztu optymalnego rozwiazania obliczenie optymalnego kosztu metoda wstępujac a rozpoczynajac od najmniejszych podproblemów, rozwiazujemy coraz większe, wykorzystujac zapamiętane rozwiazania konstruowanie optymalnego rozwi azania na podstawie wyników wcześniejszych obliczeń

Programowanie dynamiczne jeżeli interesuje nas sam koszt rozwiazania optymalnego, krok czwarty można pominać w przeciwnym przypadku, często opłaca się zapamiętywać dodatkowe informacje podczas wykonywania kroku trzeciego

Problem plecakowy celem naszym jest maksymalizacja n i=1 d ic i przy zachowaniu ograniczenia n i=1 d iw i W, gdzie d i to zmienna decydujaca, czy przedmiot i wkładamy (d i = 1) badź nie (d i = 0) do plecaka

Problem plecakowy załóżmy, że znamy optymalne rozwiazanie dla danej instancji problemu weźmy jeden z przedmiotów, który trafił do plecaka (niech będzie to przedmiot k) pozostała zawartość plecaka jest optymalnym rozwiazaniem problemu plecakowego dla pojemności plecaka W w k i zestawu przedmiotów {1 2... k 1 k +1 k +2...n} gdyby było inaczej (nie byłoby to optymalne rozwiazanie), to zastępujac przedmioty w pozostałej części plecaka tymi z optymalnego rozwiazania podproblemu, otrzymalibyśmy rozwiazanie lepsze niż optymalne

Problem plecakowy zdefiniujmy rekurencyjnie koszt optymalnego rozwiazania: koszt rozwiazania poblemu dla wagi W i zestawu przedmiotów {1 2... j} to: 0 dla j = 0 K(j W) = 0 dla W = 0 max(k(j 1 W w j )+c j K(j 1 W))

Obliczanie kosztu metoda wstępujac a znamy koszty rozwiazań dla przypadków brzegowych (W = 0 lub pusty zbiór przedmiotów) dzięki przedstawionemu wzorowi możemy kolejno wyznaczać rozwiazania większych podproblemów, aż dojdziemy do rozwiazania całego problemu (wyznaczymy K(n W))

Problem plecakowy K - tablica o wymiarach n+1 W +1 for i = 0... n do K[i 0] = 0 for i = 0... W do K[0 W] = 0 for i = 1...n do for j = 1...W do K[i j] = max(k[i 1 j w i ]+c i K[i 1 j]) end for end for return K[n W]

Problem plecakowy rozmiar plecaka W = 10 przedmioty: w 1 = 5 c 1 = 1, w 2 = 3 c 2 = 2, w 3 = 3 c 3 = 1, w 4 = 4 c 4 = 4, w 5 = 1 c 5 = 1

Pakowanie plecaka

Pakowanie plecaka

Pakowanie plecaka

Pakowanie plecaka

Pakowanie plecaka

Pakowanie plecaka

Problem plecakowy złożoność algorytmu wynosi O(nW) (nie jest wielomianowa!) wyznaczyliśmy wartość plecaka, jak poznać jego zawartość?

Problem plecakowy zaczynamy od K[n W] porównujemy K[n W] z K[n 1 W] oraz K[n 1 W w n ]+c n jeżeli K[n W] = K[n 1 W] to nie włożyliśmy przedmiotu n do plecaka, przechodzimy do K[n 1 W] i potwarzamy operację jeżeli K[n W] = K[n 1 W w n ]+c n to włożyliśmy przedmiot n do plecaka, przechodzimy do K[n 1 W w n ] i potwarzamy operację

Pakowanie plecaka

Pakowanie plecaka

Pakowanie plecaka

Pakowanie plecaka

Pakowanie plecaka

Pakowanie plecaka

Pakowanie plecaka

Problem plecakowy jeżeli interesuje nas sama wartość rozwiazania, zamiast tablicy o wymiarach n+1 W +1 wystarczy nam tablica o wymiarach 2 W +1 w i-tym kroku wystarczy pamiętać tylko poprzedni wiersz tablicy

Problem plecakowy K - tablica o wymiarach 2 W +1 for i = 0... W do K[0 W] = 0 for i = 1...n do for j = 1...W do K[i%2 j] = max(k[1 (i%2) j w i ]+c i K[1 (i%2) j]) end for end for return K[n%2 W]

Problem plecakowy dlaczego nie wystarczy tablica jednowierszowa? musimy znać wartość K[i 1 j w i ] majac tylko jeden wiersz tablicy, obliczajac K[i j] w K[i j w i ] będzie optymalne rozwiazanie dla podproblemu o rozmiarze plecaka j w i i przedmiotów {1 2... i} (a nie {1 2... i 1}) jeżeli optymalne rozwiazanie podproblemu będzie wymagało włożenia przedmiotu i do plecaka, może się zdarzyć, że przedmiot ten włożymy do plecaka wielokrotnie chyba, że będziemy wypełniać tablicę w przeciwnym kierunku...

Koniec Dziękuję za uwagę.