Techniki projektowania algorytmów
|
|
- Oskar Zakrzewski
- 8 lat temu
- Przeglądów:
Transkrypt
1 Techniki projektowania algorytmów Dziel i zwyciężaj (divide and conquer) rekursja Redukcja (reduction, transform and conquer) Programowanie liniowe (linear programming) Programowanie zachłanne (greedy method) Programowanie dynamiczne (dynamic programming) Algorytmy przeszukujące (trial and error) Algorytmy probabilistyczne i heurystyki (probabilistic, heuristic)
2 Rekursja Rekursja zobacz: Rekursja ;-) Rekursja jeśli ciągle nie wiesz co to jest, zobacz: Rekursja ;-) PHP PHP: Hypertext Preprocessor GNU GNU's Not Unix AMARA Amara Means A Recursive Acronym
3 Rekursja P IF B THEN P[S,P] END P program P kompozycja (złożenie) S sekwencja rozkazów nie zawierająca P Wieże Hanoi, algorytm Euklidesa znajdowania NWD, definicja drzewa patrz Matematyka dyskretna Dziel i zwyciężaj - quicksort, mergesort
4 Kiedy nie używać rekursji? P IF B THEN S; P END (P na samym początku lub końcu) Silnia: n! = n * (n-1)! 0! = 1 PROCEDURE F(I:INTEGER):INTEGER; BEGIN IF I>0 THEN RETURN I*F(I-1); ELSE RETURN 1; END; END F; I := 0; F := 1; WHILE I < n DO I := I+1; F := I*F; END;
5 Kiedy nie używać rekursji? Ciąg Fibonacciego: F(i) = F(i-1) + F(i-2) Powtarzamy niepotrzebnie wiele obliczeń PROCEDURE F(n:INTEGER): INTEGER; BEGIN IF n=0 THEN RETURN 0; ELSE IF n=1 THEN RETURN 1; ELSE RETURN F(n-1)+F(n-2) END; END; END F; i := 1; x := 1; y := 0; WHILE i < n DO x := x+y; y := x-y; i := i+1; END;
6 Krzywa Hilberta (Hilbert curve) Krzywa H i rzędu i składa się z czterech instancji krzywych H i-1 dwukrotnie pomniejszonych, obróconych i połączonych odcinkami. H 0 jest pusta, stąd H 1 składa się tylko z trzech odcinków. A i : D i-1 A i-1 A i-1 B i-1 B i : C i-1 B i-1 B i-1 A i-1 C i : B i-1 C i-1 C i-1 D i-1 D i : A i-1 D i-1 D i-1 C i-1
7 H 1 D 1
8 H 2 C 1 A 1 D 2 D 1 D 1
9 H3
10 Krzywa Sierpińskiego Główny schemat różni się od schematów rekursji S n : A n B n C n D n A i : A i-1 B i-1 D i-1 A i-1 B i : B i-1 C i-1 A i-1 B i-1 C i : C i-1 D i-1 B i-1 C i-1 D i : D i-1 A i-1 C i-1 D i-1 S 0 kwadrat obrócony o 45 stopni (A 0,B 0,C 0,D 0 są puste)
11 S 1 D D A A A B D C C B B A A D B D B C C C
12 S2
13 S3
14 Trójkąt Sierpińskiego Weź dowolny kształt (zwykle trójkąt). Jeśli procedura osiągnęła założony poziom narysuj kształt. W przeciwnym przypadku zmniejsz rozmiar kształtu dwukrotnie. Wywołaj procedurę trzykrotnie na planie trójkąta.
15 Trójkąt Sierpińskiego
16 Redukcja (reduction) transform and conquer transformuj i zwyciężaj np. zadanie znalezienia mediany w zbiorze liczb możemy rozwiązać następująco: sortujemy zbiór (droga operacja) wybieramy element środkowy (tania operacja) Chcemy pomnożyć dwie liczby. Mamy gotowe układy które potrafią: dodawać, odejmować, podnosić do kwadratu, dzielić przez 2. a*b = ((a+b) 2 - a 2 - b 2 )/2
17 Programowanie liniowe (linear programming) Optymalizacja liniowej funkcji celu podlegającej liniowym ograniczeniom w postaci równości lub nierówności. Forma kanoniczna: Maksymalizuj: c T x przy ograniczeniach: Ax b gdzie: x 0 x wektor zmiennych c,b wektory współczynników A macierz współczynników
18 Forma standardowa składa się z trzech części: liniowej funkcji celu, np. maksymalizuj c 1 x 1 +c 2 x 2 ograniczeń, np. a 11 x 1 +a 12 x 2 b 1 a 21 x 1 +a 22 x 2 b 2 a 31 x 1 +a 32 x 2 b 3 nieujemnych zmiennych np. x 1 0, x 2 0 Ograniczenia inne niż mniejszościowe ( ) możemy zamienić na mniejszościowe: ograniczenie równościowe na dwa i ograniczenie większościowe prze negację zmiennych.
19 Przykład Rolnik ma pole o powierzchni A hektarów na którym może posadzić pszenicę lub jęczmień w dowolnej proporcji. Rolnik może zużyć maksymalnie F ton nawozu i P ton środka owadobójczego. Do uprawy pszenicy potrzeba F 1 a do jęczmienia F 2 ton nawozu na hektar. Do uprawy pszenicy potrzeba P 1 a do jęczmienia P 2 ton środka owadobójczego na hektar. Uprawa pszenicy daje S 1, a jęczmienia S 2 złotych z hektara. Ile hektarów ma rolnik obsadzić pszenicą, a ile jęczmieniem aby uzyskać maksymalny zysk?
20 Przykład maksymalizuj: S 1 x 1 + S 2 x 2 (funkcja celu = zysk) ograniczenia: x 1 + x 2 A F 1 x 1 + F 2 x 2 F P 1 x 1 + P 2 x 2 P (wielkość pola) (ilość nawozu) (ilość środka owadobójczego) nieujemne zmienne (nie da się uprawiać pola o ujemnej powierzchni): x 1 0 (powierzchnia uprawy pszenicy) x 2 0 (powierzchnia uprawy jęczmienia)
21 Programowanie liniowe metody rozwiązywania Algorytm simplex w najgorszym przypadku złożoność wykładnicza Metoda elipsoid złożoność wielomianowa, ale w praktyce gorszy niż simplex Algorytm Karmarkara złożoność wielomianowa, lepszy w praktyce niż simplex
22 Bajka o trzech złodziejach Złodziej włamuje się do domu i widzi cztery wartościowe rzeczy: biżuterię o wadze 1 kg i wartości 15 PLN, żyrandol o wadze 5 kg i wartości 10 PLN, obraz o wadze 3 kg i wartości 9 PLN, radio o wadze 4 kg i wartości 5 PLN. Jego plecak może udźwignąć max. 8 kg (obie ręce musi mieć wolne, żeby wyjść przez okno na piętrze). Co powinien zapakować do plecaka? Mamy trzech złodziei: chciwego, powolnego i sprytnego.
23 Problem plecakowy (wersja 0-1) Maksymalizuj: n i=1 p i x i przy ograniczeniach: n i=1 w i x i c x i {0,1} i=1,...,n W wersji ciągłej można dzielić przedmioty pakowane do plecaka na części. Wówczas algorytm zachłanny jest optymalny.
24 Algorytm zachłanny (greedy) Wrzucamy przedmioty do plecaka zaczynając od przedmiotu o największej wartości (albo stosunku wartość/waga lepsze, dla problemu ciągłego daje rozwiązanie optymalne). Złodziej wrzuca więc kolejno biżuterię (1 kg, 15 PLN) i żyrandol (5 kg, 10 PLN). Plecak może jeszcze udźwignąć 2 kg, ale nie ma tak lekkich przedmiotów, więc złodziej ucieka, unosząc przedmioty o wartości 25 PLN.
25 Algorytm brute force Brute force brutalna siła, sprawdzamy wszystkie rozwiązania. Powolny złodziej zaczyna sprawdzać wszystkie możliwe rozwiązania. Złożoność problemu wynosi O(2 n ), gdyż tyle mamy możliwych do utworzenia podzbiorów. Zanim złodziej policzył odpowiednie sumy wartości i wag przedmiotów, wpadła policja i go aresztowano.
26 Programowanie dynamiczne (dynamic programming) A(i,j) definiujemy jako maksymalną wartość plecaka o wielkości j, rozpatrując tylko i pierwszych przedmiotów. Szukamy A(n,c). Możemy je znaleźć z następującej zależności rekurencyjnej: dla i=0 lub j=0 A i, j ={0 A i 1, j dla w i j max {A i 1, j, p i A i 1, j w i } dla w i j} A więc badamy, czy warto dołożyć i-ty przedmiot do plecaka o w i mniejszego
27 Programowanie dynamiczne (dynamic programming) p i /w i 15/1 10/5 9/3 5/4 j i=0 i=1 i=2 i=3 i= < < < 24 24< < 25< < 25< < 29
28 Programowanie dynamiczne (dynamic programming) Sprytny złodziej uzyskał plecak o wartości 29 PLN (4 PLN lepiej niż jego chciwy kolega), zabierając biżuterię, obraz i radio, ważące w sumie 8 kg. Złożoność wynosi O(n*c) w porównaniu z O(2n ) algorytmu brute force. Programowanie dynamiczne możemy wykorzystać np. także w problemie obliczania ciągu Fibonacciego, poprzez zapamiętywanie kolejnych wyrazów ciągu.
29 Algorytmy przeszukujące przestrzeń rozwiązań (trial and error) Brute force brutalna siła, sprawdzamy wszystkie rozwiązania. Backtracking przeszukiwanie z nawrotami, wykorzystujemy własności zadania aby ograniczyć przeszukiwaną przestrzeń. Branch and bound algorytm podziału i ograniczeń, wykorzystujemy własności zadania aby ograniczyć przeszukiwaną przestrzeń.
30 Problem ośmiu hetmanów Rozstawić osiem hetmanów na tradycyjnej szachownicy 8x8 tak, aby wzajemnie się nie atakowały (w pionie, poziomie i po przekątnej) Są 92 rozwiązania, 12 jeśli wykluczymy symetryczne i obrócone Źródło: wikipedia.org
31 Rozwiązanie problemu brute force Generujemy na ślepo wszystkie 64 8 =2 48 =281,474,976,710,656 możliwych ustawień hetmanów. Ponieważ dwa (i więcej) hetmany nie mogą zajmować jednego pola, możemy ograniczyć ilość możliwych ustawień do 64!/56 = 178,462,987,637,760 Jeszcze lepiej wygenerować wszystkie permutacje (pozycje w danym wierszu lub kolumnie) których jest 8!=40320, co eliminuje ataki w pionie i poziomie (jak dla wieży)
32 Rozwiązanie problemu backtracking Przeszukujemy drzewo rozwiązań oparte na permutacjach. Stosujemy metodę przeszukiwania w głąb. Wystąpienie konfliktu po przekątnej powoduje odcięcie całego poddrzewa rozwiązań, dzięki czemu przeszukujemy tylko ustawień.
33 Algorytm podziału i ograniczeń (branch and bound) Dzielimy problem na podproblemy (branching), a następnie obliczamy górne i dolne ograniczenia (bounding) i obcinamy (pruning) niektóre gałęzie drzewa przeszukiwań. Dla problemu maksymalizacji: jeśli dla danego poddrzewa T jego górne ograniczenie (upper bound) jest mniejsze od dolnego ograniczenia (lower bound) dowolnego innego poddrzewa, to nie ma sensu testować rozwiązań w T. Dolne ograniczenie to zwykle najlepsze dotąd znalezione rozwiązanie.
34 PROCEDURE Try(i, tw, av: INTEGER); VAR av1: INTEGER; BEGIN (*dołączamy przedmiot i do rowiązania*) IF tw + obj[i].weight <= limw THEN s := s + {i}; IF i < n THEN Try(i+1, tw + obj[i].weight, av) ELSIF av > maxv THEN maxv := av; opts := s END ; s := s - {i} END ; (*wyłączamy przedmiot i z rozwiązania*) IF av - obj[i].value > maxv THEN IF i < n THEN Try(i+1, tw, av - obj[i].value) ELSE maxv := av - obj[i].value; opts := s END END END Try; maxv najlepsze rozwiązanie (dolne ograniczenie) totv suma wszystkich przedmiotów av górne ograniczenie (możliwe maksimum) limw wielkość plecaka Wywołanie: maxv := 0; s := {}; opts := {}; Try(1, 0, totv); Źródło: N.Wirth
35 maxv=0 tw=0 av=39 29 i=1 0 tw=1 av= >29 i=2 tw=6 av=39 tw=1 av= i=3 tw=9 tw=6 av=30 tw=4 av=29 20> i=4 tw=10 tw=6 maxv=25 s={1,2} tw=8 maxv=29 s={1,3,4} 24>29
36 Jak widać, przeszukiwanie przestrzeni rozwiązań metodą podziału i ograniczeń możliwe jest tylko dla problemów optymalizacyjnych. Nie nadaje się na przykład dla problemu ośmiu hetmanów. Można stosować inne metody obliczania ograniczeń. Np. można posortować przedmioty według stosunku wartość/waga, a następnie jako górne ograniczenie przyjąć wynik algorytmu zachłannego dla ciągłego problemu plecakowego.
37 Złożoność algorytmu w najgorszym przypadku jest taka, jak brute force. Zwykle nadaje się do średniej wielkości instancji problemu. Dla problemu plecakowego metoda ta ma tę zaletę, iż pojemność plecaka i wagi przedmiotów nie muszą być całkowitoliczbowe (w przeciwieństwie np. do programowania dynamicznego).
38 Heurystyki Heurystyka - algorytm, który nie gwarantuje znalezienia optymalnego rozwiązania. Metaheurystyka ogólna metoda rozwiązywania szerokiej klasy problemów, nie gwarantująca znalezienia optymalnego rozwiązania. Algorytm polega zwykle na przeszukiwaniu w odpowiedni sposób przestrzeni rozwiązań.
39 Metaheurystyki Przeszukiwanie losowe Przeszukiwanie lokalne (local search) Simple hill climbing Steepest ascent hill climbing Gradient descent/ascent Przeszukiwanie tabu (tabu search) Symulowane wyżarzanie (simulated annealing) Algorytmy genetyczne (genetic algorithms)
40 No free lunch Średnia wydajność dowolnej pary algorytmów na wszystkich możliwych problemach jest identyczna.
Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott
Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Metody konstrukcji algorytmów: Siłowa (ang. brute force), Dziel i zwyciężaj (ang. divide-and-conquer), Zachłanna (ang.
Algorytmy i Struktury Danych
POLITECHNIKA KRAKOWSKA WYDZIAŁ INŻYNIERII ELEKTRYCZNEJ i KOMPUTEROWEJ Katedra Automatyki i Technik Informacyjnych Algorytmy i Struktury Danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew
Optymalizacja. Wybrane algorytmy
dr hab. inż. Instytut Informatyki Politechnika Poznańska www.cs.put.poznan.pl/mkomosinski, Andrzej Jaszkiewicz Problem optymalizacji kombinatorycznej Problem optymalizacji kombinatorycznej jest problemem
Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne
Algorytmy i struktury danych Wykład VIII Elementarne techniki algorytmiczne Co dziś? Algorytmy zachłanne (greedyalgorithms) 2 Tytułem przypomnienia metoda dziel i zwyciężaj. Problem można podzielić na
Wybrane podstawowe rodzaje algorytmów
Wybrane podstawowe rodzaje algorytmów Tomasz Głowacki tglowacki@cs.put.poznan.pl Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia na Politechnice Poznańskiej w zakresie technologii informatycznych
Zaawansowane algorytmy i struktury danych
Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań teoretycznych z egzaminów. Strona 1 z 12 Pytania teoretyczne z egzaminu pisemnego z 25 czerwca 2014 (studia dzienne)
Rekurencja/rekursja. Iluzja istnienia wielu kopii tego samego algorytmu (aktywacji) Tylko jedna aktywacja jest aktywna w danej chwili
rekurencja 1 Rekurencja/rekursja Alternatywny dla pętli sposób powtarzania pewnych czynności; kolejny etap podzadanie poprzedniego Rekursja może być zamieniona na iteracje Cechy rekurencji Rozłożenie problemu
Algorytmy i struktury danych.
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
Projektowanie i analiza algorytmów
POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Projektowanie i analiza algorytmów www.pk.edu.pl/~zk/piaa_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład
Algorytmy i Struktury Danych
POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Algorytmy i Struktury Danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 9: Programowanie
Temat: Algorytmy zachłanne
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,
Algorytmy metaheurystyczne podsumowanie
dr hab. inż. Instytut Informatyki Politechnika Poznańska www.cs.put.poznan.pl/mkomosinski, Andrzej Jaszkiewicz Problem optymalizacji kombinatorycznej Problem optymalizacji kombinatorycznej jest problemem
Programowanie dynamiczne cz. 2
Programowanie dynamiczne cz. 2 Wykład 7 16 kwietnia 2019 (Wykład 7) Programowanie dynamiczne cz. 2 16 kwietnia 2019 1 / 19 Outline 1 Mnożenie ciągu macierzy Konstruowanie optymalnego rozwiązania 2 Podstawy
Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.
Drzewa binarne Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0 i T 1 są drzewami binarnymi to T 0 T 1 jest drzewem binarnym Np. ( ) ( ( )) Wielkość drzewa
Wstęp do programowania. Dziel i rządź. Piotr Chrząstowski-Wachtel
Wstęp do programowania Dziel i rządź Piotr Chrząstowski-Wachtel Divide et impera Starożytni Rzymianie znali tę zasadę Łatwiej się rządzi, jeśli poddani są podzieleni Nie chodziło im jednak bynajmniej o
Technologie informacyjne Wykład VII-IX
Technologie informacyjne -IX A. Matuszak 19 marca 2013 A. Matuszak Technologie informacyjne -IX Rekurencja A. Matuszak (2) Technologie informacyjne -IX Gotowanie jajek na miękko weż czysty garnek włóż
Wstęp do programowania
Wstęp do programowania Algorytmy zachłanne, programowanie dynamiczne Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk(Wydział Fizyki) WP w. IX Jesień 2014 1 / 26 Algorytmy zachłanne Strategia polegająca
Techniki optymalizacji
Techniki optymalizacji Dokładne algorytmy optymalizacji Maciej Hapke maciej.hapke at put.poznan.pl Problem optymalizacji kombinatorycznej Problem optymalizacji kombinatorycznej jest problemem minimalizacji
Schemat programowania dynamicznego (ang. dynamic programming)
Schemat programowania dynamicznego (ang. dynamic programming) Jest jedną z metod rozwiązywania problemów optymalizacyjnych. Jej twórcą (1957) był amerykański matematyk Richard Ernest Bellman. Schemat ten
Wstęp do programowania
Wstęp do programowania Programowanie dynamiczne Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 1 / 21 Dziel i zwyciężaj przypomnienie 1 Podział problemu na 2 lub
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,
Oznaczenia: 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, to interesuje nas złożoność obliczeniowa
TEORETYCZNE PODSTAWY INFORMATYKI
1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 2 2 Problemy algorytmiczne Klasy problemów algorytmicznych Liczby Fibonacciego Przeszukiwanie tablic Największy
Zadania laboratoryjne i projektowe - wersja β
Zadania laboratoryjne i projektowe - wersja β 1 Laboratorium Dwa problemy do wyboru (jeden do realizacji). 1. Water Jug Problem, 2. Wieże Hanoi. Water Jug Problem Ograniczenia dla każdej z wersji: pojemniki
Strategia "dziel i zwyciężaj"
Strategia "dziel i zwyciężaj" W tej metodzie problem dzielony jest na kilka mniejszych podproblemów podobnych do początkowego problemu. Problemy te rozwiązywane są rekurencyjnie, a następnie rozwiązania
Wykład 10 Grafy, algorytmy grafowe
. Typy złożoności obliczeniowej Wykład Grafy, algorytmy grafowe Typ złożoności oznaczenie n Jedna operacja trwa µs 5 logarytmiczna lgn. s. s.7 s liniowa n. s.5 s. s Logarytmicznoliniowa nlgn. s.8 s.4 s
Złożoność algorytmów. Wstęp do Informatyki
Złożoność algorytmów Złożoność pamięciowa - liczba i rozmiar struktur danych wykorzystywanych w algorytmie Złożoność czasowa - liczba operacji elementarnych wykonywanych w trakcie przebiegu algorytmu Złożoność
Sortowanie danych. Jolanta Bachan. Podstawy programowania
Sortowanie danych Podstawy programowania 2013-06-06 Sortowanie przez wybieranie 9 9 9 9 9 9 10 7 7 7 7 7 10 9 1 3 3 4 10 7 7 10 10 10 10 4 4 4 4 4 4 3 3 3 3 2 2 2 2 2 2 2 3 1 1 1 1 1 1 Gurbiel et al. 2000
1. LICZBY DZIAŁ Z PODRĘCZNIKA L.P. NaCoBeZu kryteria sukcesu w języku ucznia
L.P. DZIAŁ Z PODRĘCZNIKA NaCoBeZu kryteria sukcesu w języku ucznia 1. LICZBY 1. Znam pojęcie liczby naturalne, całkowite, wymierne, dodatnie, ujemne, niedodatnie, odwrotne, przeciwne. 2. Potrafię zaznaczyć
Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp
Programowanie Równoległe i Rozproszone Lucjan Stapp Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska (l.stapp@mini.pw.edu.pl) 1/34 PRiR Algorytm Kunga Dany jest odcinek [a,b] i ciągła funkcja
9. Schematy aproksymacyjne
9. Schematy aproksymacyjne T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein Wprowadzenie do algorytmów, WNT (2004) O.H. Ibarra, C.E. Kim Fast approximation algorithms for the knapsack and sum of subset
Programowanie dynamiczne
Programowanie dynamiczne Ciąg Fibonacciego fib(0)=1 fib(1)=1 fib(n)=fib(n-1)+fib(n-2), gdzie n 2 Elementy tego ciągu stanowią liczby naturalne tworzące ciąg o takiej własności, że kolejny wyraz (z wyjątkiem
Zaawansowane algorytmy i struktury danych
Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań praktycznych z egzaminów. Strona 1 z 12 Pytania praktyczne z kolokwium zaliczeniowego z 19 czerwca 2014 (studia dzienne)
Heurystyczne metody przeszukiwania
Heurystyczne metody przeszukiwania Dariusz Banasiak Katedra Informatyki Technicznej W4/K9 Politechnika Wrocławska Pojęcie heurystyki Metody heurystyczne są jednym z ważniejszych narzędzi sztucznej inteligencji.
operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.
Problem porządkowania zwanego również sortowaniem jest jednym z najważniejszych i najpopularniejszych zagadnień informatycznych. Dane: Liczba naturalna n i ciąg n liczb x 1, x 2,, x n. Wynik: Uporządkowanie
INFORMATYKA WYBRANE ALGORYTMY OPTYMALIZACYJNE KRYPTOLOGIA.
INFORMATYKA WYBRANE ALGORYTMY OPTYMALIZACYJNE KRYPTOLOGIA http://www.infoceram.agh.edu.pl Klasy metod algorytmicznych Metoda TOP-DOWN (zstępująca, analityczna) Metoda BOTTOM-UP (wstępująca, syntetyczna)
Techniki konstruowania algorytmów. Metoda dziel i zwyciężaj
Techniki konstruowania algorytmów Metoda dziel i zwyciężaj Technika dziel i zwyciężaj Aby rozwiązać problem techniką dziel i zwyciężaj musi on wykazywać własność podstruktury rozwiązanie problemu można
Podstawy programowania. Podstawy C# Przykłady algorytmów
Podstawy programowania Podstawy C# Przykłady algorytmów Proces tworzenia programu Sformułowanie problemu funkcje programu zakres i postać danych postać i dokładność wyników Wybór / opracowanie metody rozwiązania
Wstęp do programowania
Wstęp do programowania Rekurencja, metoda dziel i zwyciężaj Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk(Wydział Fizyki) WP w. VIII Jesień 2014 1 / 27 Rekurencja Recursion See Recursion. P. Daniluk(Wydział
Opis problemu i przedstawienie sposobu jego rozwiązania w postaci graficznej. Gimnazjum nr 3 im. Jana Pawła II w Hrubieszowie 1
Opis problemu i przedstawienie sposobu jego rozwiązania w postaci graficznej Gimnazjum nr 3 im. Jana Pawła II w Hrubieszowie 1 Etapy rozwiązywania problemu PROBLEM wybór metody rozwiązania ALGORYTM 1.
Optymalizacja. Algorytmy dokładne
dr hab. inż. Instytut Informatyki Politechnika Poznańska www.cs.put.poznan.pl/mkomosinski, Maciej Hapke Organizacja zbioru rozwiązań w problemie SAT Wielokrotny podział na dwia podzbiory: x 1 = T, x 1
Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch
Wykład 8 Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. Smok podsuszony zmok (patrz: Zmok). Zmok zmoczony smok (patrz: Smok). L. Peter Deutsch Stanisław Lem Wizja lokalna J. Cichoń, P. Kobylański
Algorytmy i złożoność obliczeniowa. Wojciech Horzelski
Algorytmy i złożoność obliczeniowa Wojciech Horzelski 1 Tematyka wykładu Ø Ø Ø Ø Ø Wprowadzenie Poprawność algorytmów (elementy analizy algorytmów) Wyszukiwanie Sortowanie Elementarne i abstrakcyjne struktury
Analiza algorytmów zadania podstawowe
Analiza algorytmów zadania podstawowe Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r 0 Jaka wartość zostanie zwrócona przez powyższą
Algorytmy zrandomizowane
Algorytmy zrandomizowane http://zajecia.jakubw.pl/nai ALGORYTMY ZRANDOMIZOWANE Algorytmy, których działanie uzależnione jest od czynników losowych. Algorytmy typu Monte Carlo: dają (po pewnym czasie) wynik
Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?
/9/ Zagadnienie transportowe Optymalizacja w procesach biznesowych Wykład --9 Plan wykładu Przykład zagadnienia transportowego Sformułowanie problemu Własności zagadnienia transportowego Metoda potencjałów
Optymalizacja. Symulowane wyżarzanie
dr hab. inż. Instytut Informatyki Politechnika Poznańska www.cs.put.poznan.pl/mkomosinski, Maciej Hapke Wyżarzanie wzrost temperatury gorącej kąpieli do takiej wartości, w której ciało stałe topnieje powolne
Algorytmy i Struktury Danych.
Algorytmy i Struktury Danych. Metoda Dziel i zwyciężaj. Problem Sortowania, cd. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 2 Bożena Woźna-Szcześniak (AJD) Algorytmy
Wstęp do programowania
Wieczorowe Studia Licencjackie Wrocław, 28.11.2006 Wstęp do programowania Wykład nr 9 (w oparciu o notatki K. Lorysia z modyfikacjami) Sortowanie szybkie (Quicksort) Sortowanie przez scalanie opierało
EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew
1. ( pkt) Dany jest algorytm, który dla dowolnej liczby naturalnej n, powinien wyznaczyd sumę kolejnych liczb naturalnych mniejszych od n. Wynik algorytmu jest zapisany w zmiennej suma. Algorytm i=1; suma=0;
Algorytmy i struktury danych
POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Algorytmy i struktury danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 5: Algorytmy
PROBLEM: SORTOWANIE PRZEZ ODWRÓCENIA METODA: ALGORYTMY ZACHŁANNE
D: PROBLEM: SORTOWANIE PRZEZ ODWRÓCENIA METODA: ALGORYTMY ZACHŁANNE I. Strategia zachłanna II. Problem przetasowań w genomie III. Sortowanie przez odwrócenia IV. Algorytmy przybliżone V. Algorytm zachłanny
Informatyka A. Algorytmy
Informatyka A Algorytmy Spis algorytmów 1 Algorytm Euklidesa....................................... 2 2 Rozszerzony algorytm Euklidesa................................ 2 3 Wyszukiwanie min w tablicy..................................
Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL
Studia Podyplomowe INFORMATYKA Podstawy Informatyki Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL 1 Część 1 Pojęcie algorytmu 2 I. Pojęcie algorytmu Trochę historii Pierwsze
Zadania obliczeniowe, algorytmy i złożoność obliczeniowa
Dr inż. Jerzy Mieścicki Instytut Informatyki PW Zadania obliczeniowe, algorytmy i złożoność obliczeniowa Wstęp do Informatyki, część 2 Przeszukiwanie listy nieuporządkowanej Zapisy (records), umieszczone
Złożoność obliczeniowa zadania, zestaw 2
Złożoność obliczeniowa zadania, zestaw 2 Określanie złożoności obliczeniowej algorytmów, obliczanie pesymistycznej i oczekiwanej złożoności obliczeniowej 1. Dana jest tablica jednowymiarowa A o rozmiarze
Wstęp do programowania
Wstęp do programowania Algorytmy zachłanne, algoritme Dijkstry Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 1 / 25 Algorytmy zachłanne Strategia polegająca na
5. Rozwiązywanie układów równań liniowych
5. Rozwiązywanie układów równań liniowych Wprowadzenie (5.1) Układ n równań z n niewiadomymi: a 11 +a 12 x 2 +...+a 1n x n =a 10, a 21 +a 22 x 2 +...+a 2n x n =a 20,..., a n1 +a n2 x 2 +...+a nn x n =a
Optymalizacja. Algorytmy dokładne
dr hab. inż. Instytut Informatyki Politechnika Poznańska www.cs.put.poznan.pl/mkomosinski, Maciej Hapke Organizacja zbioru rozwiązań w problemie SAT Wielokrotny podział na dwia podzbiory: x 1 = T, x 1
ALGORYTMY EWOLUCYJNE W OPTYMALIZACJI JEDNOKRYTERIALNEJ
ALGORYTMY EWOLUCYJNE W OPTYMALIZACJI JEDNOKRYTERIALNEJ Zalety: nie wprowadzają żadnych ograniczeń na sformułowanie problemu optymalizacyjnego. Funkcja celu może być wielowartościowa i nieciągła, obszar
Optymalizacja. Przeszukiwanie lokalne
dr hab. inż. Instytut Informatyki Politechnika Poznańska www.cs.put.poznan.pl/mkomosinski, Maciej Hapke Idea sąsiedztwa Definicja sąsiedztwa x S zbiór N(x) S rozwiązań, które leżą blisko rozwiązania x
Rozwiązywanie problemów z użyciem Solvera programu Excel
Rozwiązywanie problemów z użyciem Solvera programu Excel Podstawowe czynności: aktywować dodatek Solver oraz ustawić w jego opcjach maksymalny czas trwania algorytmów na sensowną wartość (np. 30 sekund).
Rozdział 2 PROGRAMOWANIE LINIOWE CAŁKOWITOLICZBOWE
Wprowadzenie do badań operacyjnych z komputerem Opisy programów, ćwiczenia komputerowe i zadania. T. Trzaskalik (red.) Rozdział 2 PROGRAMOWANIE LINIOWE CAŁKOWITOLICZBOWE 2.2 Ćwiczenia komputerowe Ćwiczenie
Algorytmika w bioinformatyce
Algorytmika w bioinformatyce Kurs dla kierunku BIOINFORMATYKA 2016/2017 Prowadzący: Prof. Danuta Makowiec danuta.makowiec@gmail.com IFTiA, pok. 353, tel.: 58 523 2466 Motywacja 2 Cztery etapy rekonstrukcji
Algorytmika w bioinformatyce
Algorytmika w bioinformatyce Kurs dla kierunku BIOINFORMATYKA 2017/2018 Prowadzący: Prof. Danuta Makowiec danuta.makowiec@gmail.com IFTiA, pok. 353, tel.: 58 523 2466 Motywacja 2 Cztery etapy rekonstrukcji
Wymagania edukacyjne z matematyki dla klasy I gimnazjum wg programu Matematyka z plusem
Wymagania edukacyjne z matematyki dla klasy I gimnazjum wg programu Matematyka z plusem pojęcie liczby naturalnej, całkowitej, wymiernej rozszerzenie osi liczbowej na liczby ujemne sposób i potrzebę zaokrąglania
Algorytm i złożoność obliczeniowa algorytmu
Algorytm i złożoność obliczeniowa algorytmu Algorytm - przepis postępowania, którego wykonanie prowadzi do rozwiązania określonego problemu określa czynności, jakie należy wykonać wyszczególnia wszystkie
Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Projektowanie i analiza algorytmów
Politechnika Krakowska im. Tadeusza Kościuszki Karta przedmiotu Wydział Inżynierii Elektrycznej i Komputerowej obowiązuje w roku akademickim 01/013 Kierunek studiów: Elektrotechnika Forma studiów: Niestacjonarne
W wielu obliczeniach w matematyce bądź fizyce wykonanie niektórych kroków zależy od spełnienia warunku.
W wielu obliczeniach w matematyce bądź fizyce wykonanie niektórych kroków zależy od spełnienia warunku. Nie wolno dzielić przez zero i należy sprawdzić, czy dzielna nie jest równa zeru. W dziedzinie liczb
Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
Podstawy programowania Wykład: 13 Rekurencja 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Rekurencja - pojęcie 2 Rekurencja - pojęcie Rekurencja (rekursja) wywołanie
Podejście zachłanne, a programowanie dynamiczne
Podejście zachłanne, a programowanie dynamiczne Algorytm zachłanny pobiera po kolei elementy danych, za każdym razem wybierając taki, który wydaje się najlepszy w zakresie spełniania pewnych kryteriów
Algorytmy w teorii liczb
Łukasz Kowalik, ASD 2004: Algorytmy w teorii liczb 1 Algorytmy w teorii liczb Teoria liczb jest działem matemtyki dotyczącym własności liczb naturalnych. Rozważa się zagadnienia związane z liczbami pierwszymi,
Techniki optymalizacji
Techniki optymalizacji Symulowane wyżarzanie Maciej Hapke maciej.hapke at put.poznan.pl Wyżarzanie wzrost temperatury gorącej kąpieli do takiej wartości, w której ciało stałe topnieje powolne zmniejszanie
Statystyka podstawowe wzory i definicje
1 Statystyka podstawowe wzory i definicje Średnia arytmetyczna to suma wszystkich liczb (a 1, a 2,, a n) podzielona przez ich ilość (n) Przykład 1 Dany jest zbiór liczb {6, 8, 11, 2, 5, 3}. Oblicz średnią
Metoda podziału i ograniczeń
Seminarium: Algorytmy heurystyczne Metoda podziału i ograniczeń Mateusz Łyczek Wrocław, 16 marca 011 r. 1 Metoda podziału i ograniczeń Metoda podziału i ograniczeń służy do rozwiązywania problemów optymalizacyjnych.
Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott
Struktury danych i złożoność obliczeniowa Wykład 7 Prof. dr hab. inż. Jan Magott Problemy NP-zupełne Transformacją wielomianową problemu π 2 do problemu π 1 (π 2 π 1 ) jest funkcja f: D π2 D π1 spełniająca
Wstęp do programowania
Wstęp do programowania Złożoność obliczeniowa, poprawność programów Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 1 / 20 Złożoność obliczeniowa Problem Ile czasu
Programowanie liniowe. Tadeusz Trzaskalik
Programowanie liniowe Tadeusz Trzaskalik .. Wprowadzenie Słowa kluczowe Model matematyczny Cel, środki, ograniczenia Funkcja celu funkcja kryterium Zmienne decyzyjne Model optymalizacyjny Układ warunków
Programowanie liniowe metoda sympleks
Programowanie liniowe metoda sympleks Mirosław Sobolewski Wydział Matematyki, Informatyki i Mechaniki UW wykład z algebry liniowej Warszawa, styczeń 2012 Mirosław Sobolewski (UW) Warszawa, 2012 1 / 12
Metody Optymalizacji: Przeszukiwanie z listą tabu
Metody Optymalizacji: Przeszukiwanie z listą tabu Wojciech Kotłowski Instytut Informatyki Politechniki Poznańskiej email: imię.nazwisko@cs.put.poznan.pl pok. 2 (CW) tel. (61)665-2936 konsultacje: wtorek
Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku
Matematyka Dyskretna Andrzej Szepietowski 25 czerwca 2002 roku Rozdział 1 Rekurencja 11 Wieże Hanoi Rekurencja jest to zdolność podprogramu (procedury lub funkcji) do wywoływania samego siebie Zacznijmy
Wykład 3. Metoda dziel i zwyciężaj
Wykład 3 Metoda dziel i zwyciężaj 1 Wprowadzenie Technika konstrukcji algorytmów dziel i zwyciężaj. przykładowe problemy: Wypełnianie planszy Poszukiwanie (binarne) Sortowanie (sortowanie przez łączenie
Programowanie dynamiczne (optymalizacja dynamiczna).
Programowanie dynamiczne (optymalizacja dynamiczna). W wielu przypadkach zadania, których złożoność wynikająca z pełnego przeglądu jest duża (zwykle wyk ładnicza) można rozwiązać w czasie wielomianowym
Wykład 8. Drzewo rozpinające (minimum spanning tree)
Wykład 8 Drzewo rozpinające (minimum spanning tree) 1 Minimalne drzewo rozpinające - przegląd Definicja problemu Własności minimalnych drzew rozpinających Algorytm Kruskala Algorytm Prima Literatura Cormen,
Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne
A. Permutacja losowa Matematyka dyskretna - wykład - część 2 9. Podstawowe algorytmy kombinatoryczne Załóżmy, że mamy tablice p złożoną z n liczb (ponumerowanych od 0 do n 1). Aby wygenerować losową permutację
FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;
Rekurencja Wykład: rekursja, funkcje rekurencyjne, wywołanie samej siebie, wyznaczanie poszczególnych liczb Fibonacciego, potęgowanie, algorytm Euklidesa REKURENCJA Rekurencja (z łac. recurrere), zwana
Metody Programowania
POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Metody Programowania www.pk.edu.pl/~zk/mp_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 8: Wyszukiwanie
Rekurencja (rekursja)
Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)
Grupowanie Witold Andrzejewski, Politechnika Poznańska, Wydział Informatyki 201/633
Grupowanie Grupowanie 7 6 5 4 y 3 2 1 0-3 -2-1 0 1 2 3 4 5-1 -2-3 -4 x Witold Andrzejewski, Politechnika Poznańska, Wydział Informatyki 201/633 Wprowadzenie Celem procesu grupowania jest podział zbioru
wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis
i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje
Obrazy rekurencyjne. Zastosowanie rekurencji w algorytmice. AUTOR: Martin Śniegoń
Obrazy rekurencyjne Zastosowanie rekurencji w algorytmice AUTOR: Martin Śniegoń Zdolność procedury/funkcji do wywoływania samej siebie Podstawowa i jedna z najważniejszych technik programistycznych Umożliwia
Algorytmy komputerowe. dr inŝ. Jarosław Forenc
Rok akademicki 2009/2010, Wykład nr 8 2/24 Plan wykładu nr 8 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2009/2010
Algorytmy komputerowe. dr inż. Jarosław Forenc
Rok akademicki 2010/2011, Wykład nr 9/10 2/38 Plan wykładu nr 9/10 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki
5. Rekurencja. Przykłady
5. Rekurencja Uwaga! W tym rozdziale nie są omówione żadne nowe konstrukcje języka C++. Omówiona jest za to technika wykorzystująca funkcje, która pozwala na rozwiązanie pewnych nowych rodzajów zadań.
PLAN WYNIKOWY Z MATEMATYKI DLA II KL. GIMNAZJUM do podręcznika GWO Matematyka z plusem. PODSTAWOWE Uczeń zna: POTĘGI I PIERWIASTKI
Ewa Koralewska LP..... 5... OGÓLNA PODSTA- WA PROGRA- MOWA PLAN WYNIKOWY Z MATEMATYKI DLA II KL. GIMNAZJUM do podręcznika GWO Matematyka z plusem TEMATYKA LEKCJI LICZBA GODZIN Lekcja organizacyjna. Potęga
WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA
WYŻSZA SZKOŁA IFORMATYKI STOSOWAEJ I ZARZĄDZAIA Złożoność algorytmów Złożoność pamięciowa algorytmu wynika z liczby i rozmiaru struktur danych wykorzystywanych w algorytmie. Złożoność czasowa algorytmu
I. Podstawy języka C powtórka
I. Podstawy języka C powtórka Zadanie 1. Utwórz zmienne a = 730 (typu int), b = 106 (typu long long), c = 123.45 (typu double) Wypisz następujące komunikaty: Dane sa liczby: a = 730, b = 106 i c = 123.45.
Elementy Modelowania Matematycznego
Elementy Modelowania Matematycznego Wykład 8 Programowanie nieliniowe Spis treści Programowanie nieliniowe Zadanie programowania nieliniowego Zadanie programowania nieliniowego jest identyczne jak dla
Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott
Struktury danych i złożoność obliczeniowa Wykład. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: podstawowe pojęcia, reprezentacja grafów, metody przeszukiwania, minimalne drzewa rozpinające, problemy
Sortowanie przez scalanie
Sortowanie przez scalanie Wykład 2 12 marca 2019 (Wykład 2) Sortowanie przez scalanie 12 marca 2019 1 / 17 Outline 1 Metoda dziel i zwyciężaj 2 Scalanie Niezmiennik pętli - poprawność algorytmu 3 Sortowanie
Programowanie w Logice
Programowanie w Logice Przeszukiwanie rozwiązań Przemysław Kobylański Generowanie wszystkich rozwiązań Prolog nie tylko potrafi sprawdzić czy dana spełnia warunek ale również potrafi wygenerować wszystkie