• Nie Znaleziono Wyników

Techniki _algorytmiczne_przyblizone_i_dokladne.NET

N/A
N/A
Protected

Academic year: 2021

Share "Techniki _algorytmiczne_przyblizone_i_dokladne.NET"

Copied!
37
0
0

Pełen tekst

(1)

(2) TECHNIKI ALGORYTMICZNE – przybliżone i dokładne WPROWADZENIE DO ALGORYTMIKI. Maciej M. Sysło. Uniwersytet Wrocławski Uniwersytet UMK w Toruniu syslo@ii.uni.wroc.pl. informatyka +. 2.

(3) Algorytm, algorytmika Algorytm – opis rozwiązania krok po kroku postawionego problemu lub sposobu osiągnięcia jakiegoś celu Pierwszy algorytm – algorytm Euklidesa 300 p.n.e algorytm od Muhammad ibn Musa al-Chorezmi IX w. Algorytmika – dziedzina zajmująca się algorytmami i ich własnościami. informatyka +. 3.

(4) Algorytmy a informatyka Informatyka – jedna z definicji: dziedzina wiedzy i działalności zajmująca się algorytmami Czy zajmuje się też algorytmami kulinarnymi? Donald E. Knuth: Mówi się często, że człowiek dotąd nie zrozumie czegoś, zanim nie nauczy tego – kogoś innego. Będziemy uczyć W rzeczywistości, komputery, czyli programować je ! człowiek nie zrozumie czegoś (algorytmu) naprawdę, zanim nie zdoła nauczyć tego – komputera.. Ralf Gomory (IBM): Najlepszym sposobem przyspieszania komputerów jest obarczanie ich mniejszą liczbą działań (szybszymi algorytmami). informatyka +. 4.

(5) Algorytmiczne rozwiązywanie problemu Dla problemu – chcemy otrzymać rozwiązanie komputerowe, które jest: • zrozumiałe dla każdego, kto zna problemu • poprawne, czyli spełnia specyfikację (opis) problemu • efektywne, czyli nie marnuje czasu i pamięci komputera. Metoda rozwiązywania: • analiza sytuacji problemowej • sporządzenie specyfikacji: wykaz danych, wyników i relacji • projekt rozwiązania • komputerowa realizacja rozwiązania – implementacja • testowanie poprawności rozwiązania • dokumentacja i prezentacja rozwiązania. informatyka +. 5.

(6) Rozwiązywanie problemów z pomocą komputerów Objaśnienie dwóch terminów: Problem: • problem, gdy nie podano nam, jak należy go rozwiązać, ale wiemy wystarczająco, by poradzić sobie z nim • a więc, problem jest dla każdego nie tylko dla orłów. Programowanie: • komputery wykonują tylko programy • cokolwiek uruchamiamy na komputerze: Google, dokument w Word, arkusz w Excel, naciśnięcie klawisza – jest programem • każdy widoczny i niewidoczny efekt działania komputera to wynik działania jakiegoś programu. Konkluzja: powinniśmy lepiej poznać programowanie komputerów. informatyka +. 6.

(7) Myślenie algorytmiczne Myślenie komputacyjne (ang. computational thinking). Reklama firmy IBM z 1924 roku. Komputer to maszyna do myślenia !!!. informatyka +. 7.

(8) Techniki algorytmiczne – przybliżone i dokładne – idee • W wielu sytuacjach postępujemy intuicyjnie, podejmując decyzje, które wydają się nam najlepsze, chociaż nie potrafimy tego uzasadnić – podejście zachłanne • Jednak czasem musimy przejrzeć wszystkie możliwości – dobrze jest mieć pewność, że przeglądamy (pośrednio lub bezpośrednio) wszystkie, ale bez powtórzeń – metoda przeszukiwania z nawrotami • Stara zasada – korzystać z tego, co już znamy – strategia dziel i zwyciężaj • Komputery staramy się używać wtedy, gdy bez niech nie potrafimy sobie poradzić. A najlepiej, gdyby komputery wykonywały za nas dużą część roboty. Rekurencja – czyli jak zwalić robotę na komputer. informatyka +. 8.

(9) Techniki algorytmiczne – przybliżone i dokładne – Plan zajęć • Podejście zachłanne: – – – –. wydawanie reszty zmartwienie napalonego kinomana pakowanie najcenniejszego plecaka najdłuższa droga w piramidzie. • Przeszukiwanie z nawrotami. – poszukiwanie wyjścia z labiryntu – rozmieszczanie hetmanów na szachownicy. • Strategia dziel i zwyciężaj. – poszukiwanie elementów w zbiorze uporządkowanym. • Rekurencja. – wyprowadzanie liczb od początku – szybkie potęgowanie – algorytm Euklidesa. informatyka +. 9.

(10) Metoda zachłanna: wydawanie reszty – problem Problem Reszty. Dane: nominały, np. 1 gr, 2 gr, 5 gr, … K – kwota do wydania Wynik: Utworzyć K z najmniejszej liczby banknotów i monet Dla sprzedawcy to także Dyskusja: dobre kryterium – ma mniej • jak wydają sprzedawcy? okazji, by się pomylić • jaki mamy pomysł? • czy potrafimy uzasadnić, że nasz pomysł da najlepsze rozwiązanie?. Konkluzja – algorytm zachłanny: Wydawaj sukcesywnie, zawsze możliwie największy nominał banknotu lub monety. informatyka +. 10.

(11) Metoda zachłanna: wydawanie reszty – w arkuszu. Rozwiązanie w arkuszu – w arkuszu można również wykonywać algorytmy. Ćwiczenie na warsztatach: utworzyć taki arkusz. informatyka +. 11.

(12) Warsztaty Algorytm, język programowania, komputer Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie na język zrozumiały przez komputer • Wykonanie • Testowanie • Prezentacja rozwiązania. informatyka +. 12.

(13) Metoda zachłanna: wydawanie reszty – program Deklaracje zmiennych Program Zachlanna_reszta_PL; var i,ile,kwota_int:integer; kwota :real; Nominały w groszach nominal:array[1..14] of integer =(20000,10000,5000,2000,1000,500,200,100,50,20,10,5,2,1); reszta :array[1..14] of integer; Czytanie kwoty begin write('kwota'); read(kwota); kwota_int:=round(kwota*100); Zamiana kwoty na grosze for i:=1 to 14 do begin ile:=kwota_int div nominal[i]; Obliczanie wielkości reszta[i]:=ile; kolejnych nominałów kwota_int:=kwota_int-ile*nominal[i] end; for i:=1 to 8 do writeln(nominal[i] div 100,' zl.: ',reszta[i]); for i:=9 to 14 do Wyprowadzenie writeln(nominal[i],' gr.: ',reszta[i]) wyników end.. informatyka +. 13.

(14) Metoda zachłanna: wydawanie reszty – jak dobrze? Pytanie: jak dobry jest algorytm zachłanny? Czy zawsze tworzy resztę z najmniejszej liczby banknotów i monet? Sytuacje: • brakuje niektórych nominałów w kasie, np. 5 gr. i 10 gr. • pojawia się nowa moneta, np. 21 gr. Fakt: Istniejące w świecie nominały, gdy tylko jest ich dostatecznie dużo w kasie, gwarantują, że algorytm zachłanny daje zawsze najmniejszą liczbę banknotów i monet. informatyka +. 14.

(15) Metoda zachłanna: zmartwienie kinomana Sytuacja: Dane: program filmów w Multikinie na dany dzień Wynik: Kinoman chce jednego dnia zobaczyć jak najwięcej filmów w Multikinie. 1. X. 2. X. X. X. 3. X. X. 4. X. Strategia: Wybieraj filmy, które kończą się możliwie jak najwcześniej Uzasadnienie: Pozostaje więcej czasu na następne filmy Konkluzja: Jest to optymalny algorytm.. informatyka +. 15.

(16) Metoda zachłanna: pakowanie plecaka Ogólny problem plecakowy Dane: n rzeczy (towarów, produktów itp.), w nieograniczonej ilości: i-ta rzecz waży wi jednostek i ma wartość pi: W – maksymalna pojemność plecaka. Wynik: ilości poszczególnych rzeczy (mogą być zerowe), których całkowita waga nie przekracza W i których sumaryczna wartość jest największa wśród wypełnień plecaka rzeczami o wadze nie przekraczającej W. Decyzyjny problem plecakowy – 0-1 (zero-jedynkowy) Rzeczy są tylko w pojedynczych ilościach – decyzja: bierzemy albo nie. informatyka +. 16.

(17) Metoda zachłanna: pakowanie plecaka Przykład: wartość towaru: waga towaru:. Pojemność plecaka. Zachłanne kryteria wyboru rzeczy do plecaka: 1. Najcenniejsze najpierw: 7 x nr 5 + 1 x nr 4 = 7x10 + 1x7 = 77 2. Najlżejsze najpierw: 23 x nr 6 = 23x2 = 46 3. Najcenniejsze w stosunku do swojej wagi najpierw, czyli w kolejności nierosnących wartości ilorazu pi / wi Kolejność: 7/2, 10/3, 4/2, 2/1, 5/3, 6/6 11 x nr 4 + 1 x nr 6 = 11x7 + 1x2 = 79 NAJLEPSZE OPTYMALNE: 10 x nr 4 + 1 x nr 5 = 10x7 + 1x10 = 80 Żadne zachłanne nie jest optymalne – na ogół tak jest. informatyka +. 17.

(18) Metoda zachłanna: najdłuższa droga z piramidy 3. Dane: Piramida liczb: 5 8 4 3. 7 2. 5 6. Droga z korzenia 5. 7 3. 5 4. 2. Wynik: Znaleźć najdłuższą drogę z korzenia Długość drogi zachłannej: niebieska: 3+7+5+7+4 = 26. Algorytm zachłanny. 1. Zacznij w korzeniu 2. Wybieraj większą liczbę poniżej.. informatyka +. Długość drogi najdłuższej: różowa: 3+5+8+5+6 = 27. 18.

(19) Przeszukiwanie z nawrotami Opis sytuacji: • Duża przestrzeń możliwych rozwiązań. • Nie znamy innej metody znalezienia rozwiązania niż przeszukanie tej przestrzeni • Decydujemy się przeszukać całą przestrzeń, ale – –. chcemy to zrobić systematycznie każde rozwiązanie powinno się pojawić, bezpośrednio lub pośrednio, ale żadne nie więcej niż raz. • Może nas interesować znalezienie wszystkich rozwiązań Przykłady: • Wychodzenie z labiryntu – duża liczba możliwych dróg • Ustawianie figur na szachownicy – duża liczba możliwych układów. informatyka +. 19.

(20) Przeszukiwanie z nawrotami: wychodzenie z labiryntu. Opis sytuacji: Labirynt: pola = kwadraty, brak zamkniętych komnat Cel: znaleźć wyjście z dowolnego pola Algorytm: 1. Wybieraj kierunki w kolejności: G (do góry), L (w lewo), P (w prawo), D (do dołu) – patrzymy zawsze przed siebie 2. Jeśli nie ma przejścia – cofnij się na pole, z którego przyszedłeś. Nawrót. informatyka +. 20.

(21) Przeszukiwanie z nawrotami: wychodzenie z labiryntu Droga z pola 4a: G-3a, G-2a, G-1a – do Góry już nie można iść, ale można iść w Prawo P-1b – z tego pola nie ma już przejść G, L, P – cofamy się B-1a – także nie ma innego przejścia – cofamy się B-2a – podobnie, cofamy się B-3a – podobnie, cofamy się – z 3a można iść jeszcze w Prawo P-3b – istnieje przejście w Lewo L-2b – istnieje przejście w Prawo P-2c – istnieje przejście w Lewo WYJŚCIE z labiryntu. informatyka +. 21.

(22) Przeszukiwanie z nawrotami: rozmieszczanie hetmanów na szachownicy Opis sytuacji: Szachownica: n x n, hetman – atakuje po wszystkich liniach Cel: ustawić jak największą liczbę nie atakujących się hetmanów Algorytm: Poruszamy się kolumnami, od lewej do prawej, a w kolumnach od góry. 1. Ustaw hetmana w danej kolumnie na nie atakowanym polu. 2. Jeśli nie można, to cofnij się do poprzedniej kolumny i wybierz Nawrót następne pole. informatyka +. 22.

(23) Przeszukiwanie z nawrotami: rozmieszczanie hetmanów na szachownicy. a4. b2: brak pola w c. nawrót a: a3. b1. nawrót do b: b1. informatyka +. c4. c3: brak pola w d. d2 !!!. 23.

(24) Przeszukiwanie z nawrotami: rozmieszczanie hetmanów na szachownicy Drzewo poszukiwania ustawień: Ustawienie 4 hetmanów Odbicie symetryczne. Oś symetrii drzewa. informatyka +. 24.

(25) Strategia dziel i zwyciężaj – przykład – poszukiwanie elem. w zbiorze uporządkowanym Zgadywana liczba: Metoda: Kolejne kroki:. 17 w przedziale [1 : 20]. połowienia przedziału strzałka wskazuje wybór; kolor czerwony – ciąg do przeszukania:. informatyka +. 25.

(26) Techniki algorytmiczne – rekurencja Myślenie rekurencyjne: – – – – – –. przykłady z życia: jedzenie, tańczenie wyprowadzanie liczb od początku Wieże Hanoi liczby Fibonacciego szybkie potęgowanie algorytm Euklidesa. Rekurencyjny algorytm: Rozwiązując problem … odwołuje się do siebie Korzyści: Część pracy … zwalamy na komputer!. informatyka +. 26.

(27) Rekurencja – przykłady z życia • Jedzenie kaszki z talerza – A. Jerszow Jedz kaszkę; jeśli talerz jest pusty to koniec jedzenia Warunek w przeciwnym razie początkowy – weź łyżkę kaszki; zatrzymuje Jedz kaszkę wywołania. Procedura rekurencyjna wywołuje siebie. • Taniec Tańcz; jeśli nie gra muzyka to koniec tańczenia w przeciwnym razie zrób krok; Tańcz. informatyka +. 27.

(28) Rekurencja – wyprowadzanie kolejnych cyfr liczby Liczbę 3045 drukuj w kolejności cyfr: 3 0 4 5 Algorytm – drukowania cyfr liczby 3045 1. Najpierw drukuj cyfry liczby 304 2. Później drukuj cyfrę 5 Zauważmy: możemy zastosować ten sam algorytm ale do liczby 304 – REKURENCJA. Liczba 304 to: 3045 div 10 = 304. Cyfra 5 to reszta: 3045 mod 10 = 5. Potrzebne są dwie operacje: reszta z dzielenia mod: np. 3045 mod 10 = 5 dzielenie całkowite div: np. 3045 div 10 = 304. informatyka +. 28.

(29) Rekurencja – wyprowadzanie kolejnych cyfr liczby KolejnaCyfra (m) if m < 10 then write (m) else begin KolejnaCyfra (m div 10);. Warunek początkowy – gdy liczba ma jedną cyfrę. Wywołanie rekurencyjne dla liczby bez ostatniej cyfry. write (m mod 10) Drukowanie ostatniej cyfry. end. Uwagi: 1. Można zastąpić 10 przez 2 i otrzymamy kolejne cyfry binarne, od najbardziej znaczącej 2. Po zmianie kolejności poleceń – drukowanie cyfr od końca. informatyka +. 29.

(30) Rekurencja – wyprowadzanie kolejnych cyfr liczby Wywołania rekurencyjne. KolejnaCyfra (3045). 304 = 3045 div 10. KolejnaCyfra (304) write (3045 mod 10) = 5. KolejnaCyfra (30). write (304 mod 10). =4. KolejnaCyfra (3). write (30 mod 10). =0. write (3). =3. Kolejno drukowane cyfry. Powrót z wywołań rekurencyjnych. informatyka +. 30.

(31) Rekurencja – inny przykład – Wieże Hanoi Hanoi (n, A, B, C) {z A na B za pomocą C} if n = 0 then nic nie rób else begin Warunek początkowy – zatrzymuje wywołania. Procedura rekurencyjna wywołuje siebie. Hanoi (n – 1, A, C, B); Największy krążek z A na B; Hanoi (n – 1, C, B, A). end. informatyka +. 31.

(32) Rekurencja – inny przykład – króliki Fibonacciego F(n) – liczba par królików po n miesiącach 1. 2. •. •. F(1)=1. F(2)=1. Warunki początkowe. 3. n–2. •. •. n–1. •. n. •. Rekurencja: Króliki, które przeżywają. Króliki, urodzone przez pary żyjące ponad miesiąc. dla n > 2: F(n) =. F(n-1). + F(n-2). Liczby Fibonacciego: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …. informatyka +. 32.

(33) Rekurencja – inne przykłady • Podnoszenie do potęgi. Uwaga. Obliczenia przebiegają tak, jakby n było liczbą binarną zapisaną w postaci schematu Hornera. Potega (x, n) { xn } if n = 1 then Potega := x else if n – parzyste then Potega := Potega (x, n/2)^2 else Potega := Potega (x, n – 1)*x. {xn = (xn/2)2} {xn = (xn–1)x}. • Algorytmy sortowania – demo w programie Sortowanie Sortowanie przez scalanie Sortowanie szybkie. informatyka +. 33.

(34) Rekurencja – inne przykłady • Algorytm Euklidesa NWD(m,n) {zakładamy m≤n} if m = 0 then NWD := n else NWD := NWD(n mod m, m). Reszta z zdzielenia n przez m.. • Wartość wielomianu stopnia n w punkcie x w(n,x) if n = 0 then w := a0 else w := w(n – 1, x) *x + an. informatyka +. 34.

(35) Pokrewne zajęcia w Projekcie Informatyka + Wykład+Warsztaty (Wszechnica Poranna): • Wprowadzenie do algorytmiki i programowania – wyszukiwanie i porządkowanie informacji • Proste rachunki wykonywane za pomocą komputera. • Techniki algorytmiczne – przybliżone (heurystyczne) i dokładne. Wykłady (Wszechnica Popołudniowa): • Czy wszystko można policzyć na komputerze? • Porządek wśród informacji kluczem do szybkiego wyszukiwania. • Dlaczego możemy się czuć bezpieczni w sieci, czyli o szyfrowaniu informacji. • Znajdowanie najkrótszych dróg, najniższych drzew, najlepszych małżeństw. informatyka +. 35.

(36) Pokrewne zajęcia w Projekcie Informatyka + Kursy (24 godz.) – Wszechnica na Kołach: • Algorytmy poszukiwania i porządkowania. Elementy języka programowania • Różnorodne algorytmy obliczeń i ich komputerowe realizacje • Grafy, algorytmy grafowe i ich komputerowe realizacje Kursy (24 godz.) – Kuźnia Informatycznych Talentów – KIT dla Orłów: • Przegląd podstawowych algorytmów • Struktury danych i ich wykorzystanie • Zaawansowane algorytmy Tendencje – Wykłady • Algorytmy w Internecie, K. Diks • Czy P = NP, czyli jak wygrać milion dolarów w Sudoku, J. Grytczuk • Między przeszłością a przyszłość informatyki, M.M Sysło. informatyka +. 36.

(37)

(38)

Cytaty

Powiązane dokumenty

Consider N magnetic moments, which have two allowed orientations ±µ in an external magnetic field B (the energy of each dipole can take

Wszystkie punkty x nie b¦d¡ce liczbami caªkowitymi s¡ wi¦c punktami ci¡gªo±ci f... Teraz sprawdzamy zera

Funkcja potęgowa jest poprawnie określona (patrz definicja potęgi o wykład- niku naturalnym, całkowitym i rzeczywistym oraz uwagi 3.1.1, 3.2.1)... Z definicji pierwiastka

Na odcinek [−n, n] rzucono losowo (zgodnie z rozkładem jednostajnym) n gwiazd o masach jed- nostkowych7. Dla danego α rozkład

164. Wśród poniższych sześciu szeregów wskaż szereg zbieżny, a następnie udowodnij jego zbieżność.. musi być rozbieżny). N - może być zbieżny lub

Zbadać, w jakim kole jest zbieżny szereg MacLaurina funkcji tgh z.. Znaleźć kilka pierwszych

Ile jest liczb siedmiocyfrowych, w których każda kolejna cyfra jest mniejsza od poprzedniej?.

, n}, oraz że każde dwa drzewa opisane są innym kodem Pr¨ ufera, można wyzna- czyć wzór funkcji t 1 poprzez badanie liczby odpowiednich kodów Pr¨ ufera.. Dotyczy to