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

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

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

Transkrypt

1 Złożoność obliczeniowa. Trudne zadania. wer. 8 Wojciech Myszka, Maciej Panek styczeń 2015r.

2 Złożoność algorytmów Złożoność algorytmów odnosi się do ilości zasobów niezbędnych do rozwiązania problemu. Przez zasoby rozumie się zazwyczaj: czas (złożoność czasowa), pamięć (złożoność pamięciowa).

3 Złożoność algorytmów Rodzaje Złożoność pamięciowa określa ilość pamięci wykorzystywanej podczas pracy algorytmu. Zależy w dużej mierze od wielkości danych wejściowych i wyjściowych, ale także od ilości wyników pośrednich. Złożoność czasowa ilość czasu niezbędnego do rozwiązania problemu w zależności od liczby danych wejściowych. Zależy od ilości wykonywanych operacji niezbędnych do otrzymania rozwiązania problemu (zazwyczaj w odniesieniu do operacji dominujących).

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

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 Czy 1 1 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 Czy 1 1 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 Czy 1 1 n 1 A inicjowanie wszystkie? Porównanie zmiana m A Zmniejszenie k tak nie n 1 A koniec

8 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 Czy 1 1 n 1 A inicjowanie wszystkie? Porównanie zmiana m A Zmniejszenie k tak nie n 1 A koniec

9 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 Czy 1 1 n 1 A inicjowanie wszystkie? Porównanie zmiana m A Zmniejszenie k tak nie n 1 A koniec

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

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

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

13 Czas obliczeń Start Czy 1 1 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.

14 Czas obliczeń Start Czy 1 1 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.

15 Czas obliczeń Start Czy 1 1 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.

16 Czas obliczeń Start Czy 1 1 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).

17 Czas obliczeń Start Czy 1 1 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.

18 Czas obliczeń Start Czy 1 1 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.

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

20 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

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

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

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

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

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

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

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

28 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

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

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

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

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

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

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

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

36 Liniowe wyszukiwanie schemat blokowy

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

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

39 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

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

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

42 Analiza algorytmu rekurencyjnego II 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

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

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

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

46 Zatem złożoność tego algorytmu jest rzędu O(N!) 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)

47 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 (7 cyfr) N N 10 miliardów (11 cyfr) liczba 65-cyfrowa 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

48 Wykresy różnych funkcji

49 Tabelka...

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

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

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?

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

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

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

56 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

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

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

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.

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

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

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

63 Komputer kwantowy?

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

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

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

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

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

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

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

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

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

73 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

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

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

76 O nieomylności komputerów III 30 listopada Intel przedstawia dokładny raport opisujący problem (i potencjalne jego konsekwencje) [?]. 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 [?])

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

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

79 Znaczenie błędu

80 Znaczenie błędu Na podstawie [?]

81 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

82 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

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

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

85 Jak to się robi? Ba!

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

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

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.

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.

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

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

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.

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

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

95 Odwracanie napisu Schemat blokowy

96 Odwracanie napisu Schemat blokowy

97 Odwracanie napisu Schemat blokowy λ to pusty napis

98 Odwracanie napisu Schemat blokowy λ to pusty napis głowa(x) to funkcja zwracająca pierwszy symbol z napisu X; głowa("ala ma kota")="a"

99 Odwracanie napisu Schemat blokowy λ 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"

100 Odwracanie napisu Schemat blokowy λ 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"

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

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

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.

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)

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

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.

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

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

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

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

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

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

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

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

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

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)

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

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

120 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: zatem Y głowa(x) Y i X ogon(x) odwrócone(y) X = odwrócone(głowa(x) Y) ogon(x) = odwrócone(y) głowa(x) ogon(x) = odwrócone(y) X

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

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

123 (Za

124 Bibliografia

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Algorytmika i pseudoprogramowanie

Algorytmika i pseudoprogramowanie Przedmiotowy system oceniania Zawód: Technik Informatyk Nr programu: 312[ 01] /T,SP/MENiS/ 2004.06.14 Przedmiot: Programowanie Strukturalne i Obiektowe Klasa: druga Dział Dopuszczający Dostateczny Dobry

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

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

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

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

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

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

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

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

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

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania:

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania: ANALIZA ALGORYTMÓW Analiza algorytmów polega między innymi na odpowiedzi na pytania: 1) Czy problem może być rozwiązany na komputerze w dostępnym czasie i pamięci? 2) Który ze znanych algorytmów należy

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

Wprowadzenie do algorytmiki

Wprowadzenie do algorytmiki Wprowadzenie do algorytmiki Pojecie algorytmu Powszechnie przyjmuje się, że algorytm jest opisem krok po kroku rozwiązania postawionego problemu lub sposób osiągnięcia jakiegoś celu. Wywodzi się z matematyki

Bardziej szczegółowo

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

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

Bardziej szczegółowo

AiSD zadanie trzecie

AiSD zadanie trzecie AiSD zadanie trzecie Gliwiński Jarosław Marek Kruczyński Konrad Marek Grupa dziekańska I5 5 czerwca 2008 1 Wstęp Celem postawionym przez zadanie trzecie było tzw. sortowanie topologiczne. Jest to typ sortowania

Bardziej szczegółowo

EGZAMIN MATURALNY 2012 INFORMATYKA

EGZAMIN MATURALNY 2012 INFORMATYKA Centralna Komisja Egzaminacyjna EGZAMIN MATURALNY 2012 INFORMATYKA POZIOM PODSTAWOWY Kryteria oceniania odpowiedzi MAJ 2012 2 Zadanie 1. a) (0 2) Egzamin maturalny z informatyki CZĘŚĆ I Obszar standardów

Bardziej szczegółowo