Złożoność obliczeniowa. Trudne zadania

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

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

Transkrypt

1 Złożoność obliczeniowa. Trudne zadania wer. 7 z drobnymi modyfikacjami! Wojciech Myszka :40:

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 wszystkie? Porównanie 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 wszystkie? Porównanie 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 wszystkie? Porównanie 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 wszystkie? Porównanie 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 wszystkie? Porównanie 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 wszystkie? Porównanie 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 wszystkie? Porównanie 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 wszystkie? Porównanie 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 wszystkie? Porównanie 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 wszystkie? Porównanie 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 wszystkie? Porównanie 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

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?) C(1) = C(2) = 1 (1) C(N) = 2C(N/2) + 2 (2)

40 Analiza algorytmu rekurencyjnego II Można rozwiązać to równanie. C(N) = 3N/2 2 = 3 N 2< 2N (3) 2

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

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

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

44 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: N (N 1) (N 2) 2 1 = N! (4) Zatem złożoność tego algorytmu jest rzędu O(N!)

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

46 Wykresy różnych funkcji

47 Tabelka...

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

49 Zadania łatwe i trudne II 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.

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?

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

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

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

54 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

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

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

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.

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

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

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

61 Komputer kwantowy?

62 Komputer kwantowy?

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

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

65 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. [...]

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

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

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

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

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

71 Donald Knuth i T E X 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 T E Xa na stronach GUST:

72 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

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

74 O nieomylności komputerów II 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. 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!

75 O nieomylności komputerów III 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])

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

77 Przyczyny problemów Intela II 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. 8. Poważny konkurent firmy (IBM) zdecydował się na opublikowanie własnych analiz przedstawiających w innym świetle problem.

78 Znaczenie błędu

79 Znaczenie błędu Na podstawie [1]

80 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

81 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

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

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

84 Jak to się robi? Ba!

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

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

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.

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.

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

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

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.

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

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

94 Odwracanie napisu Schemat blokowy

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

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

97 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" X S Y λ TAK 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" X S Y λ TAK X = λ? Y glowa(x) Y NIE drukuj Y. X ogon(x) Koniec

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

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

101 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!)

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.

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)

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

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.

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

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

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

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

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

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

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

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

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

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)

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

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

119 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

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

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

122 (Za

123 Bibliografia Intel. White paper: Statistical analysis of floating point flaw. fdiv/wp/, 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

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

Złożoność obliczeniowa. Trudne zadania

Złożoność obliczeniowa. Trudne zadania 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 2018-10-02 17:34:00

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Sortowanie. LABORKA Piotr Ciskowski

Sortowanie. LABORKA Piotr Ciskowski Sortowanie LABORKA Piotr Ciskowski main Zaimplementuj metody sortowania przedstawione w następnych zadaniach Dla każdej metody osobna funkcja Nagłówek funkcji wg uznania ale wszystkie razem powinny być

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Algorytmy sztucznej inteligencji www.math.uni.lodz.pl/ radmat Przeszukiwanie z ograniczeniami Zagadnienie przeszukiwania z ograniczeniami stanowi grupę problemów przeszukiwania w przestrzeni stanów, które składa się ze: 1 skończonego

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

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 4a: Rozwiązywanie rekurencji http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Czas działania programu Dla konkretnych

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

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

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

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

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

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

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k. Funkcje wymierne Jerzy Rutkowski Teoria Przypomnijmy, że przez R[x] oznaczamy zbiór wszystkich wielomianów zmiennej x i o współczynnikach rzeczywistych Definicja Funkcją wymierną jednej zmiennej nazywamy

Bardziej szczegółowo

Strategia "dziel i zwyciężaj"

Strategia dziel i zwyciężaj Strategia "dziel i zwyciężaj" W tej metodzie problem dzielony jest na kilka mniejszych podproblemów podobnych do początkowego problemu. Problemy te rozwiązywane są rekurencyjnie, a następnie rozwiązania

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

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany. Przedstawiamy algorytmy porządkowania dowolnej liczby elementów, którymi mogą być liczby, jak również elementy o bardziej złożonej postaci (takie jak słowa i daty). Porządkowanie, nazywane również często

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

Zajęcia nr. 3 notatki

Zajęcia nr. 3 notatki Zajęcia nr. 3 notatki 22 kwietnia 2005 1 Funkcje liczbowe wprowadzenie Istnieje nieskończenie wiele funkcji w matematyce. W dodaktu nie wszystkie są liczbowe. Rozpatruje się funkcje które pobierają argumenty

Bardziej szczegółowo

Zapisywanie algorytmów w języku programowania

Zapisywanie algorytmów w języku programowania Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym

Bardziej szczegółowo