Złożoność obliczeniowa. Trudne zadania

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

Download "Złożoność obliczeniowa. Trudne zadania"

Transkrypt

1 R ELEMENTARY. 2EXPTIME EXPSPACE EXPTIME Złożoność obliczeniowa. Trudne zadania wer. 12 z drobnymi modyfikacjami! PSPACE co-nptime PTIME LOG Space LOG Time NPCNPTIME Wojciech Myszka :34:

2 Część I Złożoność obliczeniowa

3 Raz jeszcze min/max z liczb... Danych jest n elementów X[1], X[2],..., X[n]; szukamy takich m i j, że m = X[j] = max 1 i n X[i] i j jest największym indeksem spełniającym ten warunek. Algorytm wyglądać będzie tak: 1. Inicjowanie Niech j n, k n 1, m X[n] 2. Czy wszystkie? Jeśli k = 0 to koniec 3. Porównanie Jeśli X[k] m to przejdź do 5 4. Zmiana m j k, m X[k] 5. Zmniejsz k k k 1; przejdź do 2 Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec

4 Raz jeszcze min/max z liczb... Danych jest n elementów X[1], X[2],..., X[n]; szukamy takich m i j, że m = X[j] = max 1 i n X[i] i j jest największym indeksem spełniającym ten warunek. Algorytm wyglądać będzie tak: 1. Inicjowanie Niech j n, k n 1, m X[n] 2. Czy wszystkie? Jeśli k = 0 to koniec 3. Porównanie Jeśli X[k] m to przejdź do 5 4. Zmiana m j k, m X[k] 5. Zmniejsz k k k 1; przejdź do 2 Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec

5 Raz jeszcze min/max z liczb... Danych jest n elementów X[1], X[2],..., X[n]; szukamy takich m i j, że m = X[j] = max 1 i n X[i] i j jest największym indeksem spełniającym ten warunek. Algorytm wyglądać będzie tak: 1. Inicjowanie Niech j n, k n 1, m X[n] 2. Czy wszystkie? Jeśli k = 0 to koniec 3. Porównanie Jeśli X[k] m to przejdź do 5 4. Zmiana m j k, m X[k] 5. Zmniejsz k k k 1; przejdź do 2 Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec

6 Raz jeszcze min/max z liczb... Danych jest n elementów X[1], X[2],..., X[n]; szukamy takich m i j, że m = X[j] = max 1 i n X[i] i j jest największym indeksem spełniającym ten warunek. Algorytm wyglądać będzie tak: 1. Inicjowanie Niech j n, k n 1, m X[n] 2. Czy wszystkie? Jeśli k = 0 to koniec 3. Porównanie Jeśli X[k] m to przejdź do 5 4. Zmiana m j k, m X[k] 5. Zmniejsz k k k 1; przejdź do 2 Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec

7 Raz jeszcze min/max z liczb... Danych jest n elementów X[1], X[2],..., X[n]; szukamy takich m i j, że m = X[j] = max 1 i n X[i] i j jest największym indeksem spełniającym ten warunek. Algorytm wyglądać będzie tak: 1. Inicjowanie Niech j n, k n 1, m X[n] 2. Czy wszystkie? Jeśli k = 0 to koniec 3. Porównanie Jeśli X[k] m to przejdź do 5 4. Zmiana m j k, m X[k] 5. Zmniejsz k k k 1; przejdź do 2 Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec

8 Analiza algorytmu Zajętość pamięci. W tym przypadku nic ciekawego zapotrzebowanie na pamięć jest proporcjonalne do liczby danych.

9 Analiza algorytmu Zajętość pamięci. W tym przypadku nic ciekawego zapotrzebowanie na pamięć jest proporcjonalne do liczby danych. Dokładność. Praktycznie nie są wykonywane żadne operacje matematyczne zatem nie dotyczy.

10 Analiza algorytmu Zajętość pamięci. W tym przypadku nic ciekawego zapotrzebowanie na pamięć jest proporcjonalne do liczby danych. Dokładność. Praktycznie nie są wykonywane żadne operacje matematyczne zatem nie dotyczy. Czas obliczeń. To może być ciekawe.

11 Czas obliczeń Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec Krok 1 wykonany będzie 1 raz.

12 Czas obliczeń Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec Krok 1 wykonany będzie 1 raz. Krok drugi n razy.

13 Czas obliczeń Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec Krok 1 wykonany będzie 1 raz. Krok drugi n razy. Krok 3 n 1 razy.

14 Czas obliczeń Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec Krok 1 wykonany będzie 1 raz. Krok drugi n razy. Krok 3 n 1 razy. Krok 4 A razy (jego wykonanie zależy od tego jakie są dane).

15 Czas obliczeń Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec Krok 1 wykonany będzie 1 raz. Krok drugi n razy. Krok 3 n 1 razy. Krok 4 A razy (jego wykonanie zależy od tego jakie są dane). Krok 5 n 1 razy.

16 Czas obliczeń Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec Krok 1 wykonany będzie 1 raz. Krok drugi n razy. Krok 3 n 1 razy. Krok 4 A razy (jego wykonanie zależy od tego jakie są dane). Krok 5 n 1 razy. Zatem zajmiemy się liczbą wykonań kroku 4.

17 Krok 4 Średnia liczba wykonań Gdy dane wejściowe uporządkowane są w kolejności malejącej A = n 1

18 Krok 4 Średnia liczba wykonań Gdy dane wejściowe uporządkowane są w kolejności malejącej A = n 1 Gdy dane wejściowe uporządkowane są w kolejności rosnącej A = 0

19 Krok 4 Średnia liczba wykonań Gdy dane wejściowe uporządkowane są w kolejności malejącej A = n 1 Gdy dane wejściowe uporządkowane są w kolejności rosnącej A = 0 A jaka będzie średnia?

20 Przykład Niech n = 3; załóżmy również, że wszystkie liczby są różne. Wypiszmy wszystkie możliwe układy liczb X[1], X[2], X[3]: Układ Wartość A

21 Przykład Niech n = 3; załóżmy również, że wszystkie liczby są różne. Wypiszmy wszystkie możliwe układy liczb X[1], X[2], X[3]: Układ Wartość A X[1] < X[2] < X[3] 0

22 Przykład Niech n = 3; załóżmy również, że wszystkie liczby są różne. Wypiszmy wszystkie możliwe układy liczb X[1], X[2], X[3]: Układ Wartość A X[1] < X[2] < X[3] 0 X[1] < X[3] < X[2] 1

23 Przykład Niech n = 3; załóżmy również, że wszystkie liczby są różne. Wypiszmy wszystkie możliwe układy liczb X[1], X[2], X[3]: Układ Wartość A X[1] < X[2] < X[3] 0 X[1] < X[3] < X[2] 1 X[2] < X[1] < X[3] 0

24 Przykład Niech n = 3; załóżmy również, że wszystkie liczby są różne. Wypiszmy wszystkie możliwe układy liczb X[1], X[2], X[3]: Układ Wartość A X[1] < X[2] < X[3] 0 X[1] < X[3] < X[2] 1 X[2] < X[1] < X[3] 0 X[2] < X[3] < X[1] 1

25 Przykład Niech n = 3; załóżmy również, że wszystkie liczby są różne. Wypiszmy wszystkie możliwe układy liczb X[1], X[2], X[3]: Układ Wartość A X[1] < X[2] < X[3] 0 X[1] < X[3] < X[2] 1 X[2] < X[1] < X[3] 0 X[2] < X[3] < X[1] 1 X[3] < X[1] < X[2] 1

26 Przykład Niech n = 3; załóżmy również, że wszystkie liczby są różne. Wypiszmy wszystkie możliwe układy liczb X[1], X[2], X[3]: Układ Wartość A X[1] < X[2] < X[3] 0 X[1] < X[3] < X[2] 1 X[2] < X[1] < X[3] 0 X[2] < X[3] < X[1] 1 X[3] < X[1] < X[2] 1 X[3] < X[2] < X[1] 2

27 Przykład Niech n = 3; załóżmy również, że wszystkie liczby są różne. Wypiszmy wszystkie możliwe układy liczb X[1], X[2], X[3]: Układ Wartość A X[1] < X[2] < X[3] 0 X[1] < X[3] < X[2] 1 X[2] < X[1] < X[3] 0 X[2] < X[3] < X[1] 1 X[3] < X[1] < X[2] 1 X[3] < X[2] < X[1] 2 Jeżeli teraz założymy, że każdy z układów liczb X[1], X[2], X[3] jest jednakowo prawdopodobne, to średnia wartość A wyniesie (dla n = 3) ( )/6 = 5/6.

28 Analiza... Bez starty ogólności, możemy przyjąć, że liczby X[1], X[2],..., X[n] to liczby 1, 2,..., n w pewnej kolejności. Dodatkowo założymy, że każda z n! permutacji jest jednakowo prawdopodobna. Tu wycinamy bardzo wiele rachunków... Z analizy rachunków wynika, że w przypadku gdy n = 12 średnia dla zmiennej losowej A wynosi około 2,1, a wariancja około 1,54.

29 Analiza algorytmu min/max... Algorytm jest bardzo prosty. Jedyne operacje wykonywane to porównanie (krok 2) i zamiana (krok 4). W zależności od liczby danych (n) liczba porównań jest stała n 1, a liczba zamian jest jakimś ułamkiem n. W takim przypadku piszemy że liczba zamian jest proporcjonalna do n, co zapisujemy czasami jako n. W teorii algorytmów częściej mówi się że złożoność czasowa algorytmu jest O(n) (co można czytać duże-o od n ). Nie jest ważny współczynnik proporcjonalności, ważne jest jedynie to, że w raz ze wzrostem n rośnie tak samo szybko czas obliczeń.

30 O(n) Mamy dwa (hipotetyczne) problemy: 1. Pierwszy wykonuje się w czasie proporcjonalnym do n 2. Drugi w czasie proporcjonalnym do 1 2 n Drugie zadanie wykonuje się dwa razy szybciej! Oba zadania wykonują się w czasie O(n)! Jest to zatem dosyć grube spojrzenie na czas obliczeń.

31 Liniowe wyszukiwanie Mamy książkę telefoniczną czyli listę <nazwisko, numer_telefonu>. Zadanie polega na znalezieniu numeru telefonicznego osoby o zadanym nazwisku. Najprostszy algorytm jest taki 1. i 1 2. Czy poszukiwane_nazwisko = nazwisko(i) 3. Jeżeli tak Koniec 4. W przeciwnym razie i i Jeżeli i > n Koniec: nie znaleziono! 6. W przeciwnym razie przejdź do kroku 2 Im dłuższa lista nazwisk tym dłużej pracuje algorytm.

32 Liniowe wyszukiwanie c. d. W najlepszym razie pętla wykonana będzie tylko jeden raz. W najgorszym razie n razy. Średnio? To zależy jaki jest rozkład prawdopodobieństwa zapytań...

33 Liniowe wyszukiwanie lepszy algorytm Jeżeli uwzględnić fakt, że dane w książce telefonicznej są posortowane algorytm można istotnie ulepszyć. Pierwsze porównanie należy wykonać nie z pierwszym (czy ostatnim) nazwiskiem, tylko ze środkowym (znajdującym się dokładnie na środku listy). Jeżeli szukane nazwisko jest większe nie należy zajmować się pierwszą połową listy... Takie podejście w jednym kroku redukuje rozmiar zadania o połowę! Każdy kolejny krok jest podobny zatem wielkość zadania zmniejsza się za każdym razem. W przypadku książki telefonicznej o N nazwiskach potrzeba (w najgorszym razie) log 2 (N) kroków. Złożoność algorytmu wynosi O(log(N))

34 Liniowe wyszukiwanie schemat blokowy Start Weź całą listę wejściową L nie ma Porównaj Y ze środkowym elementem listy jest Weź pierwszą albo drugą połowę rozważanej listy, zależnie od wyniku porównania Wypisz jest! nie czy lista jest pusta? tak wypisz nie ma! Stop Stop

35 Jak bardzo O(log(N)) jest lepsze od O(N)? N log 2 (N) milion 20 miliard 30 miliard miliardów 60

36 Pętle zagnieżdżone 1. wykonaj co następuje N 1 razy wykonaj co następuje N 1 razy... Pętla wewnętrzna wykonywana jest N 1 razy dla każdego z N 1 wykonań pętli zewnętrznej. Koszt czasowy dwu pętli jest zatem (N 1)(N 1) czyli N 2 2N + 1. Dla dużych N składniki 1 2N są nieistotne. Zatem koszt czasowy takiej pętli jest O(N 2 ).

37 Koszt czasowy rekurencji Rekurencyjny algorytm wyszukiwania minimum i maksimum w L (znajdź-min-i-max-w L): 1. jeśli L składa się z jednego elementu to nadaj MIN i MAX właśnie jego wartość; jeśli L składa się z dwu elementów, to nadaj MIN wartość mniejszego z nich, a MAX większego; 2. w przeciwnym razie wykonaj co następuje: 2.1 podziel L na połowy L 1 i L 2 ; 2.2 wywołaj znajdź-min-i-max-w L 1, umieszczając otrzymane wartości w MIN 1 i MAX 1 ; 2.3 wywołaj znajdź-min-i-max-w L 2, umieszczając otrzymane wartości w MIN 2 i MAX 2 ; 2.4 nadaj MIN mniejszą wartość z MIN 1 i MIN 2 ; 2.5 nadaj MAX większą wartość z MAX 1 i MAX 2 ; 3. wróć z wartościami MIN i MAX

38 Minimum i maksimum wersja klasyczna (naiwna) 1. MIN L(1); MAX L(1) 2. i 1 3. jeżeli L(i) > MAX to MAX L(i) 4. jeżeli L(i) < MIN to MIN L(i) 5. jeżeli i < N to i i + 1, przejdź do 3 6. KONIEC W tym algorytmie główna operacja to porównania; algorytm potrzebuje 2N porównań.

39 Analiza algorytmu rekurencyjnego I 1. jeśli N = 1 lub N = 2, wykonuje się dokładnie jedno porównanie punkt 1 procedury. 2. jeśli N > 2, to porównania, które się wykonuje, stanowią dokładnie dwa zbiory porównań dla list o długości N/2 i dwa dodatkowe porównania (wiersze 2.4 i 2.5) Zatem (C(N) oznacza liczbę porównań dla listy N elementowej) (czemu jest to +2?) Można rozwiązać to równanie. C(1) = C(2) = 1 (1) C(N) = 2C(N/2) + 2 (2) C(N) = 3N/2 2 = 3 N 2< 2N (3) 2

40 Wieże Hanoi Złożoność czasowa podawanego algorytmu wynosi 2 N 1 (gdzie N to liczba krążków). Zatem algorytm jest O(2 N )

41 Wieże Hanoi Alternatywny algorytm (Zakładamy, że nasze trzy kołki są ustawione w kółko i że na początku wszystkie N krążków spoczywa na jednym z nich.) 1. powtarzaj wykonywanie tego, co następuje, dopóty, dopóki, w chwili poprzedzającej podjęcie kroku 1.1 wszystkie krążki nie będą poprawnie ułożone na jakimś innym kołku: 1.1 przenieś najmniejszy krążek z kołka, na którym właśnie spoczywa, na kołek następny w kierunku zgodnym z ruchem wskazówek zegara; 1.2 wykonaj jedyne możliwe przeniesienie nie dotyczące najmniejszego krążka. A jaka jest złożoność tego algorytmu?

42 Małpia układanka Prosta gra, w której do dyspozycji gracza jest kilka (9?) kwadratowych kart, na bokach których wydrukowane są górna i dolne połowy kolorowych małp. Zadanie polega na ułożeniu kart w postaci kwadratu (3 3), aby na zetknięciach się krawędzi połowy małp pasowały do siebie, a kolory były identyczne...

43 Małpia układanka cd Najbardziej elementarny komputerowy algorytm rozwiązywania tej układanki sprowadzi się najprawdopodobniej, do przeglądu wszystkich możliwych układów kart. Wybieramy jedną z kart, układamy ją na pierwszym miejscu (odpowiednio wszystkie miejsca ponumerowaliśmy); na drugim miejscu mamy N 1 kart do wyboru, na kolejnym N 2, itd... Następnie sprawdzamy czy spełnione są warunki. Zatem liczba możliwych do rozpatrzenia kombinacji wynosi: Zatem złożoność tego algorytmu jest rzędu O(N!) N (N 1) (N 2) 2 1 = N! (4)

44 Rozsądny i nierozsądny czas działania Funkcja / N N N log (N) N milion (7 cyfr) N milion (7 cyfr) 27 milionów (8 1 miliard (10 cyfr) cyfr) 2 N 1024 liczba 16-cyfrowa liczba 31-cyfrowa liczba 91-cyfrowa liczba 302- cyfrowa N! 3,6 miliona (7 liczba 65-cyfrowa liczba 161-cyfrowa liczba 623- niewyobrażalnie cyfr) N N 10 miliardów (11 cyfr) liczba 85-cyfrowa liczba 201- cyfrowa cyfrowa liczba 744- cyfrowa duża niewyobrażalnie duża

45 Wykresy różnych funkcji

46 Tabelka... N N 2 1/ /2500 1/400 ssekundy 1/100 sekundy 9/100 sekundy sekundy sekundy N 5 1/10 sekundy 3,2 5,2 minuty 2,8 godziny 28,1 dnia ssekundy 2 N 1/1000 sekundy 1 sekunda 35,7 lat 400 bilionów stuleci 75-cyfrowa liczba stuleci N N 2,8 godziny 3,3 biliony lat 70-cyfrowa liczba stuleci 185-cyfrowa liczba stuleci 728 cyfrowa liczba stuleci Dla porównania wielki wybuch był w przybliżeniu 15 miliardów lat temu Zapotrzebowanie na czas dla hipotetycznych rozwiązań małpiej układanki (przy założeniu, że jedna instrukcja trwa jedną milisekundę)

47 Zadania łatwe i trudne I Jak widać z wykresów i tabelek zawsze można znaleźć zadanie którego nie da się rozwiązać w rozsądnym czasie. Przyjęto dzielić zadania na łatwe jeżeli funkcja opisująca czas ich wykonania jest ograniczona jakąś funkcją wielomianową. Zadania trudne to zadania o czasie wykonania ponadwielomianowym lub wykładniczym. Podsumowanie Problemy trudno rozwiązywalne wymagają niepraktycznie dużo czasu nawet dla względnie małych danych wejściowych. Problemy łatwo rozwiązywalne mają algorytmy, które są praktyczne dla zadań o rozsądnych wymiarach.

48 Wątpliwości 1. Komputery stają się coraz szybsze (ostatnio, w ciągu roku szybkość komputerów wzrastało dziesięciokrotnie). Być może za czas jakiś pojawi się komputer wystarczająco szybki by rozwiązywać trudne zadania?

49 Wątpliwości 1. Komputery stają się coraz szybsze (ostatnio, w ciągu roku szybkość komputerów wzrastało dziesięciokrotnie). Być może za czas jakiś pojawi się komputer wystarczająco szybki by rozwiązywać trudne zadania? 2. Czy fakt, że nie znaleźliśmy lepszego algorytmu nie wskazuje na naszą niekompetencję? Może warto zwiększyć wysiłek aby polepszyć sytuację?

50 Wątpliwości 1. Komputery stają się coraz szybsze (ostatnio, w ciągu roku szybkość komputerów wzrastało dziesięciokrotnie). Być może za czas jakiś pojawi się komputer wystarczająco szybki by rozwiązywać trudne zadania? 2. Czy fakt, że nie znaleźliśmy lepszego algorytmu nie wskazuje na naszą niekompetencję? Może warto zwiększyć wysiłek aby polepszyć sytuację? 3. Być może uda się znaleźć jakiś dowód, że problem nie ma rozsądnego algorytmu?

51 Wątpliwości 1. Komputery stają się coraz szybsze (ostatnio, w ciągu roku szybkość komputerów wzrastało dziesięciokrotnie). Być może za czas jakiś pojawi się komputer wystarczająco szybki by rozwiązywać trudne zadania? 2. Czy fakt, że nie znaleźliśmy lepszego algorytmu nie wskazuje na naszą niekompetencję? Może warto zwiększyć wysiłek aby polepszyć sytuację? 3. Być może uda się znaleźć jakiś dowód, że problem nie ma rozsądnego algorytmu? 4. Czy trudny problem (małpiej układanki) nie jest przypadkiem jedynym takim zadaniem? Jest ono ciekawe, ale jakie ma praktyczne zastosowanie?

52 Szybszy komputer Maksymalna liczba kart rozwiązywanych w ciągu godziny O(?) na dzisiejszym na komputerze na komputerze komputerze 100 razy szybszym 1000 razy szybszym N A 100 A 1000 A N 2 B 10 B 31,6 B 2 N C C + 6,64 C + 9,97

53 Wymyślony algorytm (o małpiej układance) Niestety nie. Znaleziono bardzo wiele (około 1000) problemów, które sprowadzają się do przeglądu zupełnego wszystkich możliwych wariantów (ustawień danych). Można zaproponować algorytmy nierozsądne nie udało się pokazać że może istnieć dokładny algorytm lepszy... Źródłem trudnych zadań są takie dziedziny jak kombinatoryka, badania operacyjne, ekonomia, teoria grafów i logika.

54 Jak sobie radzimy z trudnymi zadaniami? Zrównoleglenie (zadanie dzielone jest na mniejsze kawałki i wysyłane na wiele komputerów).

55 Jak sobie radzimy z trudnymi zadaniami? Zrównoleglenie (zadanie dzielone jest na mniejsze kawałki i wysyłane na wiele komputerów). Randomizacja. Zamiast przeglądać wszystkie możliwe rozwiązania w sposób losowy wybiera się niektóre z nich. Pozostają te, które w najlepszy sposób spełniają nasze oczekiwania.

56 Jak sobie radzimy z trudnymi zadaniami? Zrównoleglenie (zadanie dzielone jest na mniejsze kawałki i wysyłane na wiele komputerów). Randomizacja. Zamiast przeglądać wszystkie możliwe rozwiązania w sposób losowy wybiera się niektóre z nich. Pozostają te, które w najlepszy sposób spełniają nasze oczekiwania. Komputery kwantowe.???

57 Jak sobie radzimy z trudnymi zadaniami? Zrównoleglenie (zadanie dzielone jest na mniejsze kawałki i wysyłane na wiele komputerów). Randomizacja. Zamiast przeglądać wszystkie możliwe rozwiązania w sposób losowy wybiera się niektóre z nich. Pozostają te, które w najlepszy sposób spełniają nasze oczekiwania. Komputery kwantowe.??? Obliczenia molekularne.???

58 Do czego może nadać się komputer kwantowy? Jeżeli mamy zadanie spełniające następujące warunki: 1. Jedyna znana metoda rozwiązania go to zgadnięcie i sprawdzenie. 2. Do sprawdzenia mamy n możliwych odpowiedzi. 3. Każde sprawdzenie zajmuje tyle samo czasu. 4. Nie ma żadnych wskazówek na temat kolejności sprawdzania (każda, nawet losowa, kolejność jest dobra). Czas rozwiązania takich zadań przez komputer kwantowy będzie proporcjonalny do pierwiastka kwadratowego z n.

59 Komputer kwantowy?

60 Komputer kwantowy?

61 Część II Poprawność algorytmów

62 Błędy Każdy program ma błędy. Tak długo, jak używany jest jedynie do zabawy nie odgrywa to większej roli. Programy komercyjne...

63 Licencja Gwarancja. Produkt jest zaprojektowany i oferowany jako produkt ogólnego zastosowania, a nie dla określonego celu jakiegokolwiek użytkownika. Licencjobiorca uznaje, ze Produkty mogą być wadliwe. W związku z powyższym zdecydowanie zaleca się Licencjobiorcy systematyczną archiwizację plików.[...] Produkt będzie działał zasadniczo zgodnie z załączonymi do Produktu materiałami drukowanymi, oraz (b) usługi pomocy technicznej świadczone przez firmę XXX będą zasadniczo zgodne z opisem zamieszczonym w odpowiednich materiałach drukowanych dostarczonych Licencjobiorcy przez firmę XXX, a pracownicy pomocy technicznej firmy XXX podejmą uzasadnione działania i wysiłki w celu rozwiązania ewentualnych problemów.[...] Ograniczenie Odpowiedzialności. W maksymalnym zakresie dozwolonym przez prawo właściwe i z wyjątkiem postanowień gwarancji firmy XXX, firma XXX oraz jej dostawcy nie będą ponosić odpowiedzialności za żadne szkody[...] W każdym przypadku, całkowita odpowiedzialność firmy XXX na podstawie niniejszej Umowy jest ograniczona do kwoty rzeczywiście zapłaconej przez Licencjobiorcę za Produkt. [...]

64 Bug Błędy, w żargonie informatyków zwykło się nazywać pluskwami (czy może, raczej robalami?). Po angielsku bug. Anegdota mówi, że w 1945 roku Grace Murray Hopper (autorka Cobola) korzystała z prymitywnego kalkulatora (działającego na przekaźnikach). Pojawiły się problemy z pracą kalkulatora. Po badaniach, okazało się, że jakiś robaczek latający wpadł między styki przekaźnika. Sporządzono raport, który zachował się do dziś...

65 Czy są programy wolne od błędów? Dobre pytanie.

66 Czy są programy wolne od błędów? Dobre pytanie. Właściwie nie ma...

67 Czy są programy wolne od błędów? Dobre pytanie. Właściwie nie ma......ale

68 Czy są programy wolne od błędów? Dobre pytanie. Właściwie nie ma......ale

69 Donald Knuth i TEX Więcej na temat tego w jaki sposób efekt ten osiągnął Donald Knuth poczytać można na stronach Wikipedii: a przyklady czeków wystawionych przez Knutha polskim użytkownikom TEXa na stronach GUST:

70 Uruchamianie programów i badanie ich poprawności Szacuje się, że ponad 70% nakładów na opracowanie złożonych systemów oprogramowania pochłania usuwanie błędów. Komputery zasadniczo są nieomylne. Psują się, ale przypadki, że generują błędne obliczenia są tak rzadkie, że spokojnie mówimy iż są nieomylne... Mylą się ludzie: na etapie opracowania algorytmu na etapie jego programowania podczas obsługi programu

71 O nieomylności komputerów I Czerwiec 1994: Testerzy firmy Intel zauważyli, że procesor źle liczy (błąd w instrukcji dzielenia). Kierownictwo uznało, że problem nie dotknie zbyt wielu użytkowników. 19 października: Jeden z użytkowników zauważa błąd i nabiera pewności, że to procesor (Pentium) / = (Correct value) / = (Flawed Pentium) 24 października: zgłasza błąd do Intela, osoba odpowiedzialna za kontakt z klientem potwierdza błąd (odtwarza go), i mowi, że nikt jeszcze go nie zgłosił. 30 pażdziernika odkrywca sprawę upublicznia (kilku swoim znajomym). 3 listopada informacja o błędzie pojawia się na grupie dyskusyjnej. 7 listopada Intel przyznaje się publicznie do błędu i ogłasza, że kolejne wydania procesora były już od niego wolne.

72 O nieomylności komputerów II 23 listopada pierwszy z producentów oprogramowania matematycznego (Mathworks) wypuszcza wersję Matlaba z modyfikacjami niwelujacymi błąd. 24 listopada okazuje się, że Intel ciągle sprzedaje błędne procesory. 30 listopada Intel przedstawia dokładny raport opisujący problem (i potencjalne jego konsekwencje) [1]. Za późno! 12 grudnia IBM publikuje swój własny raport oceniający znacznie poważniej konsekwencje błędu i ogłasza, że wstrzymuje sprzedaż komputerów PC z procesorem Intela. 16 grudnia akcje Intela sadają o 3,25$ (ok. 5%) 20 grudnia: Intel przeprasza i obiecuje bezpłatnie wymienić wadliwe procesory na żądanie. (Na podstawie [2])

73 Przyczyny problemów Intela I 1. Niecheć Intela do poinformowania o problemie swoich najważniejszych klientów. 2. Niepoinformowanie swojej pomocy technicznej, co uniemożliwiło traktowanie zgłaszających bład w sposób specjalny. 3. Pierwsze informacje Intela na temat problemu były odbierane przez wszystkich (poza firmą) jako nizadawalające i zdawkowe. 4. Nowy procesor Intela (Pentium) był przedmiotem bardzo intensywnej kampanii reklamowej. 5. Błąd dotyczył bardzo podstawowej operacji, którą łatwo było zademonstrować niefachowcom. 6. Błąd został wykryty na bardzo późnym etapie testowania procesora (po tym jak bardzo wiele procesorów zostało już sprzedanych). 7. Internet i sposób jego funkcjonowania.

74 Przyczyny problemów Intela II 8. Poważny konkurent firmy (IBM) zdecydował się na opublikowanie własnych analiz przedstawiających w innym świetle problem.

75 Znaczenie błędu Failure category and system component 16 4-Mbit DRAM parts in a 60Mhz Pentium TM processor system without ECC Particle defects in PentiumTM processor 16 4-Mbit DRAM parts in a 60Mhz Pentium TM processor system with ECC PC user on spreadsheet running 1,000 independent divides a day on the PentiumTM processor a Na podstawie [1] Hard or Soft FIT rate (per 10 9 device hours) MTBF (1 in x years) Soft 16 7 years Hard years Soft years Hard ,000 years Rate of significant failure seen by user Depends upon where defect occurs and how propagated Depends upon where defect occurs and how propagated Depends upon where defect occurs and how propagated Less frequent than 1 in 27,000 years. Depends upon the way inaccurate result gets used

76 Znaczenie błędu Class Applications MTBF Impact of failure in div/rem/tran Word Microsoft Word, Wordperfect, etc. Never None processing Spreadsheets (basic user) 123, Excel, QuattroPro (basic user runs fewer than 1000 div/day) 27,000 years Publishing, Print Shop, Adobe Acrobat viewers 270 Graphics years Personal Quicken, Money, Managing Your Money, Simply 2,000 Money Money, TurboTax (fewer than 14,000 divides per day) years Management Games X-Wing, Falcon (flight simulator), Strategy Games 270 years Unnoticeable Impact only on Viewing Unnoticeable Impact is benign, (since game) Na podstawie [1]

77 Znaczenie błędu Usage Examples Division intensive Standard spreadsheet analysis Basic financial calculations Complex mathematical models Path based models and simulations Na podstawie [1] Corporate finance, budget or marketing analysis, Present value, yield to maturity Black-Scholes model, Binomial model Monte Carlo risk analysis, non recombining paths No Some Some Yes Impact None Significant only in the extreme circumstance of > 10 million divisions per day Could be significant on continuous use Significant unless there is a low P2 factor.

78 Spectre & Meltdown

79 Jeszcze jedna definicja algorytmu Zadanie algorytmiczne można scharakteryzować zwięźle jako złożone z: 1. zbioru I dopuszczalnych danych wejściowych 2. zależności R między danymi a żądanymi wynikami O R : I O

80 Poprawność częściowa i całkowita Algorytm A jest częściowo poprawny względem I i R, gdy dla każdego zestawu danych X z I, jeżeli A uruchomiony dla X zatrzyma się, to relacja R między X a otrzymanym zestawem wyników jest spełniona. Częściowo poprawny algorytm sortowania mógłby zatrzymywać się nie dla wszystkich list dopuszczalnych, ale zatrzymując się, zawsze da w wyniku listę uporządkowaną poprawnie. Algorytm całkowicie poprawny poprawnie rozwiązuje zadanie dla każdego zestawu danych X z I

81 Poprawność częściowa i całkowita

82 Czy trzeba udowadniać poprawność algorytmów? Systemy bankowe... Systemy sterowania rakietami (balistycznymi) Pojazdy kosmiczne Systemy nadzoru chorych System ABS... A praktyka jest taka (wedle powiedzonek): oprogramowanie udostępnia się użytkownikom nie wtedy, kiedy jego poprawność staje się pewna, ale wtedy, gdy szybkość odkrywania nowych błędów spada do poziomu, który może być zaakceptowany...

83 Jak to się robi? Ba!

84 Jak to się robi? Ba! Dla każdego poprawnego algorytmu można ściśle wykazać, że jest on poprawny.

85 Jak to się robi? Ba! Dla każdego poprawnego algorytmu można ściśle wykazać, że jest on poprawny. Inna sprawa, czy to łatwo zrobić...

86 Jak to się robi? cd Obowiązują ogólne zasady: Z tego, że program działa poprawnie dla każdego zestawu danych, który wypróbowaliśmy nie wynika wcale, że działa dobrze dla innych zestawów.

87 Jak to się robi? cd Obowiązują ogólne zasady: Z tego, że program działa poprawnie dla każdego zestawu danych, który wypróbowaliśmy nie wynika wcale, że działa dobrze dla innych zestawów. Jeżeli uda się nam znaleźć jeden jedyny dopuszczalny zestaw danych, dla którego program działa źle to jest zły.

88 Jak to się robi? cd Obowiązują ogólne zasady: Z tego, że program działa poprawnie dla każdego zestawu danych, który wypróbowaliśmy nie wynika wcale, że działa dobrze dla innych zestawów. Jeżeli uda się nam znaleźć jeden jedyny dopuszczalny zestaw danych, dla którego program działa źle to jest zły. Idealna sytuacja dla osób, które potrafią być tylko destrukcyjne!

89 Jak to się robi? cdcd Zazwyczaj zależy nam, żeby algorytm kiedyś się zatrzymał.

90 Jak to się robi? cdcd Zazwyczaj zależy nam, żeby algorytm kiedyś się zatrzymał. Aby wykazać, że algorytm kiedyś się zatrzyma można wybrać jakąś wielkość zależną od zmiennych i struktur danych algorytmu i wykazać, że wielkość ta jest zbieżna.

91 Jak to się robi? cdcd Zazwyczaj zależy nam, żeby algorytm kiedyś się zatrzymał. Aby wykazać, że algorytm kiedyś się zatrzyma można wybrać jakąś wielkość zależną od zmiennych i struktur danych algorytmu i wykazać, że wielkość ta jest zbieżna. Jest mi bardzo przykro, że przypomina to Analizę Matematyczną...

92 Prosty przykład Odwracanie napisu Mamy pewien napis S zbudowany z ciągu symboli (na przykład zdanie języka naturalnego). Zadanie polega na stworzeniu procedury odwrócone(s) zwracającej symbole w kolejności odwrotnej. odwrócone("ala ma kota") "atok am ala"

93 Odwracanie napisu Schemat blokowy

94 Odwracanie napisu Schemat blokowy Start X S Y λ TAK X = λ? NIE Y glowa(x) Y drukuj Y. X ogon(x) Koniec

95 Odwracanie napisu Schemat blokowy Start X S λ to pusty napis Y λ TAK X = λ? NIE Y glowa(x) Y drukuj Y. X ogon(x) Koniec

96 Odwracanie napisu Schemat blokowy Start X S λ to pusty napis głowa(x) to funkcja zwracająca pierwszy symbol z napisu X; głowa("ala ma kota")="a" TAK Y λ X = λ? NIE Y glowa(x) Y drukuj Y. X ogon(x) Koniec

97 Odwracanie napisu Schemat blokowy Start X S λ to pusty napis głowa(x) to funkcja zwracająca pierwszy symbol z napisu X; głowa("ala ma kota")="a" to operator konkatenacji (łączenia napisów); "Ala " "ma kota"="ala ma kota" TAK Y λ X = λ? NIE Y glowa(x) Y drukuj Y. X ogon(x) Koniec

98 Odwracanie napisu Schemat blokowy Start λ to pusty napis głowa(x) to funkcja zwracająca pierwszy symbol z napisu X; głowa("ala ma kota")="a" to operator konkatenacji (łączenia napisów); "Ala " "ma kota"="ala ma kota" ogon(x) to funkcja zwracająca napis X bez głowy ; ogon("ala ma kota")="la ma kota" X S Y λ TAK X = λ? Y glowa(x) Y NIE drukuj Y. X ogon(x) Koniec

99 Odwracanie napisu Algorytm działa w kółko, kolejno odrywając symbole z końca S i dołączając je na początku nowo tworzonego napisu Y. Początkowo napis rozpoczyna jako pusty. Procedura kończy się, kiedy nic już nic nie zostanie do oderwania z S. Odrywania dokonuje się używając zmiennej X, której początkowo nadaje się wartość S, tak aby nie niszczyć oryginalnej wartości S.

100 Badanie poprawności Idea postępowania: Tworzymy punkty kontrolne (asercje). Pierwsza z nich kontroluje dane wejściowe (czy zgodne z założeniami). Ostatnia sprawdza wynik. Najistotniejsza jest jednak druga. Nadzoruje ona sytuację przed podjęciem decyzji czy potrzebne jest jest jeszcze jedno wykonanie pętli czy należy już kończyć. Stwierdza ona, że w punkcie kontrolnym (2) połączone wartości X i Y tworzą początkowy napis (przy czym Y jest odwrócony!) Pokazać powinniśmy, że wszystkie asercje są niezmiennikami, to znaczy, że podczas każdego wykonania algorytmu są prawdziwe (dla danych dopuszczalnych!)

101 Badanie poprawności, cd Sztuczka polega na tym, że rozpatruje się wszystkie możliwe drogi podążania procesora z jednego punktu kontrolnego do następnego.

102 Badanie poprawności, cd Sztuczka polega na tym, że rozpatruje się wszystkie możliwe drogi podążania procesora z jednego punktu kontrolnego do następnego.

103 Badanie poprawności, cd Sztuczka polega na tym, że rozpatruje się wszystkie możliwe drogi podążania procesora z jednego punktu kontrolnego do następnego. W przypadku tego algorytmu możliwe są trzy drogi: z (1) do (2), z (2) do (3) i z (2) do (2)

104 Badanie poprawności, cd Sztuczka polega na tym, że rozpatruje się wszystkie możliwe drogi podążania procesora z jednego punktu kontrolnego do następnego. W przypadku tego algorytmu możliwe są trzy drogi: z (1) do (2), z (2) do (3) i z (2) do (2) Pierwsza z nich przechodzona jest tylko jeden raz na samym początku

105 Badanie poprawności, cd Sztuczka polega na tym, że rozpatruje się wszystkie możliwe drogi podążania procesora z jednego punktu kontrolnego do następnego. W przypadku tego algorytmu możliwe są trzy drogi: z (1) do (2), z (2) do (3) i z (2) do (2) Pierwsza z nich przechodzona jest tylko jeden raz na samym początku Druga z nich co najwyżej jeden raz gdy algorytm się zatrzymuje.

106 Badanie poprawności, cd Sztuczka polega na tym, że rozpatruje się wszystkie możliwe drogi podążania procesora z jednego punktu kontrolnego do następnego. W przypadku tego algorytmu możliwe są trzy drogi: z (1) do (2), z (2) do (3) i z (2) do (2) Pierwsza z nich przechodzona jest tylko jeden raz na samym początku Druga z nich co najwyżej jeden raz gdy algorytm się zatrzymuje. Trzecia przechodzona będzie wiele razy (ile?)

107 Badanie poprawności, cd Sztuczka polega na tym, że rozpatruje się wszystkie możliwe drogi podążania procesora z jednego punktu kontrolnego do następnego. W przypadku tego algorytmu możliwe są trzy drogi: z (1) do (2), z (2) do (3) i z (2) do (2) Pierwsza z nich przechodzona jest tylko jeden raz na samym początku Druga z nich co najwyżej jeden raz gdy algorytm się zatrzymuje. Trzecia przechodzona będzie wiele razy (ile?) Zauważmy, że w żadnym odcinku nie występują już pętle. Instrukcje są dosyć proste... Idea postępowania polega na pokazaniu, że jeśli asercja na początku odcinka jest prawdziwa i rzeczywiście przejdziemy ten odcinek to asercja na końcu odcinka również będzie prawdziwa kiedy do niej dotrzemy.

108 Asercje... Przebieg algorytmu składa się z odcinków oddzielonych punktami kontrolnymi.

109 Asercje... Przebieg algorytmu składa się z odcinków oddzielonych punktami kontrolnymi. Jeżeli dla każdego odcinka z prawdziwości asercji początkowej wynika prawdziwość asercji końcowej...

110 Asercje... Przebieg algorytmu składa się z odcinków oddzielonych punktami kontrolnymi. Jeżeli dla każdego odcinka z prawdziwości asercji początkowej wynika prawdziwość asercji końcowej... I jeśli pierwsza asercja w całym ciągu odpowiada poprawności danych wejściowych (z góry jest przyjęta za prawdziwą)...

111 Asercje... Przebieg algorytmu składa się z odcinków oddzielonych punktami kontrolnymi. Jeżeli dla każdego odcinka z prawdziwości asercji początkowej wynika prawdziwość asercji końcowej... I jeśli pierwsza asercja w całym ciągu odpowiada poprawności danych wejściowych (z góry jest przyjęta za prawdziwą)... To prawdziwość asercji propaguje się wzdłuż całego ciągu...

112 Asercje... Przebieg algorytmu składa się z odcinków oddzielonych punktami kontrolnymi. Jeżeli dla każdego odcinka z prawdziwości asercji początkowej wynika prawdziwość asercji końcowej... I jeśli pierwsza asercja w całym ciągu odpowiada poprawności danych wejściowych (z góry jest przyjęta za prawdziwą)... To prawdziwość asercji propaguje się wzdłuż całego ciągu... Zatem prawdziwa będzie i asercja końcowa...

113 Asercje... Przebieg algorytmu składa się z odcinków oddzielonych punktami kontrolnymi. Jeżeli dla każdego odcinka z prawdziwości asercji początkowej wynika prawdziwość asercji końcowej... I jeśli pierwsza asercja w całym ciągu odpowiada poprawności danych wejściowych (z góry jest przyjęta za prawdziwą)... To prawdziwość asercji propaguje się wzdłuż całego ciągu... Zatem prawdziwa będzie i asercja końcowa... Co gwarantuje częściową poprawność algorytmu.

114 Co teraz trzeba zrobić? Udowodnić należy trzy twierdzenia: (1 2) Dla każdego napisu S po wykonaniu dwóch instrukcji X S; Y λ będzie spełniona równość S = odwrócone(y) X

115 Co teraz trzeba zrobić? Udowodnić należy trzy twierdzenia: (1 2) Dla każdego napisu S po wykonaniu dwóch instrukcji X S; Y λ będzie spełniona równość S = odwrócone(y) X (2 3) Jeśli S = odwrócone(y) X i X = λ to Y = odwrócone(s)

116 Co teraz trzeba zrobić? Udowodnić należy trzy twierdzenia: (1 2) Dla każdego napisu S po wykonaniu dwóch instrukcji X S; Y λ będzie spełniona równość S = odwrócone(y) X (2 3) Jeśli S = odwrócone(y) X i X = λ to Y = odwrócone(s) (2 2) Jeśli S = odwrócone(y) X i X λ to po wykonaniu instrukcji Y głowa(x) Y; X ogon(x) zachodzi równość S = odwrócone(y) X dla nowych wartości X i Y.

117 Dowód Zacznijmy od (1 2). Po wykonaniu X S zmienna X ma wartość S, a po wykonaniu jeszcze Y λ zmienna Y zawiera napis pusty. Czyli odwrócone(y) = odwrócone(λ), zatem odwrócone(y) X = λ X = X. Równością, która miała zachodzić po wykonaniu tych dwu instrukcji jest więc po prostu S = X. Co kończy dowód. W analogiczny sposób można pokazać (2 3).

118 Dowód cd Pokażemy teraz, że (2 2), czyli jeśli spełniona jest asercja 2 i pętla będzie wykonana jeden raz to asercja zostanie spełniona i po tym wykonaniu. Załóżmy, że X λ (czyli w szczególności, że X ma i głową i ogon puste napisy ich nie mają) i że napis S jest dokładnie taki sam jak odwrócone(y) X. Wykonujemy teraz działania: Y głowa(x) Y i X ogon(x) zatem odwrócone(y) X = odwrócone(głowa(x) Y) ogon(x) = odwrócone(y) głowa(x) ogon(x) = odwrócone(y) X

119 Wnioski Pokazaliśmy, że wszystkie asercje są spełnione. Zatem algorytm jest częściowo poprawny (czyli jeżeli się zatrzyma to daje poprawne wyniki. Jak pokazać, że zatrzyma się dla każdych poprawnych danych? Jedynie miejsce gdzie algorytm może się zapętlić to ścieżka (2 2). Ale na tej ścieżce za każdym razem dokonywana jest operacja odcinania głowy od X co powoduje, że za każdym razem X jest krótszy. Gdy X będzie napisem jednoliterowym odcięcie głowy stworzy pusty ciąg znaków. Zatem algorytm jest poprawny!

120 I po co to wszystko? 1. Algorytm był prosty, a dowód zagmatwany (i mocno matematyczny). 2. Jego istota polega na odpowiednim doborze punktów kontrolnych (początek i koniec algorytmu, oraz kilka takich innych miejsc między innymi tak dobranych aby likwidować pętle. 3. Ważną sprawą jest dobór niezmienników (asercji). 4. Na koniec należy dobrać warunek stopu czyli taki parametr o którym można powiedzieć że w trakcie wykonywania algorytmu będzie zmierzał do jakiejś wartości (będzie zbieżny). Niestety, nie da się skonstruować automatu, który będzie służył do dowodzenia poprawności algorytmów...

121 (Za

122 Bibliografia Intel. White paper: Statistical analysis of floating point flaw. // Thomas R. Nicely. Pentium FDIV flaw FAQ

Poprawność algorytmów wer. 1.3

Poprawność algorytmów wer. 1.3 Poprawność algorytmów wer. 1.3 Wojciech Myszka 9 grudnia 2009 Spis treści Błędy Bug Czy są programy wolne od błędów? Uruchamianie programów i badanie ich poprawności Jeszcze jedna definicja algorytmu Poprawność

Bardziej szczegółowo

Złożoność obliczeniowa. Trudne zadania

Złożoność obliczeniowa. Trudne zadania Złożoność obliczeniowa. Trudne zadania wer. 7 z drobnymi modyfikacjami! Wojciech Myszka 2016-12-17 20:40:37 +0100 Część I Złożoność obliczeniowa Raz jeszcze min/max z liczb... Danych jest n elementów X[1],

Bardziej szczegółowo

Trudne zadania. wer. 8. Wojciech Myszka, Maciej Panek styczeń 2015r.

Trudne zadania. wer. 8. Wojciech Myszka, Maciej Panek styczeń 2015r. Złożoność obliczeniowa. Trudne zadania. wer. 8 Wojciech Myszka, Maciej Panek styczeń 2015r. Złożoność algorytmów Złożoność algorytmów odnosi się do ilości zasobów niezbędnych do rozwiązania problemu. Przez

Bardziej szczegółowo

Złożoność obliczeniowa Błędy Trudne zadania. Wojciech Myszka Jakub Słowiński Katedra Mechaniki i Inżynierii Materiałowej 2014

Złożoność obliczeniowa Błędy Trudne zadania. Wojciech Myszka Jakub Słowiński Katedra Mechaniki i Inżynierii Materiałowej 2014 Złożoność obliczeniowa Błędy Trudne zadania Wojciech Myszka Jakub Słowiński Katedra Mechaniki i Inżynierii Materiałowej 2014 Metody algorytmiczne obejście sprawdzenie wszystkich elementów pewnej struktury

Bardziej szczegółowo

Poprawność algorytmów

Poprawność algorytmów Poprawność algorytmów Jeśli uważasz, że jakiś program komputerowy jest bezbłędny, to się mylisz - po prostu nie zauważyłeś jeszcze skutków błędu, który jest w nim zawarty. Jakie błędy można popełnić? Błędy

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

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

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

Podstawy Informatyki. Algorytmy i ich poprawność

Podstawy Informatyki. Algorytmy i ich poprawność Podstawy Informatyki Algorytmy i ich poprawność Błędy Błędy: językowe logiczne Błędy językowe Związane ze składnią języka Wykrywane automatycznie przez kompilator lub interpreter Prosty sposób usuwania

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

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

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

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

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

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

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

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 1. Podaj definicję informatyki. 2. W jaki sposób można definiować informatykę? 3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 4. Co to jest algorytm? 5. Podaj neumanowską architekturę

Bardziej szczegółowo

INFORMATYKA SORTOWANIE DANYCH.

INFORMATYKA SORTOWANIE DANYCH. INFORMATYKA SORTOWANIE DANYCH http://www.infoceram.agh.edu.pl SORTOWANIE Jest to proces ustawiania zbioru obiektów w określonym porządku. Sortowanie stosowane jest w celu ułatwienia późniejszego wyszukania

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

Metody numeryczne. materiały do wykładu dla studentów. 1. Teoria błędów, notacja O

Metody numeryczne. materiały do wykładu dla studentów. 1. Teoria błędów, notacja O Metody numeryczne materiały do wykładu dla studentów 1. Teoria błędów, notacja O 1.1. Błąd bezwzględny, błąd względny 1.2. Ogólna postać błędu 1.3. Problem odwrotny teorii błędów - zasada równego wpływu

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

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

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

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

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

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Technologie cyfrowe Artur Kalinowski Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.pl Semestr letni 2014/2015 Zadanie algorytmiczne: wyszukiwanie dane wejściowe:

Bardziej szczegółowo

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst. Schematy blokowe I Jeżeli po schematach blokowych będzie używany język C, to należy używać operatorów: '&&', ' ', '!=', '%' natomiast jeśli Ruby to 'and', 'or', '%', '!='. 1. Dostępne bloki: a) początek:

Bardziej szczegółowo

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa). Algorytmy definicja, cechy, złożoność. Algorytmy napotykamy wszędzie, gdziekolwiek się zwrócimy. Rządzą one wieloma codziennymi czynnościami, jak np. wymiana przedziurawionej dętki, montowanie szafy z

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

Laboratorium 5: Tablice. Wyszukiwanie binarne

Laboratorium 5: Tablice. Wyszukiwanie binarne Wojciech Myszka Laboratorium 5: Tablice. Wyszukiwanie binarne 2016-05-07 09:02:17 +0200 1. Tablice Do tej pory nie było potrzeby odwoływać się do zmiennych złożonych. Programy były bardzo proste i korzystały

Bardziej szczegółowo

Wyszukiwanie binarne

Wyszukiwanie binarne Wyszukiwanie binarne Wyszukiwanie binarne to technika pozwalająca na przeszukanie jakiegoś posortowanego zbioru danych w czasie logarytmicznie zależnym od jego wielkości (co to dokładnie znaczy dowiecie

Bardziej szczegółowo

Jeszcze o algorytmach

Jeszcze o algorytmach Jeszcze o algorytmach Przykłady różnych, podstawowych algorytmów 11.01.2018 M. Rad Plan Powtórka Znajdowanie najmniejszego elementu Segregowanie Poszukiwanie przez połowienie Wstawianie Inne algorytmy

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

Podstawy Informatyki. Metalurgia, I rok. Rekurencja. skomplikowane zadanie. Rekurencja

Podstawy Informatyki. Metalurgia, I rok. Rekurencja. skomplikowane zadanie. Rekurencja Podstawy Informatyki Metalurgia, I rok Rekurencja z łacińskiego oznacza to przybiec z powrotem - osiągniesz rzecz wielką, jeśli zawrócisz po to, by osiągnąć rzeczy małe Małe dziecko otrzymuje polecenie

Bardziej szczegółowo

Podstawy Informatyki. Metalurgia, I rok. Wykład 5 Rekurencja

Podstawy Informatyki. Metalurgia, I rok. Wykład 5 Rekurencja Podstawy Informatyki Metalurgia, I rok Wykład 5 Rekurencja Rekurencja z łacińskiego oznacza to przybiec z powrotem - osiągniesz rzecz wielką, jeśli zawrócisz po to, by osiągnąć rzeczy małe Przykład: Małe

Bardziej szczegółowo

Liczby pierwsze - wstęp

Liczby pierwsze - wstęp Artykuł pobrano ze strony eioba.pl Liczby pierwsze - wstęp W latach 60 ubiegłego wieku w Afryce znaleziono kości z wyrytymi na nich karbami liczące ponad 5000 lat. Na jednej z nich (kość z Ishango) karby

Bardziej szczegółowo

Zasady analizy algorytmów

Zasady analizy algorytmów Zasady analizy algorytmów A więc dziś w programie: - Kilka ważnych definicji i opisów formalnych - Złożoność: czasowa i pamięciowa - Kategorie problemów - Jakieś przykłady Problem: Zadanie możliwe do rozwiązania

Bardziej szczegółowo

Porównanie Heap Sort, Counting Sort, Shell Sort, Bubble Sort. Porównanie sortowao: HS, CS, Shs, BS

Porównanie Heap Sort, Counting Sort, Shell Sort, Bubble Sort. Porównanie sortowao: HS, CS, Shs, BS Czas sortowania w milisekundach Czas sortowania w milisekundach Sortowanie Porównanie, Counting Sort, Shell Sort, Bubble Sort 4 Porównanie sortowao: HS, CS, Shs, BS 35 3 25 2 15 5 Counting Sort Shell Sort

Bardziej szczegółowo

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku Matematyka Dyskretna Andrzej Szepietowski 25 czerwca 2002 roku Rozdział 1 Poprawność programów Jeżeli projektujemy algorytmy lub piszemy programy, to ważne jest pytanie, czy nasz algorytm lub program

Bardziej szczegółowo

Maciej Piotr Jankowski

Maciej Piotr Jankowski Reduced Adder Graph Implementacja algorytmu RAG Maciej Piotr Jankowski 2005.12.22 Maciej Piotr Jankowski 1 Plan prezentacji 1. Wstęp 2. Implementacja 3. Usprawnienia optymalizacyjne 3.1. Tablica ekspansji

Bardziej szczegółowo

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.

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

Bardziej szczegółowo

Algorytmy. wer Wojciech Myszka 30 listopada 2008

Algorytmy. wer Wojciech Myszka 30 listopada 2008 Algorytmy Część IV wer. 1.2 Wojciech Myszka 30 listopada 2008 Spis treści I Spis treści Jak się tworzy algorytmy? Poszukiwania i wędrówki Dziel i zwyciężaj Rekurencja Definicje Przykład Schemat blokowy

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

Znaleźć wzór ogólny i zbadać istnienie granicy ciągu określonego rekurencyjnie:

Znaleźć wzór ogólny i zbadać istnienie granicy ciągu określonego rekurencyjnie: Ciągi rekurencyjne Zadanie 1 Znaleźć wzór ogólny i zbadać istnienie granicy ciągu określonego rekurencyjnie: w dwóch przypadkach: dla i, oraz dla i. Wskazówka Należy poszukiwać rozwiązania w postaci, gdzie

Bardziej szczegółowo

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

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak Indukcja Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Charakteryzacja zbioru liczb naturalnych Arytmetyka liczb naturalnych Jedną z najważniejszych teorii matematycznych jest arytmetyka

Bardziej szczegółowo

Liczby losowe i pętla while w języku Python

Liczby losowe i pętla while w języku Python Liczby losowe i pętla while w języku Python Mateusz Miotk 17 stycznia 2017 Instytut Informatyki UG 1 Generowanie liczb losowych Na ogół programy są spójne i prowadzą do przewidywanych wyników. Czasem jednak

Bardziej szczegółowo

Sortowanie przez wstawianie Insertion Sort

Sortowanie przez wstawianie Insertion Sort Sortowanie przez wstawianie Insertion Sort Algorytm sortowania przez wstawianie można porównać do sposobu układania kart pobieranych z talii. Najpierw bierzemy pierwszą kartę. Następnie pobieramy kolejne,

Bardziej szczegółowo

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 9 Rekurencja

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 9 Rekurencja Podstawy Informatyki Inżynieria Ciepła, I rok Wykład 9 Rekurencja Rekurencja z łacińskiego oznacza to przybiec z powrotem - osiągniesz rzecz wielką, jeśli zawrócisz po to, by osiągnąć rzeczy małe Przykład:

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

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

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

Wykład z równań różnicowych Wykład z równań różnicowych 1 Wiadomości wstępne Umówmy się, że na czas tego wykładu zrezygnujemy z oznaczania n-tego wyrazu ciągu symbolem typu x n, y n itp. Zamiast tego pisać będziemy x (n), y (n) itp.

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

Matlab, zajęcia 3. Jeszcze jeden przykład metoda eliminacji Gaussa dla macierzy 3 na 3

Matlab, zajęcia 3. Jeszcze jeden przykład metoda eliminacji Gaussa dla macierzy 3 na 3 Matlab, zajęcia 3. Pętle c.d. Przypomnijmy sobie jak działa pętla for Możemy podać normalnie w Matlabie t=cputime; for i=1:20 v(i)=i; e=cputime-t UWAGA: Taka operacja jest bardzo czasochłonna i nieoptymalna

Bardziej szczegółowo

Efektywność algorytmów

Efektywność algorytmów Efektywność algorytmów Algorytmika Algorytmika to dział informatyki zajmujący się poszukiwaniem, konstruowaniem i badaniem własności algorytmów, w kontekście ich przydatności do rozwiązywania problemów

Bardziej szczegółowo

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 5. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 5 Prof. dr hab. inż. Jan Magott DMT rozwiązuje problem decyzyjny π przy kodowaniu e w co najwyżej wielomianowym czasie, jeśli dla wszystkich łańcuchów wejściowych

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

1 Metody rozwiązywania równań nieliniowych. Postawienie problemu

1 Metody rozwiązywania równań nieliniowych. Postawienie problemu 1 Metody rozwiązywania równań nieliniowych. Postawienie problemu Dla danej funkcji ciągłej f znaleźć wartości x, dla których f(x) = 0. (1) 2 Przedział izolacji pierwiastka Będziemy zakładać, że równanie

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

Jarosław Wróblewski Analiza Matematyczna 1A, zima 2012/13

Jarosław Wróblewski Analiza Matematyczna 1A, zima 2012/13 35. O zdaniu 1 T (n) udowodniono, że prawdziwe jest T (1), oraz że dla dowolnego n 6 zachodzi implikacja T (n) T (n+2). Czy można stąd wnioskować, że a) prawdziwe jest T (10), b) prawdziwe jest T (11),

Bardziej szczegółowo

Rozdział 1 PROGRAMOWANIE LINIOWE

Rozdział 1 PROGRAMOWANIE LINIOWE Wprowadzenie do badań operacyjnych z komputerem Opisy programów, ćwiczenia komputerowe i zadania. T. Trzaskalik (red.) Rozdział 1 PROGRAMOWANIE LINIOWE 1.2 Ćwiczenia komputerowe Ćwiczenie 1.1 Wykorzystując

Bardziej szczegółowo

Programowanie dynamiczne

Programowanie dynamiczne Programowanie dynamiczne Patryk Żywica 5 maja 2008 1 Spis treści 1 Problem wydawania reszty 3 1.1 Sformułowanie problemu...................... 3 1.2 Algorytm.............................. 3 1.2.1 Prosty

Bardziej szczegółowo

Metoda bisekcji (inaczej połowienia przedziału lub równych podziałów)

Metoda bisekcji (inaczej połowienia przedziału lub równych podziałów) Metoda bisekcji (inaczej połowienia przedziału lub równych podziałów) Metoda służy do wyznaczenia miejsca zerowego danej funkcji i polega na cyklicznym połowieniu zadanego z góry przedziału (w którym znajduje

Bardziej szczegółowo

Część I. Uwaga: Akceptowane są wszystkie odpowiedzi merytorycznie poprawne i spełniające warunki zadania. Zadanie 1.1. (0 3)

Część I. Uwaga: Akceptowane są wszystkie odpowiedzi merytorycznie poprawne i spełniające warunki zadania. Zadanie 1.1. (0 3) Uwaga: Akceptowane są wszystkie odpowiedzi merytorycznie poprawne i spełniające warunki zadania. Część I Zadanie 1.1. (0 3) 3 p. za prawidłową odpowiedź w trzech wierszach. 2 p. za prawidłową odpowiedź

Bardziej szczegółowo

Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa. Diagnostyka i niezawodność robotów

Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa. Diagnostyka i niezawodność robotów Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa Diagnostyka i niezawodność robotów Laboratorium nr 6 Model matematyczny elementu naprawialnego Prowadzący: mgr inż. Marcel Luzar Cele ćwiczenia:

Bardziej szczegółowo

Ogólne zasady projektowania algorytmów i programowania

Ogólne zasady projektowania algorytmów i programowania Ogólne zasady projektowania algorytmów i programowania Pracuj nad właściwie sformułowanym problemem dokładna analiza nawet małego zadania może prowadzić do ogromnych korzyści praktycznych: skrócenia długości

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ń praktycznych z egzaminów. Strona 1 z 12 Pytania praktyczne z kolokwium zaliczeniowego z 19 czerwca 2014 (studia dzienne)

Bardziej szczegółowo

Obliczenia inspirowane Naturą

Obliczenia inspirowane Naturą Obliczenia inspirowane Naturą Wykład 01 Modele obliczeń Jarosław Miszczak IITiS PAN Gliwice 05/10/2016 1 / 33 1 2 3 4 5 6 2 / 33 Co to znaczy obliczać? Co to znaczy obliczać? Deterministyczna maszyna Turinga

Bardziej szczegółowo

Matematyka dyskretna dla informatyków

Matematyka dyskretna dla informatyków Matematyka dyskretna dla informatyków Część I: Elementy kombinatoryki Jerzy Jaworski Zbigniew Palka Jerzy Szymański Uniwersytet im. Adama Mickiewicza Poznań 2007 4 Zależności rekurencyjne Wiele zależności

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

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

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

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n ) SORTOWANIE 1 SORTOWANIE Proces ustawiania zbioru elementów w określonym porządku. Stosuje się w celu ułatwienia późniejszego wyszukiwania elementów sortowanego zbioru. 2 Definicja Ciąg wejściowy: a 1,

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

EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA

EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA POZIOM ROZSZERZONY FORMUŁA OD 2015 ( NOWA MATURA ) ZASADY OCENIANIA ROZWIĄZAŃ ZADAŃ ARKUSZ MIN-R1,R2 MAJ 2018 Uwaga: Akceptowane są wszystkie odpowiedzi

Bardziej szczegółowo

Spis treści. Przedmowa... XI. Rozdział 1. Pomiar: jednostki miar... 1. Rozdział 2. Pomiar: liczby i obliczenia liczbowe... 16

Spis treści. Przedmowa... XI. Rozdział 1. Pomiar: jednostki miar... 1. Rozdział 2. Pomiar: liczby i obliczenia liczbowe... 16 Spis treści Przedmowa.......................... XI Rozdział 1. Pomiar: jednostki miar................. 1 1.1. Wielkości fizyczne i pozafizyczne.................. 1 1.2. Spójne układy miar. Układ SI i jego

Bardziej szczegółowo

Następnie przypominamy (dla części studentów wprowadzamy) podstawowe pojęcia opisujące funkcje na poziomie rysunków i objaśnień.

Następnie przypominamy (dla części studentów wprowadzamy) podstawowe pojęcia opisujące funkcje na poziomie rysunków i objaśnień. Zadanie Należy zacząć od sprawdzenia, co studenci pamiętają ze szkoły średniej na temat funkcji jednej zmiennej. Na początek można narysować kilka krzywych na tle układu współrzędnych (funkcja gładka,

Bardziej szczegółowo

5. Rozwiązywanie układów równań liniowych

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

Bardziej szczegółowo

LOGIKA I TEORIA ZBIORÓW

LOGIKA I TEORIA ZBIORÓW LOGIKA I TEORIA ZBIORÓW Logika Logika jest nauką zajmującą się zdaniami Z punktu widzenia logiki istotne jest, czy dane zdanie jest prawdziwe, czy nie Nie jest natomiast istotne o czym to zdanie mówi Definicja

Bardziej szczegółowo

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53: Instrukcje sterujące wer. 11 z drobnymi modyfikacjami! Wojciech Myszka 2017-07-05 10:53:09 +0200 Ala ma kota Część I Prosty przykład Problem 1. Zadanie polega na tym, żeby opracować algorytm który dla

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Matematyka dyskretna. Andrzej Łachwa, UJ, /15 Matematyka dyskretna Andrzej Łachwa, UJ, 2015 andrzej.lachwa@uj.edu.pl 3/15 Indukcja matematyczna Poprawność indukcji matematycznej wynika z dobrego uporządkowania liczb naturalnych, czyli z następującej

Bardziej szczegółowo

Materiały dla finalistów

Materiały dla finalistów Materiały dla finalistów Malachoviacus Informaticus 2016 11 kwietnia 2016 Wprowadzenie Poniższy dokument zawiera opisy zagadnień, które będą niezbędne do rozwiązania zadań w drugim etapie konkursu. Polecamy

Bardziej szczegółowo

Sortowanie bąbelkowe - wersja nr 1 Bubble Sort

Sortowanie bąbelkowe - wersja nr 1 Bubble Sort Sortowanie bąbelkowe - wersja nr 1 Bubble Sort Algorytm Algorytm sortowania bąbelkowego jest jednym z najstarszych algorytmów sortujących. Można go potraktować jako ulepszenie opisanego w poprzednim rozdziale

Bardziej szczegółowo

========================= Zapisujemy naszą funkcję kwadratową w postaci kanonicznej: 2

========================= Zapisujemy naszą funkcję kwadratową w postaci kanonicznej: 2 Leszek Sochański Arkusz przykładowy, poziom podstawowy (A1) Zadanie 1. Wykresem funkcji kwadratowej f jest parabola o wierzchołku 5,7 Wówczas prawdziwa jest równość W. A. f 1 f 9 B. f 1 f 11 C. f 1 f 1

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 12a: Prawdopodobieństwo i algorytmy probabilistyczne http://hibiscus.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Teoria prawdopodobieństwa

Bardziej szczegółowo

Struktury Danych i Złożoność Obliczeniowa

Struktury Danych i Złożoność Obliczeniowa Struktury Danych i Złożoność Obliczeniowa Zajęcia 2 Algorytmy wyszukiwania, sortowania i selekcji Sortowanie bąbelkowe Jedna z prostszych metod sortowania, sortowanie w miejscu? Sortowanie bąbelkowe Pierwsze

Bardziej szczegółowo

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

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny 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 danych

Bardziej szczegółowo

FUNKCJA LINIOWA - WYKRES

FUNKCJA LINIOWA - WYKRES FUNKCJA LINIOWA - WYKRES Wzór funkcji liniowej (Postać kierunkowa) Funkcja liniowa jest podstawowym typem funkcji. Jest to funkcja o wzorze: y = ax + b a i b to współczynniki funkcji, które mają wartości

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

Optymalizacja ciągła

Optymalizacja ciągła Optymalizacja ciągła 5. Metoda stochastycznego spadku wzdłuż gradientu Wojciech Kotłowski Instytut Informatyki PP http://www.cs.put.poznan.pl/wkotlowski/ 04.04.2019 1 / 20 Wprowadzenie Minimalizacja różniczkowalnej

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

3. Macierze i Układy Równań Liniowych

3. Macierze i Układy Równań Liniowych 3. Macierze i Układy Równań Liniowych Rozważamy równanie macierzowe z końcówki ostatniego wykładu ( ) 3 1 X = 4 1 ( ) 2 5 Podstawiając X = ( ) x y i wymnażając, otrzymujemy układ 2 równań liniowych 3x

Bardziej szczegółowo

Metody numeryczne I Równania nieliniowe

Metody numeryczne I Równania nieliniowe Metody numeryczne I Równania nieliniowe Janusz Szwabiński szwabin@ift.uni.wroc.pl Metody numeryczne I (C) 2004 Janusz Szwabiński p.1/66 Równania nieliniowe 1. Równania nieliniowe z pojedynczym pierwiastkiem

Bardziej szczegółowo

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności

Bardziej szczegółowo

ZADANIE 1. Ważenie (14 pkt)

ZADANIE 1. Ważenie (14 pkt) ZADANIE 1. Ważenie (14 pkt) Danych jest n przedmiotów o niewielkich gabarytach i różnych wagach. Jest też do dyspozycji waga z dwiema szalkami, ale nie ma odważników. Kładąc na wadze przedmioty a i b,

Bardziej szczegółowo

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy Informatyka wprowadze do algorytmów (II) dr hab. inż. Mikołaj Morzy plan wykładu cechy algorytmów sposoby zapisu algorytmów klasyfikacja algorytmów przykłady algorytmów sumowa przeszukiwa ciągu liczb sortowa

Bardziej szczegółowo

O ISTOTNYCH OGRANICZENIACH METODY

O ISTOTNYCH OGRANICZENIACH METODY O ISTOTNYCH OGRANICZENIACH METODY ALGORYTMICZNEJ Dwa pojęcia algorytmu (w informatyce) W sensie wąskim Algorytmem nazywa się każdy ogólny schemat procedury możliwej do wykonania przez uniwersalną maszynę

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, a/15

Matematyka dyskretna. Andrzej Łachwa, UJ, a/15 Matematyka dyskretna Andrzej Łachwa, UJ, 2017 andrzej.lachwa@uj.edu.pl 3a/15 Indukcja matematyczna Zasada Minimum Dowolny niepusty podzbiór S zbioru liczb naturalnych ma w sobie liczbę najmniejszą. Zasada

Bardziej szczegółowo

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

Algorytmy sortujące. sortowanie kubełkowe, sortowanie grzebieniowe Algorytmy sortujące sortowanie kubełkowe, sortowanie grzebieniowe Sortowanie kubełkowe (bucket sort) Jest to jeden z najbardziej popularnych algorytmów sortowania. Został wynaleziony w 1956 r. przez E.J.

Bardziej szczegółowo

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie. Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy

Bardziej szczegółowo

Matematyka Dyskretna 2/2008 rozwiązania. x 2 = 5x 6 (1) s 1 = Aα 1 + Bβ 1. A + B = c 2 A + 3 B = d

Matematyka Dyskretna 2/2008 rozwiązania. x 2 = 5x 6 (1) s 1 = Aα 1 + Bβ 1. A + B = c 2 A + 3 B = d C. Bagiński Materiały dydaktyczne 1 Matematyka Dyskretna /008 rozwiązania 1. W każdym z następujących przypadków podać jawny wzór na s n i udowodnić indukcyjnie jego poprawność: (a) s 0 3, s 1 6, oraz

Bardziej szczegółowo

KONSPEKT ZAJĘĆ KOŁA INFORMATYCZNEGO LUB MATEMATYCZNEGO W KLASIE III GIMNAZJUM LUB I LICEUM ( 2 GODZ.)

KONSPEKT ZAJĘĆ KOŁA INFORMATYCZNEGO LUB MATEMATYCZNEGO W KLASIE III GIMNAZJUM LUB I LICEUM ( 2 GODZ.) Joanna Osio asiaosio@poczta.onet.pl Nauczycielka matematyki w Gimnazjum im. Macieja Rataja w Żmigrodzie KONSPEKT ZAJĘĆ KOŁA INFORMATYCZNEGO LUB MATEMATYCZNEGO W KLASIE III GIMNAZJUM LUB I LICEUM ( 2 GODZ.)

Bardziej szczegółowo