Zadania obliczeniowe, algorytmy i złoŝoność obliczeniowa

Wielkość: px
Rozpocząć pokaz od strony:

Download "Zadania obliczeniowe, algorytmy i złoŝoność obliczeniowa"

Transkrypt

1 Dr inŝ. Jerzy Mieścicki Instytut Informatyki PW Zadania obliczeniowe, algorytmy i złoŝoność obliczeniowa Wstęp do Informatyki, część 2

2 Od zadań obliczeniowych do systemów Zadania obliczeniowe Algorytmy Programy Systemy Zadanie 1 Zadanie 1 Zadanie 2 Zadanie 2 Zadanie 3 Zadanie Zadanie n Zadanie n Algorytm 2a Algorytm 2a Algorytm 2b Algorytm 2b Algorytm 2c Algorytm 2c Program A Program A Program B Program B Program C Program C Wykonanie programu B w systemie X Wykonanie programu B w systemie Y Wykonanie programu B w systemie Z Wstęp do Informatyki, część 2 2

3 Przeszukiwanie listy nieuporządkowanej Zapisy (records), umieszczone w przypadkowej kolejności zadany klucz Zadanie: Czy wśród N rekordów jest taki R(i), w którym zawartość wskazanego pola jest zgodna z zadanym kluczem, Jeśli tak odczytaj ten R(i), Jeśli nie napisz nie ma N Wstęp do Informatyki, część 2 3 i pole klucza

4 Przeszukiwanie listy nieuporządkowanej i... N Dowolne liczby całkowite, umieszczone w przypadkowej kolejności, w kolejno ponumerowanych komórkach 7 zadana liczba Zadanie: Czy jest wśród nich zadana liczba (np. 7 ), Jeśli tak wypisz numer komórki, Jeśli nie napisz nie ma Wstęp do Informatyki, część 2 4

5 Przeszukiwanie listy nieuporządkowanej start Dane: L[1:N] wektor liczb całkowitych, L(i) liczba na i-tej pozycji, N, K, i - liczby całkowite, K klucz, i indeks przeszukiwania. nie i := 0 i := i+1 i > N nie L(i)== K tak tak Pisz nie ma stop Pisz i stop Wstęp do Informatyki, część 2 5

6 Przeszukiwanie listy nieuporządkowanej start i := 0 i := i+1 Czynności jednorazowe (inicjalizacja, edycja wyników itp.) Czynności wykonywane wielokrotnie, (w najgorszym przypadku N razy) i > N nie tak Pisz nie ma stop nie L(i)== K tak Pisz i stop Wstęp do Informatyki, część 2 6

7 Przeszukiwanie listy nieuporządkowanej Czas wykonania N ZaleŜność czasu wykonania od rozmiaru danych (N) jest liniowa, Mówi się, Ŝe złoŝoność obliczeniowa (czasowa) jest O(N). Wstęp do Informatyki, część 2 7

8 Przeszukiwanie listy nieuporządkowanej - ulepszenie start start i := 0 Dopisz K jako L(N+1) i := i+1 i := 0 nie i > N nie L(i)== K tak tak Pisz nie ma stop Pisz i nie Pisz nie ma i := i+1 L(i)== K tak tak i > N nie stop stop stop Pisz i Wstęp do Informatyki, część 2 8

9 Przeszukiwanie listy nieuporządkowanej Czas wykonania Alg. 1 Alg. 1a N W obu przypadkach zaleŝność czasu wykonania od rozmiaru danych (N) jest liniowa, Oba algorytmy mają taką samą złoŝoność obliczeniową: O(N). Wstęp do Informatyki, część 2 9

10 Przeszukiwanie listy uporządkowanej N=8 1 3 Liczby całkowite, umieszczone w kolejno ponumerowanych komórkach uporządkowane narastająco. Zadanie to samo: Czy jest wśród nich zadana liczba (np. 7 ), Jeśli tak wypisz numer komórki, Jeśli nie napisz nie ma Wstęp do Informatyki, część 2 10

11 Przeszukiwanie listy uporządkowanej N= Oba algorytmy przeszukiwania listy nieuporządkowanej działałyby równieŝ w tym przypadku, Ale tu moŝna zastosować lepszy pomysł: dzielenia na połowy. Wstęp do Informatyki, część 2 11

12 Przeszukiwanie listy uporządkowanej N= Niech np. zadana liczba K = 7 przygraniczna L(5) = 157 > K, więc nie ma czego szukać w dolnej połowie, Powtórzmy całe rozumowanie dla górnej połowy. Wstęp do Informatyki, część 2 12

13 Przeszukiwanie listy uporządkowanej Czas Dwukrotne zwiększenie N (np. z 8 do 16, z 16 do 32 itd.) dodaje jeden krok do algorytmu dzielenia na połowy, Algorytm ten ma więc złoŝoność O(log N). O(N) A O(log N) 0 1 N N* B O(log N) < O(N), poniewaŝ istnieje takie N*, Ŝe dla kaŝdego N > N* czas wykonania T A < T B,... choć dla pewnego zakresu N moŝe być odwrotnie Wstęp do Informatyki, część 2 13

14 Porównywanie grafów G 1 G Czy G 1 jest izomorficzny z G 2? Wstęp do Informatyki, część 2 14

15 Porównywanie grafów G 1 G Czy G 1 jest izomorficzny z G 2? Wstęp do Informatyki, część 2 15

16 Porównywanie grafów G od do Potrzebne jest porównanie dwóch takich tabel, Gdy N jest liczbą węzłów, liczba porównań jest proporcjonalna do N 2, Zatem złoŝoność O(N 2 ) 6 Wstęp do Informatyki, część 2 16

17 Problem komiwojaŝera (traveling salesman p.) P G W R Problem: znaleźć najkrótszą trasę od W z powrotem do W, odwiedzającą (jednokrotnie) wszystkie N=3 miasta. Inaczej: znaleźć najkrótszy cykl w zadanym grafie. Wstęp do Informatyki, część 2 17

18 Problem komiwojaŝera G W G P R P W R P R R P G R R G G P P G W W W W W W 6 tras do porównania Wstęp do Informatyki, część 2 18

19 Problem komiwojaŝera G Najkrótsza: WGPRW (lub WRPGW) ma 1529 km, NajdłuŜsza: WGRPW (lub WPRGW) ma 1817 km. P W R Wstęp do Informatyki, część 2 19

20 Problem komiwojaŝera Dla N = 4: W G P R P R G R G P W W W W W W 4*3*2*1 = N! = 24 trasy do porównania Wstęp do Informatyki, część 2 20

21 Problem komiwojaŝera ZłoŜoność obliczeniowa O(N!), Ogromna liczba stosunkowo prostych obliczeń, ZałóŜmy dla wsparcia wyobraźni, Ŝe pewien komputer wylicza i porównuje 10 6 tras na sekundę. 1 doba = s, 1 rok = s, Przy tym załoŝeniu: Wstęp do Informatyki, część 2 21

22 Problem komiwojaŝera N Czas s 0.36 s 3.6 s 8 min > 1 doba > 2 tygodnie ~ 11 lat ~ 200 lat lat Eksplozja wykładnicza Wstęp do Informatyki, część 2 22

23 Program, ale czy algorytm? X liczba całkowita większa od zera; begin; while ~ (X = = 1); if X parzyste then X := X/2 eiseif X nieparzyste then X:= 3*X+1; endif; endwhile; begin Wprowadź X tak X==1 nie X parzyste tak nie X:=X/2 X:=3X+1 end end; Wstęp do Informatyki, część 2 23

24 Superprogram oceniający własność stopu? start Dowolny program P Wczytaj P MoŜna udowodnić, Ŝe zadanie zbudowania programu określającego własność stopu dowolnego programu jest nierealizowalne. Stop 1 Tak, P ma własność stopu? Stop2 Nie, P nie ma własności stopu Wstęp do Informatyki, część 2 24

25 Klasy złoŝoności obliczeniowej (czasowej) Przeszukiwanie listy nieuporządkowanej O(N), Przeszukiwanie listy uporządkowanej O(log N), Sortowanie O(N log N), Porównywanie grafów O(N 2 ) WieŜe Hanoi O(2 N ), Problem komiwojaŝera O(N!), Problem budowy uniwersalnego programu badającego własność stopu w ogóle nierozstrzygalny trudne obliczeniowo łatwe Nieobliczalne (nierozstrzygalne) ZłoŜoność wykładnicza O(k N ) O(N k ), złoŝoność wielomianowa lub lepsza Wstęp do Informatyki, część 2 25

26 Luka algorytmiczna łatwe trudne... O(k NN )... O(N!) O(2 N ) O(N 10 )... O(N 2 ) O(N) O(logN)... Dla pewnego problemu obliczeniowego: Znany algorytm Górne ograniczenie Luka algorytmiczna Dolne ograniczenie Formalny dowód (Ŝe nie moŝe być lepiej) Odkrywanie nowych algorytmów Nowe dowody matematyczne Wstęp do Informatyki, część 2 26

27 Problemy algorytmicznie zamknięte Jeśli luka algorytmiczna nie istnieje problem jest algorytmicznie zamknięty. Algorytmicznie zamknięte są na przykład: Przeszukiwanie listy nieuporządkowanej: udowodniono, Ŝe złoŝoność nie moŝe być lepsza, niŝ O(N), znany jest algorytm o złoŝoności O(N). Sortowanie, O(N logn)... Wstęp do Informatyki, część 2 27

28 Klasa problemów NP-zupełnych (NPC) trudne łatwe... O(k NN )... O(N!) O(2 N ) O(N 10 )... O(N 2 ) O(N) O(logN)... Górne ograniczenie Ogromna luka algorytmiczna NPC? Dolne ograniczenie nie znane Wstęp do Informatyki, część 2 28

29 Klasa problemów NPC NPC od Nondeterministically Polynomial Complete, KaŜdy problem jest (jako całość) obliczeniowo trudny, Rozwiązanie polega z zasady na wykonaniu ogromnej liczby łatwych obliczeń, kaŝde o wielomianowej (polynomial) złoŝoności O(N k ), Kolejność ich wykonywania nie jest określona (t.zn. jest niedeterministyczna); W zaleŝności od przypadku (lub szczęścia) rezultat moŝna otrzymać równie dobrze juŝ w pierwszym, jak dopiero w ostatnim kroku obliczeń, Wstęp do Informatyki, część 2 29

30 Klasa problemów NPC Klasa NPC jest zupełna (complete) w tym sensie, Ŝe naleŝące do niej problemy są wzajemnie powiązane za pomocą redukcji, znalezienie rozwiązania wielomianowego dla choćby jednego z problemów oznaczałoby wciągnięcie wszystkich problemów NP do klasy problemów łatwych (wielomianowych, P), i odwrotnie, udowodnienie dla choćby jednego problemu istnienia dolnej granicy powyŝej złoŝoności wielomianowej oznaczałoby wciągnięcie wszystkich problemów NP do klasy problemów trudnych, Czy NP = P? Wstęp do Informatyki, część 2 30

31 Przykłady problemów NP: problem plecakowy Plecak N rzeczy do zapakowania Zadanie: tak poukładać rzeczy w plecaku, Ŝeby zostało w nim jak najwięcej wolnego (niewykorzystanego) miejsca. Problem jest NP. Wstęp do Informatyki, część 2 31

32 Układanie rozkładu zajęć Plan tygodnia Wykłady, laboratoria, ćwiczenia do poukładania... plus kryterium (kryteria) celu... plus więzy (ograniczenia) Wstęp do Informatyki, część 2 32

33 Pojęcie redukcji Układanie rozkładu zajęć sprowadza się (redukuje się) do problemu plecakowego, Istnieje redukcja przekształcająca problem układania rozkładu zajęć w problem plecakowy. Redukcja A do B: Problem A Problem A Algorytm o złoŝoności O(N k ) przeliczający dane A na dane B cel A na cel B Problem B Problem B Wstęp do Informatyki, część 2 33

34 Przykłady problemów NP: kolorowanie mapy Dana jest mapa N państw oraz K kolorów, N > 1, K < N, Zadanie polega na stwierdzeniu (tak nie), czy daną mapę moŝna pokolorować K kolorami w taki sposób, by sąsiadujące państwa się zawsze róŝniły kolorem. Dla K = 1 rozwiązanie natychmiastowe (nie), Dla K = 2: Tak jedynie gdy w kaŝdym węźle zbiega się parzysta liczba krawędzi, Zatem złoŝoność O(N 2 ), Dla K = 4 rozwiązanie natychmiastowe (zawsze tak ), Dla K = 3 problem jest NP. Wstęp do Informatyki, część 2 34

35 Przykłady problemów NP: kolorowanie grafu 1? Dany jest graf o N wierzchołkach oraz K kolorów (K < N), Zadanie: rozstrzygnąć (tak-nie), czy da się pokolorować wierzchołki danego grafu tak, by Ŝadne dwa wierzchołki połączone krawędzią nie były tego samego koloru, Dla K>2 problem jest NP. Wstęp do Informatyki, część 2 35

36 Metody algorytmiczne Algorytmy zachłanne (greedy) Podział na pod-zadania ( divide and conquer ) Rozwiązywanie metodą top-down i bottom-up Algorytmy rekurencyjne Algorytmy iteracyjne Programowanie dynamiczne... Algorytmy heurystyczne Algorytmy probabilistyczne Algorytmy ewolucyjne i genetyczne Sieci neuronowe... Wstęp do Informatyki, część 2 36

37 Algorytmy zachłanne (greedy) P G W Zachłanne rozwiązanie problemu komiwojaŝera: Dla początku w W, rozwiązanie zachłanne jest takie samo, jak optymalne (1529 km) Dla początku w P, otrzymana ( zachłanna ) trasa ma 1642 km R (a najdłuŝsza trasa ma 1817 km) Wstęp do Informatyki, część 2 37

38 Dekompozycja na pod-zadania (divide and conquer) Zadanie A Zadanie A Top-down Pod-zadanie A1 Pod-zadanie A2 Pod-zadanie A1.1 Pod-zadanie A1.2 Bottom-up Wstęp do Informatyki, część 2 38

39 Rekurencja: sortowanie ze scalaniem (merge sort) Sortowanie: porządkowanie listy nieuporządkowanej, Najpierw: operacja scalania (merging) dwóch list uporządkowanych: G i M=merge(G, D) M=merge(G, D) D j M k Wstęp do Informatyki, część 2 39

40 Rekurencja: sortowanie ze scalaniem (merge sort) Function m = sort (lista); 1 Oblicz d = długość lista; Oblicz d = długość lista; nie d == 1 d == 1 tak Podziel lista na listad, listag; 2 3 D = sort (listad); G = sort (listag); 5 Zwróć m = lista; Zwróć m = lista; 4 Zwróć m = merge(d, G); Wstęp do Informatyki, część 2 40

41 Rekurencyjne wykonanie sortowania ze scalaniem 3, 1, 7, 5 1, 3, 5, 7... sort(3,1) sort(7,5) merge 3, 1 1, 3 7, 5 5, 7... sort(3) sort(1) merge... sort(5) sort(7) merge d=1 d=1 d=1 d=1 Wstęp do Informatyki, część 2 41

42 Rekurencyjne wykonanie sortowania ze scalaniem Wstęp do Informatyki, część 2 42

43 Zasada rekurencyjnego wykonania procedury (funkcji) Wstęp do Informatyki, część 2 43

44 Rozwiązywanie problemu komiwojaŝera metodą top-down śoliborz Grochów Centrum Ochota Gocławek Mokotów Wstęp do Informatyki, część 2 44

45 MoŜliwe heurystyczne rozwiązanie problemu komiwojaŝera G P W R B Znane rozwiązanie dla 4 miast, Dochodzi piąte (B) Podejście konserwatywne : jak najmniej zmian Wstęp do Informatyki, część 2 45

46 Przykładowe zadanie numeryczne g(x) Zadana złoŝona funkcja g(x), Trzeba obliczyć jej całkę (oznaczoną) w granicach [a, b]. g(x) a b x b H = g(x)dx a H(x) = g(x)dx Rozwiązanie klasyczne (analityczne): Wyznaczyć całkę nieoznaczoną Obliczyć H = H(b) H(a) Całkowanie przez części... przez podstawienie, Tablice całek nieoznaczonych Wstęp do Informatyki, część 2 itd 46

47 Przykładowe rozwiązanie zadania g(x) Zadana złoŝona funkcja g(x), Trzeba obliczyć jej całkę (oznaczoną) w granicach [a, b]. g(x) a b x b H = g(x)dx a Zdroworozsądkowe rozwiązanie numeryczne: Sumowanie prostokątów (lub trapezów) g(x i ) Wstęp do Informatyki, część 2 47 x i

48 Rozwiązanie probabilistyczne przykładowego zadania g(x) g(x) Zadana złoŝona funkcja g(x), Trzeba obliczyć jej całkę (oznaczoną) w granicach [a, b]. b H = g(x)dx a a b x L = Licznik punktów pod Rozwiązanie probabilistyczne (Monte Carlo): for i =1 : N; //(np. N = ); Wygeneruj losowo punkt (x i, y i ) z zaznaczonego prostokąta, if g(x i )>y i ; L:=L+1 ;endif; endfor; Równomiernie! H = L/N; (x i, y i ) Wstęp do Informatyki, część 2 48 y i x i g(x i )

49 Prosty system obsługi Klienci System obsługi Klienci Strumień zgłoszeń Strumień obsługi Kolejka Mechanizm obsługi Serwer Wiele moŝliwości zdefiniowania: Rozkładu czasu między zgłoszeniami Rozkładu czasu obsługi, Liczby elementarnych mechanizmów obsługi w serwerze, Liczby kolejek (plus ew. zasady priorytetu), Kolejek nieograniczonych/ograniczonych Strategii wyboru następnego z kolejki (FIFO, LIFO, RAND, priorytetowa, Teoria masowej obsługi (Queueing Theory) Wstęp do Informatyki, część 2 49

50 Sieć systemów obsługi Internista 40% Gabinet zabiegowy 20% 50% T1 80% T2 2xT3 50% 20% Kardiolog 40% 50% Apteka T4 100% T6 25% 75% 50% T5 5% 95% Wstęp do Informatyki, część 2 50

51 Rozkład wykładniczy 1 λ F(x)= 1-e -λt f(x) = λe -λt Np. często przyjmuje się, Ŝe czas pomiędzy chwilami przybycia (do systemu obsługi) kolejnych klientów jest zmienną o rozkładzie wykładniczym z intensywnością λ, Dla rozkładu wykładniczego wartość średnia = 1/ λ. Wstęp do Informatyki, część 2 51

52 Wstęp do Informatyki, część 2 52 Generowanie liczb (pseudo)losowych Początkowa dowolna liczba czterocyfrowa np (seed) = = = = Ciąg liczb pseudolosowych

53 Generowanie liczb (pseudo)losowych Zazwyczaj jest funkcja rand lub rand(seed), zwracająca po kaŝdym wywołaniu nową, kolejną liczbę losową z przedziału [0.1]; Np.... x = rand; y = rand;... Dałoby (x, y) = (0.6643, 0,1294), Liczby rand mają rozkład jednostajny w przedziale [0, 1], Ale powtórzenie obliczenia z tym samym seed daje dokładnie ten sam ciąg liczb pseudolosowych f(x) 0 1 Wstęp do Informatyki, część 2 53

54 Generowanie ciągu realizacji zmiennej o znanym rozkładzie rand 1 x F(t)= 1-e -0.4 t 0 t = [ln(1-x)]/(-0.4) t [godz] Wygenerować liczbę losową (x=rand) z przedziału [0, 1], Przeliczyć na wartość t wykorzystując funkcję odwrotną dystrybuanty. Wstęp do Informatyki, część 2 54

55 Zasada algorytmu ewolucyjnego (przykład) y 4 y t 1 t 2 t 3 t 4... t 10 Zadanie: Z pomiarów otrzymano zbiór np. 10 punktów (t i, y i ) sugerujących zaleŝność między zmiennymi t i y. Chcemy wyrazić tę zaleŝność w postaci funkcji y = f(t), Postulujemy, by ta funkcja była np. sumą trzech sinusoid i t stałej, Wstęp do Informatyki, część 2 55

56 Sinusoidy Amplituda y(t) = a*sin(w*t + p) Czas [s], zmienna niezaleŝna Pulsacja w = 2π*f [rd]; Częstotliwość f [1/s], [Hz]; Okres T=1/f [s]; Przesunięcie fazy p [rd] f v (t) = a 1 sin(w 1 t+ p 1 ) + a 2 sin(w 2 t+ p 2 ) + a 3 sin(w 3 t+ p 3 ) + c Chodzi więc o znalezienie takich numerycznych wartości dziesięciu współczynników: a 1, w 1, p 1, a 2, w 2, p 2..., c by przebieg funkcji y=f(t) jak najlepiej pasował do punktów pomiarowych Wstęp do Informatyki, część 2 56

57 Funkcja dostosowania v a w p a w p a w p c 2.4 Jakieś przypadkowe wartości y f v (t) = 1.2sin(3.7t+ 0.22) + 4.3sin(0.03t+ 4.5) sin(1.1t+ 3.3) Miara dostosowania dla wektora v: y 4 f v (x) φ(v)= (y i f v (t i ) ) 2 i t t 1 t 2 t 3 t 4... t 10 Wstęp do Informatyki, część 2 57

58 Zasada działania algorytmu ewolucyjnego Begin Utwórz populację początkową Utworzymy populację: całą grupę osobników, Populacja ta będzie podlegała cyklicznemu procesowi ewolucji, Jeden obieg pętli = jedno pokolenie Koniec? tak nie Edycja wyników Utwórz nową populację End Wstęp do Informatyki, część 2 58

59 Populacja początkowa Begin Utwórz populację początkową 1 Populacja P Np. 200 osobników, KaŜdy ma 10 genów : a 1, w 1, p 1,..., c,... o początkowo losowych wartościach (z dowolnie ustalonego przedziału) Wstęp do Informatyki, część 2 59

60 Wyliczanie funkcji dostosowania Begin Utwórz populację początkową Populacja P 0 Oblicz φ(v) φ 1 φ φ 3... Dla kaŝdego indywiduum v oblicza się jego wartość funkcji dostosowania φ(v) φ 200 Wstęp do Informatyki, część 2 60

61 Porządkowanie według wartości funkcji dostosowania Begin Utwórz populację początkową Oblicz φ(v) Sortuj wg φ(v) Najlepiej dostosowane Populacja P 0... Najmniejsze φ Porządkowanie np. rosnąco wg wartości funkcji dostosowania Najgorzej dostosowane Nowe uporządkowanie Największe φ Wstęp do Informatyki, część 2 61

62 Wyliczanie danych o populacji Begin Utwórz populację początkową Oblicz φ(v) Sortuj wg φ(v) Zbierz dane o populacji Populacja P 0... Według uznania, np. Najlepszy osobnik w populacji, Średni poziom dostosowania w populacji, Rozrzut dostosowania, Poprawa średniego dostosowania w stosunku do poprzedniego pokolenia, itd. Wstęp do Informatyki, część

63 Badanie warunku zakończenia Begin Utwórz populację początkową Oblicz φ(v) Sortuj wg φ(v) Zbierz dane o populacji tak Koniec? nie Wiele moŝliwych warunków zakończenia, np. Zadana maksymalna liczba pokoleń, Ograniczenie czasowe, Osiągnięcie zadowalającego najlepszego dostosowania, itd. Edycja wiadomo. Edycja wyników End Wstęp do Informatyki, część 2 63

64 Likwidacja gorzej dostosowanych Begin Utwórz populację początkową Populacja P 0 (uporządkowana wg φ) 1.. Oblicz φ(v) Sortuj wg φ(v) Zbierz dane o populacji 2 3 Próg przeŝycia (np. w połowie).... Koniec? tak nie Uśmierć gorszą część Nie przeŝyły, niestety Wstęp do Informatyki, część 2 64

65 RozmnaŜanie lepiej dostosowanych Begin Utwórz populację początkową 1 Uratowana część populacji P 0.. Oblicz φ(v) 2.. Sortuj wg φ(v) Zbierz dane o populacji tak Koniec? nie Uśmierć gorszą część Utwórz nową populację... zabiera się do produkowania potomstwa Dwa mechanizmy; KrzyŜowanie, Mutacja. Wstęp do Informatyki, część 2 65

66 KrzyŜowanie Losowo wybrana para rodziców... losowo wybraną połowę genów... przekazuje na krzyŝ dzieciom Dzieci dołączają do rodziców w nowej populacji. Wstęp do Informatyki, część 2 66

67 Mutacja Nowa populacja W nowej populacji...u stosunkowo niewielkiej liczby (np. 5%) losowo wybranych osobników... losowo wybrany gen... zostaje losowo zmieniony Wstęp do Informatyki, część 2 67

68 Zasada działania algorytmu ewolucyjnego Begin Utwórz populację początkową Oblicz φ(v) Sortuj wg φ(v) Zbierz dane o populacji tak Koniec? nie Uśmierć gorszą część Edycja wyników Populacja istotnie ewoluuje w kierunku coraz lepszego dostosowania, Jeden obieg pętli = jedno pokolenie, Mnóstwo moŝliwych modyfikacji na kaŝdym etapie algorytmu, Bardzo intrygujące implikacje światopoglądowe, Patrz np. portal Utwórz nową populację End Wstęp do Informatyki, część 2 68

69 Dwie sprawy wymagające wyjaśnienia: Czy obliczenie musi koniecznie przebiegać w jakichś krokach? JeŜeli juŝ istotnie przebiega krokowo, to jakie elementarne kroki są dopuszczalne? Analogowa i cyfrowa reprezentacja informacji, Obliczenia analogowe i cyfrowe. Model obliczeń sekwencyjnych, Maszyna Turinga, Hipoteza Churcha-Turinga, Wstęp do Informatyki, część 2 69

70 Dwie sprawy wymagające wyjaśnienia: Czy obliczenie musi koniecznie przebiegać w jakichś krokach? JeŜeli juŝ istotnie przebiega krokowo, to jakie elementarne kroki są dopuszczalne? Analogowa i cyfrowa reprezentacja informacji, Obliczenia analogowe i cyfrowe. Model obliczeń sekwencyjnych, Maszyna Turinga, Hipoteza Churcha-Turinga, Wstęp do Informatyki, część 2 70

Zadania obliczeniowe, algorytmy i złożoność obliczeniowa

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

Bardziej szczegółowo

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Więcej o sprawności algorytmów Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Załóżmy, że możemy wykonać dane zadanie przy użyciu dwóch algorytmów: jednego o złożoności czasowej

Bardziej szczegółowo

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

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie: Rekurencje Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie: T(n) = Θ(1) (dla n = 1) T(n) = 2 T(n/2) + Θ(n) (dla n

Bardziej szczegółowo

Algorytmy sortujące i wyszukujące

Algorytmy sortujące i wyszukujące Algorytmy sortujące i wyszukujące Zadaniem algorytmów sortujących jest ułożenie elementów danego zbioru w ściśle określonej kolejności. Najczęściej wykorzystywany jest porządek numeryczny lub leksykograficzny.

Bardziej szczegółowo

Podstawy Informatyki. Sprawność algorytmów

Podstawy Informatyki. Sprawność algorytmów Podstawy Informatyki Sprawność algorytmów Sprawność algorytmów Kryteria oceny oszczędności Miara złożoności rozmiaru pamięci (złożoność pamięciowa): Liczba zmiennych + liczba i rozmiar struktur danych

Bardziej szczegółowo

Metody Rozmyte i Algorytmy Ewolucyjne

Metody Rozmyte i Algorytmy Ewolucyjne mgr inż. Wydział Matematyczno-Przyrodniczy Szkoła Nauk Ścisłych Uniwersytet Kardynała Stefana Wyszyńskiego Podstawowe operatory genetyczne Plan wykładu Przypomnienie 1 Przypomnienie Metody generacji liczb

Bardziej szczegółowo

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania: Sortowanie Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania: podać strukturę danych dla elementów dynamicznego skończonego multi-zbioru S, względem którego są wykonywane następujące

Bardziej szczegółowo

Zaawansowane algorytmy i struktury danych

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)

Bardziej szczegółowo

Strategie ewolucyjne (ang. evolu4on strategies)

Strategie ewolucyjne (ang. evolu4on strategies) Strategie ewolucyjne (ang. evolu4on strategies) Strategia ewolucyjna (1+1) W Strategii Ewolucyjnej(1 + 1), populacja złożona z jednego osobnika generuje jednego potomka. Kolejne (jednoelementowe) populacje

Bardziej szczegółowo

Algorytmy i Struktury Danych, 2. ćwiczenia

Algorytmy i Struktury Danych, 2. ćwiczenia Algorytmy i Struktury Danych, 2. ćwiczenia 2017-10-13 Spis treści 1 Optymalne sortowanie 5 ciu elementów 1 2 Sortowanie metodą Shella 2 3 Przesunięcie cykliczne tablicy 3 4 Scalanie w miejscu dla ciągów

Bardziej szczegółowo

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

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;

Bardziej szczegółowo

Efektywna metoda sortowania sortowanie przez scalanie

Efektywna metoda sortowania sortowanie przez scalanie Efektywna metoda sortowania sortowanie przez scalanie Rekurencja Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Metoda dziel i zwycięŝaj Dzielimy

Bardziej szczegółowo

PROBLEMY NIEROZSTRZYGALNE

PROBLEMY NIEROZSTRZYGALNE PROBLEMY NIEROZSTRZYGALNE Zestaw 1: T Przykład - problem domina T Czy podanym zestawem kafelków można pokryć dowolny płaski obszar zachowując odpowiedniość kolorów na styku kafelków? (dysponujemy nieograniczoną

Bardziej szczegółowo

Informatyka 1. Złożoność obliczeniowa

Informatyka 1. Złożoność obliczeniowa Informatyka 1 Wykład XI Złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada 80 20, ocena efektywności

Bardziej szczegółowo

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 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.

Bardziej szczegółowo

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 03/0 Przeszukiwanie w głąb i wszerz I Przeszukiwanie metodą

Bardziej szczegółowo

Złożoność algorytmów. Wstęp do Informatyki

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ść

Bardziej szczegółowo

Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa

Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa M. Czoków, J. Piersa 2012-01-10 1 Łańcucha Markowa 2 Istnienie Szukanie stanu stacjonarnego 3 1 Łańcucha Markowa 2 Istnienie Szukanie stanu stacjonarnego

Bardziej szczegółowo

1. Znajdowanie miejsca zerowego funkcji metodą bisekcji.

1. Znajdowanie miejsca zerowego funkcji metodą bisekcji. 1. Znajdowanie miejsca zerowego funkcji metodą bisekcji. Matematyczna funkcja f ma być określona w programie w oddzielnej funkcji języka C (tak, aby moŝna było łatwo ją zmieniać). Przykładowa funkcja to:

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

Algorytmy i struktury danych Matematyka III sem.

Algorytmy i struktury danych Matematyka III sem. Algorytmy i struktury danych Matematyka III sem. 30 godz. wykł. / 15 godz. ćw. / 15 godz. projekt dr inŝ. Paweł Syty, 413GB, sylas@mif.pg.gda.pl, http://sylas.info Literatura T.H. Cormen i inni, Wprowadzenie

Bardziej szczegółowo

Katedra Informatyki Stosowanej. Algorytmy ewolucyjne. Inteligencja obliczeniowa

Katedra Informatyki Stosowanej. Algorytmy ewolucyjne. Inteligencja obliczeniowa Wydział Zarządzania AGH Katedra Informatyki Stosowanej Algorytmy ewolucyjne Treść wykładu Wprowadzenie Zasada działania Podział EA Cechy EA Algorytm genetyczny 2 EA - wprowadzenie Algorytmy ewolucyjne

Bardziej szczegółowo

Prawdopodobieństwo i statystyka

Prawdopodobieństwo i statystyka Wykład XIV: Metody Monte Carlo 19 stycznia 2016 Przybliżone obliczanie całki oznaczonej Rozważmy całkowalną funkcję f : [0, 1] R. Chcemy znaleźć przybliżoną wartość liczbową całki 1 f (x) dx. 0 Jeden ze

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

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

Bardziej szczegółowo

Podstawy Programowania. Złożoność obliczeniowa

Podstawy Programowania. Złożoność obliczeniowa Podstawy Programowania Wykład X Złożoność obliczeniowa Robert Muszyński Katedra Cybernetyki i Robotyki, PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada

Bardziej szczegółowo

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny ALGORYMY Algorytm to przepis; zestawienie kolejnych kroków prowadzących do wykonania określonego zadania; to uporządkowany sposób postępowania przy rozwiązywaniu zadania, problemu, z uwzględnieniem opisu

Bardziej szczegółowo

Kolorowanie wierzchołków grafu

Kolorowanie wierzchołków grafu Kolorowanie wierzchołków grafu Niech G będzie grafem prostym. Przez k-kolorowanie właściwe wierzchołków grafu G rozumiemy takie przyporządkowanie wierzchołkom grafu liczb naturalnych ze zbioru {1,...,

Bardziej szczegółowo

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,

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

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

Bardziej szczegółowo

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2014/15 Znajdowanie maksimum w zbiorze

Bardziej szczegółowo

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

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro

Bardziej szczegółowo

a) 7 b) 19 c) 21 d) 34

a) 7 b) 19 c) 21 d) 34 Zadanie 1. Pytania testowe dotyczące podstawowych własności grafów. Zadanie 2. Przy każdym z zadań może się pojawić polecenie krótkiej charakterystyki algorytmu. Zadanie 3. W zadanym grafie sprawdzenie

Bardziej szczegółowo

Podstawy symulacji komputerowej

Podstawy symulacji komputerowej Podstawy symulacji komputerowej Wykład 3 Generatory liczb losowych Wojciech Kordecki wojciech.kordecki@pwsz-legnica.eu Państwowa Wyższa Szkoła Zawodowa im. Witelona w Legnicy Wydział Nauk Technicznych

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro

Bardziej szczegółowo

Podstawy Programowania

Podstawy Programowania Podstawy Programowania Wykład X Złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada 80 20, ocena efektywności

Bardziej szczegółowo

Metody numeryczne w przykładach

Metody numeryczne w przykładach Metody numeryczne w przykładach Bartosz Ziemkiewicz Wydział Matematyki i Informatyki UMK, Toruń Regionalne Koło Matematyczne 8 kwietnia 2010 r. Bartosz Ziemkiewicz (WMiI UMK) Metody numeryczne w przykładach

Bardziej szczegółowo

Podstawy Programowania. Złożoność obliczeniowa

Podstawy Programowania. Złożoność obliczeniowa Podstawy Programowania Wykład X Złożoność obliczeniowa Robert Muszyński Katedra Cybernetyki i Robotyki, PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada

Bardziej szczegółowo

Sortowanie danych. Jolanta Bachan. Podstawy programowania

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

Bardziej szczegółowo

Technologie informacyjne Wykład VII-IX

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łóż

Bardziej szczegółowo

Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu,

Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu, wprowadzenie Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu, w przepisie tym podaje się opis czynności, które trzeba wykonać, oraz dane, dla których algorytm będzie określony.

Bardziej szczegółowo

Złożoność obliczeniowa zadania, zestaw 2

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

Bardziej szczegółowo

Algorytm Genetyczny. zastosowanie do procesów rozmieszczenia stacji raportujących w sieciach komórkowych

Algorytm Genetyczny. zastosowanie do procesów rozmieszczenia stacji raportujących w sieciach komórkowych Algorytm Genetyczny zastosowanie do procesów rozmieszczenia stacji raportujących w sieciach komórkowych Dlaczego Algorytmy Inspirowane Naturą? Rozwój nowych technologii: złożone problemy obliczeniowe w

Bardziej szczegółowo

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

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II Algorytmy Równoległe i Rozproszone Część V - Model PRAM II Łukasz Kuszner pokój 209, WETI http://www.sphere.pl/ kuszner/ kuszner@sphere.pl Oficjalna strona wykładu http://www.sphere.pl/ kuszner/arir/ 2005/06

Bardziej szczegółowo

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova M. Czoków, J. Piersa 2010-12-21 1 Definicja Własności Losowanie z rozkładu dyskretnego 2 3 Łańcuch Markova Definicja Własności Losowanie z rozkładu

Bardziej szczegółowo

Rozwiązywanie problemów metodą przeszukiwania

Rozwiązywanie problemów metodą przeszukiwania Rozwiązywanie problemów metodą przeszukiwania Dariusz Banasiak Katedra Informatyki Technicznej W4/K9 Politechnika Wrocławska Reprezentacja problemu w przestrzeni stanów Jedną z ważniejszych metod sztucznej

Bardziej szczegółowo

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

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for. Zadania do wykonania Rozwiązując poniższe zadania użyj pętlę for. 1. apisz program, który przesuwa w prawo o dwie pozycje zawartość tablicy 10-cio elementowej liczb całkowitych tzn. element t[i] dla i=2,..,9

Bardziej szczegółowo

Metody przeszukiwania

Metody przeszukiwania Metody przeszukiwania Co to jest przeszukiwanie Przeszukiwanie polega na odnajdywaniu rozwiązania w dyskretnej przestrzeni rozwiązao. Zwykle przeszukiwanie polega na znalezieniu określonego rozwiązania

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

Programowanie dynamiczne cz. 2

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

Bardziej szczegółowo

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

Teoria obliczeń i złożoność obliczeniowa Teoria obliczeń i złożoność obliczeniowa Kontakt: dr hab. inż. Adam Kasperski, prof. PWr. pokój 509 B4 adam.kasperski@pwr.wroc.pl materiały + informacje na stronie www. Zaliczenie: Egzamin Literatura Problemy

Bardziej szczegółowo

Złożoność problemów. 1 ruch na sekundę czas wykonania ok lat 1 mln ruchów na sekundę czas wykonania ok.

Złożoność problemów. 1 ruch na sekundę czas wykonania ok lat 1 mln ruchów na sekundę czas wykonania ok. Złożoność problemów Przykład - wieże Hanoi Problem jest zamknięty (dolne ograniczenie złożoności = złożoność algorytmu rekurencyjnego lub iteracyjnego) i ma złożoność O(2 N ). Mnisi tybetańscy podobno

Bardziej szczegółowo

funkcje rekurencyjne Wykład 12. Podstawy programowania (język C) Funkcje rekurencyjne (1) Funkcje rekurencyjne (2)

funkcje rekurencyjne Wykład 12. Podstawy programowania (język C) Funkcje rekurencyjne (1) Funkcje rekurencyjne (2) Podstawy programowania (język C) funkcje rekurencyjne Wykład 12. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Funkcje rekurencyjne (1) W języku C funkcja moŝe wywoływać samą siebie.

Bardziej szczegółowo

EGZAMIN MAGISTERSKI, czerwiec 2014 Matematyka w ekonomii i ubezpieczeniach

EGZAMIN MAGISTERSKI, czerwiec 2014 Matematyka w ekonomii i ubezpieczeniach Matematyka w ekonomii i ubezpieczeniach Sprawdź, czy wektor x 0 = (0,5,,0,0) jest rozwiązaniem dopuszczalnym zagadnienia programowania liniowego: Zminimalizować 3x 1 +x +x 3 +4x 4 +6x 5, przy ograniczeniach

Bardziej szczegółowo

Sortowanie. Tomasz Żak zak. styczeń Instytut Matematyki i Informatyki, Politechnika Wrocławska

Sortowanie. Tomasz Żak  zak. styczeń Instytut Matematyki i Informatyki, Politechnika Wrocławska Tomasz Żak www.im.pwr.wroc.pl/ zak Instytut Matematyki i Informatyki, Politechnika Wrocławska styczeń 2014 Przypuśćmy, że po sprawdzeniu 30 klasówek układamy je w kolejności alfabetycznej autorów. Jak

Bardziej szczegółowo

Metody numeryczne. Wykład nr 12. Dr Piotr Fronczak

Metody numeryczne. Wykład nr 12. Dr Piotr Fronczak Metody numeryczne Wykład nr 1 Dr Piotr Fronczak Generowanie liczb losowych Metody Monte Carlo są oparte na probabilistyce działają dzięki generowaniu liczb losowych. W komputerach te liczby generowane

Bardziej szczegółowo

Aproksymacja funkcji a regresja symboliczna

Aproksymacja funkcji a regresja symboliczna Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(x), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(x), zwaną funkcją aproksymującą

Bardziej szczegółowo

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

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych Proste algorytmy sortowania Witold Marańda maranda@dmcs.p.lodz.pl 1 Pojęcie sortowania Sortowaniem nazywa się proces ustawiania zbioru obiektów w określonym porządku Sortowanie

Bardziej szczegółowo

Wykład z Technologii Informacyjnych. Piotr Mika

Wykład z Technologii Informacyjnych. Piotr Mika Wykład z Technologii Informacyjnych Piotr Mika Uniwersalna forma graficznego zapisu algorytmów Schemat blokowy zbiór bloków, powiązanych ze sobą liniami zorientowanymi. Jest to rodzaj grafu, którego węzły

Bardziej szczegółowo

Algorytmy zrandomizowane

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

Bardziej szczegółowo

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów. Rekurencja Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów. Zgodnie ze znaczeniem informatycznym algorytm rekurencyjny to taki który korzysta z samego

Bardziej szczegółowo

Wybrane podstawowe rodzaje algorytmów

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

Bardziej szczegółowo

Rachunek prawdopodobieństwa projekt Ilustracja metody Monte Carlo obliczania całek oznaczonych

Rachunek prawdopodobieństwa projekt Ilustracja metody Monte Carlo obliczania całek oznaczonych Rachunek prawdopodobieństwa projekt Ilustracja metody Monte Carlo obliczania całek oznaczonych Autorzy: Marta Rotkiel, Anna Konik, Bartłomiej Parowicz, Robert Rudak, Piotr Otręba Spis treści: Wstęp Cel

Bardziej szczegółowo

Algorytmy w teorii liczb

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,

Bardziej szczegółowo

Optymalizacja. Wybrane algorytmy

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

Bardziej szczegółowo

Wyszukiwanie. Wyszukiwanie binarne

Wyszukiwanie. Wyszukiwanie binarne Wyszukiwanie Wejście: posortowana, n-elementowa tablica liczbowa T oraz liczba p. Wyjście: liczba naturalna, określająca pozycję elementu p w tablicy T, bądź 1, jeŝeli element w tablicy nie występuje.

Bardziej szczegółowo

Sortowanie topologiczne skierowanych grafów acyklicznych

Sortowanie topologiczne skierowanych grafów acyklicznych Sortowanie topologiczne skierowanych grafów acyklicznych Metody boolowskie w informatyce Robert Sulkowski http://robert.brainusers.net 23 stycznia 2010 1 Definicja 1 (Cykl skierowany). Niech C = (V, A)

Bardziej szczegółowo

Laboratorium nr 1. i 2.

Laboratorium nr 1. i 2. Laboratorium nr 1. i 2. Celem laboratorium jest zapoznanie się ze zintegrowanym środowiskiem programistycznym, na przykładzie podstawowych aplikacji z obsługą standardowego wejścia wyjścia, podstawowych

Bardziej szczegółowo

Generowanie i optymalizacja harmonogramu za pomoca

Generowanie i optymalizacja harmonogramu za pomoca Generowanie i optymalizacja harmonogramu za pomoca na przykładzie generatora planu zajęć Matematyka Stosowana i Informatyka Stosowana Wydział Fizyki Technicznej i Matematyki Stosowanej Politechnika Gdańska

Bardziej szczegółowo

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

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy: Temat: Powtórzenie wiadomości z PODSTAW INFORMATYKI I: Pojęcia: złożoność czasowa algorytmu, rząd funkcji kosztu. Algorytmy. Metody programistyczne. Struktury danych. Literatura. A. V. Aho, J.E. Hopcroft,

Bardziej szczegółowo

Złożoność obliczeniowa klasycznych problemów grafowych

Złożoność obliczeniowa klasycznych problemów grafowych Złożoność obliczeniowa klasycznych problemów grafowych Oznaczenia: G graf, V liczba wierzchołków, E liczba krawędzi 1. Spójność grafu Graf jest spójny jeżeli istnieje ścieżka łącząca każdą parę jego wierzchołków.

Bardziej szczegółowo

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) 16.01.2003 Algorytmy i Struktury Danych PIŁA ALGORYTMY ZACHŁANNE czas [ms] Porównanie Algorytmów Rozwiązyjących problem TSP 100 000 000 000,000 10 000 000

Bardziej szczegółowo

Analiza algorytmów zadania podstawowe

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ą

Bardziej szczegółowo

Sortowanie przez scalanie

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

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010 Algorytmy równoległe Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka Znajdowanie maksimum w zbiorze n liczb węzły - maksimum liczb głębokość = 3 praca = 4++ = 7 (operacji) n - liczność

Bardziej szczegółowo

Modelowanie komputerowe

Modelowanie komputerowe Modelowanie komputerowe wykład 1- Generatory liczb losowych i ich wykorzystanie dr Marcin Ziółkowski Instytut Matematyki i Informatyki Akademia im. Jana Długosza w Częstochowie 5,12 października 2016 r.

Bardziej szczegółowo

Problem straŝaka w drzewach. Agnieszka Skorupka Matematyka Stosowana FTiMS

Problem straŝaka w drzewach. Agnieszka Skorupka Matematyka Stosowana FTiMS Problem straŝaka w drzewach Agnieszka Skorupka Matematyka Stosowana FTiMS Problem StraŜaka: Co to jest? Problem StraŜaka: Co to jest? Problem StraŜaka: Co to jest? Problem StraŜaka: Co to jest? Problem

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI 16/01/2017 WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Repetytorium złożoność obliczeniowa 2 Złożoność obliczeniowa Notacja wielkie 0 Notacja Ω i Θ Rozwiązywanie

Bardziej szczegółowo

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

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony. Iteracje Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony. Iteracja inaczej zwana jest pętlą i oznacza wielokrotne wykonywanie instrukcji. Iteracje

Bardziej szczegółowo

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Przykład 1. Napisz program, który dla podanej liczby n wypisze jej rozkład na czynniki pierwsze. Oblicz asymptotyczną złożoność

Bardziej szczegółowo

Algorytm. Krótka historia algorytmów

Algorytm. Krótka historia algorytmów Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

Podstawy Programowania

Podstawy Programowania Podstawy Programowania Wykład X Złożoność obliczeniowa Robert Muszyński Katedra Cybernetyki i Robotyki, PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada

Bardziej szczegółowo

Temat: Algorytmy zachłanne

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,

Bardziej szczegółowo

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle Paweł Szołtysek 12 czerwca 2008 Streszczenie Planowanie produkcji jest jednym z problemów optymalizacji dyskretnej,

Bardziej szczegółowo

Obliczenia iteracyjne

Obliczenia iteracyjne Lekcja Strona z Obliczenia iteracyjne Zmienne iteracyjne (wyliczeniowe) Obliczenia iteracyjne wymagają zdefiniowania specjalnej zmiennej nazywanej iteracyjną lub wyliczeniową. Zmienną iteracyjną od zwykłej

Bardziej szczegółowo

Alan M. TURING. Matematyk u progu współczesnej informatyki

Alan M. TURING. Matematyk u progu współczesnej informatyki Alan M. TURING n=0 1 n! Matematyk u progu współczesnej informatyki Wykład 5. Alan Turing u progu współczesnej informatyki O co pytał Alan TURING? Czym jest algorytm? Czy wszystkie problemy da się rozwiązać

Bardziej szczegółowo

Algorytmy stochastyczne laboratorium 03

Algorytmy stochastyczne laboratorium 03 Algorytmy stochastyczne laboratorium 03 Jarosław Piersa 10 marca 2014 1 Projekty 1.1 Problem plecakowy (1p) Oznaczenia: dany zbiór przedmiotów x 1,.., x N, każdy przedmiot ma określoną wagę w(x i ) i wartość

Bardziej szczegółowo

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji. Temat: Technologia informacyjna a informatyka 1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji. Technologia informacyjna (ang.) Information Technology, IT jedna

Bardziej szczegółowo

Układy stochastyczne

Układy stochastyczne Instytut Informatyki Uniwersytetu Śląskiego 21 stycznia 2009 Definicja Definicja Proces stochastyczny to funkcja losowa, czyli funkcja matematyczna, której wartości leżą w przestrzeni zdarzeń losowych.

Bardziej szczegółowo

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

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ę

Bardziej szczegółowo

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to wprowadzili J. Hartmanis i R. Stearns. Najczęściej przez zasób rozumie się czas oraz pamięć dlatego

Bardziej szczegółowo

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. 1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. Algorytmy przeszukiwania w głąb i wszerz są najczęściej stosowanymi algorytmami przeszukiwania. Wykorzystuje się je do zbadania istnienia połączenie

Bardziej szczegółowo

Struktury danych (I): kolejka, stos itp.

Struktury danych (I): kolejka, stos itp. Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Struktury danych (I): kolejka, stos itp. Struktury danych (I): kolejka, stos itp. Struktura danych stanowi sposób uporządkowania

Bardziej szczegółowo

Instrukcja warunkowa i złoŝona.

Instrukcja warunkowa i złoŝona. Instrukcja warunkowa i złoŝona. Budowa pętli warunkowej. JeŜeli mielibyśmy przetłumaczyć instrukcję warunkową to brzmiałoby to mniej więcej tak: jeŝeli warunek jest spełniony, to wykonaj jakąś operację

Bardziej szczegółowo

Algorytmy i Struktury Danych.

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

Bardziej szczegółowo

Sortowanie Shella Shell Sort

Sortowanie Shella Shell Sort Sortowanie Shella Shell Sort W latach 50-tych ubiegłego wieku informatyk Donald Shell zauważył, iż algorytm sortowania przez wstawianie pracuje bardzo efektywnie w przypadku gdy zbiór jest w dużym stopniu

Bardziej szczegółowo