Złożoność obliczeniowa. Trudne zadania
|
|
- Eugeniusz Świderski
- 6 lat temu
- Przeglądów:
Transkrypt
1 R ELEMENTARY. 2EXPTIME EXPSPACE EXPTIME Złożoność obliczeniowa. Trudne zadania wer. 12 z drobnymi modyfikacjami! PSPACE co-nptime PTIME LOG Space LOG Time NPCNPTIME Wojciech Myszka :34:
2 Część I Złożoność obliczeniowa
3 Raz jeszcze min/max z liczb... Danych jest n elementów X[1], X[2],..., X[n]; szukamy takich m i j, że m = X[j] = max 1 i n X[i] i j jest największym indeksem spełniającym ten warunek. Algorytm wyglądać będzie tak: 1. Inicjowanie Niech j n, k n 1, m X[n] 2. Czy wszystkie? Jeśli k = 0 to koniec 3. Porównanie Jeśli X[k] m to przejdź do 5 4. Zmiana m j k, m X[k] 5. Zmniejsz k k k 1; przejdź do 2 Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec
4 Raz jeszcze min/max z liczb... Danych jest n elementów X[1], X[2],..., X[n]; szukamy takich m i j, że m = X[j] = max 1 i n X[i] i j jest największym indeksem spełniającym ten warunek. Algorytm wyglądać będzie tak: 1. Inicjowanie Niech j n, k n 1, m X[n] 2. Czy wszystkie? Jeśli k = 0 to koniec 3. Porównanie Jeśli X[k] m to przejdź do 5 4. Zmiana m j k, m X[k] 5. Zmniejsz k k k 1; przejdź do 2 Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec
5 Raz jeszcze min/max z liczb... Danych jest n elementów X[1], X[2],..., X[n]; szukamy takich m i j, że m = X[j] = max 1 i n X[i] i j jest największym indeksem spełniającym ten warunek. Algorytm wyglądać będzie tak: 1. Inicjowanie Niech j n, k n 1, m X[n] 2. Czy wszystkie? Jeśli k = 0 to koniec 3. Porównanie Jeśli X[k] m to przejdź do 5 4. Zmiana m j k, m X[k] 5. Zmniejsz k k k 1; przejdź do 2 Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec
6 Raz jeszcze min/max z liczb... Danych jest n elementów X[1], X[2],..., X[n]; szukamy takich m i j, że m = X[j] = max 1 i n X[i] i j jest największym indeksem spełniającym ten warunek. Algorytm wyglądać będzie tak: 1. Inicjowanie Niech j n, k n 1, m X[n] 2. Czy wszystkie? Jeśli k = 0 to koniec 3. Porównanie Jeśli X[k] m to przejdź do 5 4. Zmiana m j k, m X[k] 5. Zmniejsz k k k 1; przejdź do 2 Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec
7 Raz jeszcze min/max z liczb... Danych jest n elementów X[1], X[2],..., X[n]; szukamy takich m i j, że m = X[j] = max 1 i n X[i] i j jest największym indeksem spełniającym ten warunek. Algorytm wyglądać będzie tak: 1. Inicjowanie Niech j n, k n 1, m X[n] 2. Czy wszystkie? Jeśli k = 0 to koniec 3. Porównanie Jeśli X[k] m to przejdź do 5 4. Zmiana m j k, m X[k] 5. Zmniejsz k k k 1; przejdź do 2 Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec
8 Analiza algorytmu Zajętość pamięci. W tym przypadku nic ciekawego zapotrzebowanie na pamięć jest proporcjonalne do liczby danych.
9 Analiza algorytmu Zajętość pamięci. W tym przypadku nic ciekawego zapotrzebowanie na pamięć jest proporcjonalne do liczby danych. Dokładność. Praktycznie nie są wykonywane żadne operacje matematyczne zatem nie dotyczy.
10 Analiza algorytmu Zajętość pamięci. W tym przypadku nic ciekawego zapotrzebowanie na pamięć jest proporcjonalne do liczby danych. Dokładność. Praktycznie nie są wykonywane żadne operacje matematyczne zatem nie dotyczy. Czas obliczeń. To może być ciekawe.
11 Czas obliczeń Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec Krok 1 wykonany będzie 1 raz.
12 Czas obliczeń Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec Krok 1 wykonany będzie 1 raz. Krok drugi n razy.
13 Czas obliczeń Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec Krok 1 wykonany będzie 1 raz. Krok drugi n razy. Krok 3 n 1 razy.
14 Czas obliczeń Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec Krok 1 wykonany będzie 1 raz. Krok drugi n razy. Krok 3 n 1 razy. Krok 4 A razy (jego wykonanie zależy od tego jakie są dane).
15 Czas obliczeń Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec Krok 1 wykonany będzie 1 raz. Krok drugi n razy. Krok 3 n 1 razy. Krok 4 A razy (jego wykonanie zależy od tego jakie są dane). Krok 5 n 1 razy.
16 Czas obliczeń Start 1 1 Czy n 1 A inicjowanie Porównanie wszystkie? zmiana m A Zmniejszenie k tak nie n 1 A koniec Krok 1 wykonany będzie 1 raz. Krok drugi n razy. Krok 3 n 1 razy. Krok 4 A razy (jego wykonanie zależy od tego jakie są dane). Krok 5 n 1 razy. Zatem zajmiemy się liczbą wykonań kroku 4.
17 Krok 4 Średnia liczba wykonań Gdy dane wejściowe uporządkowane są w kolejności malejącej A = n 1
18 Krok 4 Średnia liczba wykonań Gdy dane wejściowe uporządkowane są w kolejności malejącej A = n 1 Gdy dane wejściowe uporządkowane są w kolejności rosnącej A = 0
19 Krok 4 Średnia liczba wykonań Gdy dane wejściowe uporządkowane są w kolejności malejącej A = n 1 Gdy dane wejściowe uporządkowane są w kolejności rosnącej A = 0 A jaka będzie średnia?
20 Przykład Niech n = 3; załóżmy również, że wszystkie liczby są różne. Wypiszmy wszystkie możliwe układy liczb X[1], X[2], X[3]: Układ Wartość A
21 Przykład Niech n = 3; załóżmy również, że wszystkie liczby są różne. Wypiszmy wszystkie możliwe układy liczb X[1], X[2], X[3]: Układ Wartość A X[1] < X[2] < X[3] 0
22 Przykład Niech n = 3; załóżmy również, że wszystkie liczby są różne. Wypiszmy wszystkie możliwe układy liczb X[1], X[2], X[3]: Układ Wartość A X[1] < X[2] < X[3] 0 X[1] < X[3] < X[2] 1
23 Przykład Niech n = 3; załóżmy również, że wszystkie liczby są różne. Wypiszmy wszystkie możliwe układy liczb X[1], X[2], X[3]: Układ Wartość A X[1] < X[2] < X[3] 0 X[1] < X[3] < X[2] 1 X[2] < X[1] < X[3] 0
24 Przykład Niech n = 3; załóżmy również, że wszystkie liczby są różne. Wypiszmy wszystkie możliwe układy liczb X[1], X[2], X[3]: Układ Wartość A X[1] < X[2] < X[3] 0 X[1] < X[3] < X[2] 1 X[2] < X[1] < X[3] 0 X[2] < X[3] < X[1] 1
25 Przykład Niech n = 3; załóżmy również, że wszystkie liczby są różne. Wypiszmy wszystkie możliwe układy liczb X[1], X[2], X[3]: Układ Wartość A X[1] < X[2] < X[3] 0 X[1] < X[3] < X[2] 1 X[2] < X[1] < X[3] 0 X[2] < X[3] < X[1] 1 X[3] < X[1] < X[2] 1
26 Przykład Niech n = 3; załóżmy również, że wszystkie liczby są różne. Wypiszmy wszystkie możliwe układy liczb X[1], X[2], X[3]: Układ Wartość A X[1] < X[2] < X[3] 0 X[1] < X[3] < X[2] 1 X[2] < X[1] < X[3] 0 X[2] < X[3] < X[1] 1 X[3] < X[1] < X[2] 1 X[3] < X[2] < X[1] 2
27 Przykład Niech n = 3; załóżmy również, że wszystkie liczby są różne. Wypiszmy wszystkie możliwe układy liczb X[1], X[2], X[3]: Układ Wartość A X[1] < X[2] < X[3] 0 X[1] < X[3] < X[2] 1 X[2] < X[1] < X[3] 0 X[2] < X[3] < X[1] 1 X[3] < X[1] < X[2] 1 X[3] < X[2] < X[1] 2 Jeżeli teraz założymy, że każdy z układów liczb X[1], X[2], X[3] jest jednakowo prawdopodobne, to średnia wartość A wyniesie (dla n = 3) ( )/6 = 5/6.
28 Analiza... Bez starty ogólności, możemy przyjąć, że liczby X[1], X[2],..., X[n] to liczby 1, 2,..., n w pewnej kolejności. Dodatkowo założymy, że każda z n! permutacji jest jednakowo prawdopodobna. Tu wycinamy bardzo wiele rachunków... Z analizy rachunków wynika, że w przypadku gdy n = 12 średnia dla zmiennej losowej A wynosi około 2,1, a wariancja około 1,54.
29 Analiza algorytmu min/max... Algorytm jest bardzo prosty. Jedyne operacje wykonywane to porównanie (krok 2) i zamiana (krok 4). W zależności od liczby danych (n) liczba porównań jest stała n 1, a liczba zamian jest jakimś ułamkiem n. W takim przypadku piszemy że liczba zamian jest proporcjonalna do n, co zapisujemy czasami jako n. W teorii algorytmów częściej mówi się że złożoność czasowa algorytmu jest O(n) (co można czytać duże-o od n ). Nie jest ważny współczynnik proporcjonalności, ważne jest jedynie to, że w raz ze wzrostem n rośnie tak samo szybko czas obliczeń.
30 O(n) Mamy dwa (hipotetyczne) problemy: 1. Pierwszy wykonuje się w czasie proporcjonalnym do n 2. Drugi w czasie proporcjonalnym do 1 2 n Drugie zadanie wykonuje się dwa razy szybciej! Oba zadania wykonują się w czasie O(n)! Jest to zatem dosyć grube spojrzenie na czas obliczeń.
31 Liniowe wyszukiwanie Mamy książkę telefoniczną czyli listę <nazwisko, numer_telefonu>. Zadanie polega na znalezieniu numeru telefonicznego osoby o zadanym nazwisku. Najprostszy algorytm jest taki 1. i 1 2. Czy poszukiwane_nazwisko = nazwisko(i) 3. Jeżeli tak Koniec 4. W przeciwnym razie i i Jeżeli i > n Koniec: nie znaleziono! 6. W przeciwnym razie przejdź do kroku 2 Im dłuższa lista nazwisk tym dłużej pracuje algorytm.
32 Liniowe wyszukiwanie c. d. W najlepszym razie pętla wykonana będzie tylko jeden raz. W najgorszym razie n razy. Średnio? To zależy jaki jest rozkład prawdopodobieństwa zapytań...
33 Liniowe wyszukiwanie lepszy algorytm Jeżeli uwzględnić fakt, że dane w książce telefonicznej są posortowane algorytm można istotnie ulepszyć. Pierwsze porównanie należy wykonać nie z pierwszym (czy ostatnim) nazwiskiem, tylko ze środkowym (znajdującym się dokładnie na środku listy). Jeżeli szukane nazwisko jest większe nie należy zajmować się pierwszą połową listy... Takie podejście w jednym kroku redukuje rozmiar zadania o połowę! Każdy kolejny krok jest podobny zatem wielkość zadania zmniejsza się za każdym razem. W przypadku książki telefonicznej o N nazwiskach potrzeba (w najgorszym razie) log 2 (N) kroków. Złożoność algorytmu wynosi O(log(N))
34 Liniowe wyszukiwanie schemat blokowy Start Weź całą listę wejściową L nie ma Porównaj Y ze środkowym elementem listy jest Weź pierwszą albo drugą połowę rozważanej listy, zależnie od wyniku porównania Wypisz jest! nie czy lista jest pusta? tak wypisz nie ma! Stop Stop
35 Jak bardzo O(log(N)) jest lepsze od O(N)? N log 2 (N) milion 20 miliard 30 miliard miliardów 60
36 Pętle zagnieżdżone 1. wykonaj co następuje N 1 razy wykonaj co następuje N 1 razy... Pętla wewnętrzna wykonywana jest N 1 razy dla każdego z N 1 wykonań pętli zewnętrznej. Koszt czasowy dwu pętli jest zatem (N 1)(N 1) czyli N 2 2N + 1. Dla dużych N składniki 1 2N są nieistotne. Zatem koszt czasowy takiej pętli jest O(N 2 ).
37 Koszt czasowy rekurencji Rekurencyjny algorytm wyszukiwania minimum i maksimum w L (znajdź-min-i-max-w L): 1. jeśli L składa się z jednego elementu to nadaj MIN i MAX właśnie jego wartość; jeśli L składa się z dwu elementów, to nadaj MIN wartość mniejszego z nich, a MAX większego; 2. w przeciwnym razie wykonaj co następuje: 2.1 podziel L na połowy L 1 i L 2 ; 2.2 wywołaj znajdź-min-i-max-w L 1, umieszczając otrzymane wartości w MIN 1 i MAX 1 ; 2.3 wywołaj znajdź-min-i-max-w L 2, umieszczając otrzymane wartości w MIN 2 i MAX 2 ; 2.4 nadaj MIN mniejszą wartość z MIN 1 i MIN 2 ; 2.5 nadaj MAX większą wartość z MAX 1 i MAX 2 ; 3. wróć z wartościami MIN i MAX
38 Minimum i maksimum wersja klasyczna (naiwna) 1. MIN L(1); MAX L(1) 2. i 1 3. jeżeli L(i) > MAX to MAX L(i) 4. jeżeli L(i) < MIN to MIN L(i) 5. jeżeli i < N to i i + 1, przejdź do 3 6. KONIEC W tym algorytmie główna operacja to porównania; algorytm potrzebuje 2N porównań.
39 Analiza algorytmu rekurencyjnego I 1. jeśli N = 1 lub N = 2, wykonuje się dokładnie jedno porównanie punkt 1 procedury. 2. jeśli N > 2, to porównania, które się wykonuje, stanowią dokładnie dwa zbiory porównań dla list o długości N/2 i dwa dodatkowe porównania (wiersze 2.4 i 2.5) Zatem (C(N) oznacza liczbę porównań dla listy N elementowej) (czemu jest to +2?) Można rozwiązać to równanie. C(1) = C(2) = 1 (1) C(N) = 2C(N/2) + 2 (2) C(N) = 3N/2 2 = 3 N 2< 2N (3) 2
40 Wieże Hanoi Złożoność czasowa podawanego algorytmu wynosi 2 N 1 (gdzie N to liczba krążków). Zatem algorytm jest O(2 N )
41 Wieże Hanoi Alternatywny algorytm (Zakładamy, że nasze trzy kołki są ustawione w kółko i że na początku wszystkie N krążków spoczywa na jednym z nich.) 1. powtarzaj wykonywanie tego, co następuje, dopóty, dopóki, w chwili poprzedzającej podjęcie kroku 1.1 wszystkie krążki nie będą poprawnie ułożone na jakimś innym kołku: 1.1 przenieś najmniejszy krążek z kołka, na którym właśnie spoczywa, na kołek następny w kierunku zgodnym z ruchem wskazówek zegara; 1.2 wykonaj jedyne możliwe przeniesienie nie dotyczące najmniejszego krążka. A jaka jest złożoność tego algorytmu?
42 Małpia układanka Prosta gra, w której do dyspozycji gracza jest kilka (9?) kwadratowych kart, na bokach których wydrukowane są górna i dolne połowy kolorowych małp. Zadanie polega na ułożeniu kart w postaci kwadratu (3 3), aby na zetknięciach się krawędzi połowy małp pasowały do siebie, a kolory były identyczne...
43 Małpia układanka cd Najbardziej elementarny komputerowy algorytm rozwiązywania tej układanki sprowadzi się najprawdopodobniej, do przeglądu wszystkich możliwych układów kart. Wybieramy jedną z kart, układamy ją na pierwszym miejscu (odpowiednio wszystkie miejsca ponumerowaliśmy); na drugim miejscu mamy N 1 kart do wyboru, na kolejnym N 2, itd... Następnie sprawdzamy czy spełnione są warunki. Zatem liczba możliwych do rozpatrzenia kombinacji wynosi: Zatem złożoność tego algorytmu jest rzędu O(N!) N (N 1) (N 2) 2 1 = N! (4)
44 Rozsądny i nierozsądny czas działania Funkcja / N N N log (N) N milion (7 cyfr) N milion (7 cyfr) 27 milionów (8 1 miliard (10 cyfr) cyfr) 2 N 1024 liczba 16-cyfrowa liczba 31-cyfrowa liczba 91-cyfrowa liczba 302- cyfrowa N! 3,6 miliona (7 liczba 65-cyfrowa liczba 161-cyfrowa liczba 623- niewyobrażalnie cyfr) N N 10 miliardów (11 cyfr) liczba 85-cyfrowa liczba 201- cyfrowa cyfrowa liczba 744- cyfrowa duża niewyobrażalnie duża
45 Wykresy różnych funkcji
46 Tabelka... N N 2 1/ /2500 1/400 ssekundy 1/100 sekundy 9/100 sekundy sekundy sekundy N 5 1/10 sekundy 3,2 5,2 minuty 2,8 godziny 28,1 dnia ssekundy 2 N 1/1000 sekundy 1 sekunda 35,7 lat 400 bilionów stuleci 75-cyfrowa liczba stuleci N N 2,8 godziny 3,3 biliony lat 70-cyfrowa liczba stuleci 185-cyfrowa liczba stuleci 728 cyfrowa liczba stuleci Dla porównania wielki wybuch był w przybliżeniu 15 miliardów lat temu Zapotrzebowanie na czas dla hipotetycznych rozwiązań małpiej układanki (przy założeniu, że jedna instrukcja trwa jedną milisekundę)
47 Zadania łatwe i trudne I Jak widać z wykresów i tabelek zawsze można znaleźć zadanie którego nie da się rozwiązać w rozsądnym czasie. Przyjęto dzielić zadania na łatwe jeżeli funkcja opisująca czas ich wykonania jest ograniczona jakąś funkcją wielomianową. Zadania trudne to zadania o czasie wykonania ponadwielomianowym lub wykładniczym. Podsumowanie Problemy trudno rozwiązywalne wymagają niepraktycznie dużo czasu nawet dla względnie małych danych wejściowych. Problemy łatwo rozwiązywalne mają algorytmy, które są praktyczne dla zadań o rozsądnych wymiarach.
48 Wątpliwości 1. Komputery stają się coraz szybsze (ostatnio, w ciągu roku szybkość komputerów wzrastało dziesięciokrotnie). Być może za czas jakiś pojawi się komputer wystarczająco szybki by rozwiązywać trudne zadania?
49 Wątpliwości 1. Komputery stają się coraz szybsze (ostatnio, w ciągu roku szybkość komputerów wzrastało dziesięciokrotnie). Być może za czas jakiś pojawi się komputer wystarczająco szybki by rozwiązywać trudne zadania? 2. Czy fakt, że nie znaleźliśmy lepszego algorytmu nie wskazuje na naszą niekompetencję? Może warto zwiększyć wysiłek aby polepszyć sytuację?
50 Wątpliwości 1. Komputery stają się coraz szybsze (ostatnio, w ciągu roku szybkość komputerów wzrastało dziesięciokrotnie). Być może za czas jakiś pojawi się komputer wystarczająco szybki by rozwiązywać trudne zadania? 2. Czy fakt, że nie znaleźliśmy lepszego algorytmu nie wskazuje na naszą niekompetencję? Może warto zwiększyć wysiłek aby polepszyć sytuację? 3. Być może uda się znaleźć jakiś dowód, że problem nie ma rozsądnego algorytmu?
51 Wątpliwości 1. Komputery stają się coraz szybsze (ostatnio, w ciągu roku szybkość komputerów wzrastało dziesięciokrotnie). Być może za czas jakiś pojawi się komputer wystarczająco szybki by rozwiązywać trudne zadania? 2. Czy fakt, że nie znaleźliśmy lepszego algorytmu nie wskazuje na naszą niekompetencję? Może warto zwiększyć wysiłek aby polepszyć sytuację? 3. Być może uda się znaleźć jakiś dowód, że problem nie ma rozsądnego algorytmu? 4. Czy trudny problem (małpiej układanki) nie jest przypadkiem jedynym takim zadaniem? Jest ono ciekawe, ale jakie ma praktyczne zastosowanie?
52 Szybszy komputer Maksymalna liczba kart rozwiązywanych w ciągu godziny O(?) na dzisiejszym na komputerze na komputerze komputerze 100 razy szybszym 1000 razy szybszym N A 100 A 1000 A N 2 B 10 B 31,6 B 2 N C C + 6,64 C + 9,97
53 Wymyślony algorytm (o małpiej układance) Niestety nie. Znaleziono bardzo wiele (około 1000) problemów, które sprowadzają się do przeglądu zupełnego wszystkich możliwych wariantów (ustawień danych). Można zaproponować algorytmy nierozsądne nie udało się pokazać że może istnieć dokładny algorytm lepszy... Źródłem trudnych zadań są takie dziedziny jak kombinatoryka, badania operacyjne, ekonomia, teoria grafów i logika.
54 Jak sobie radzimy z trudnymi zadaniami? Zrównoleglenie (zadanie dzielone jest na mniejsze kawałki i wysyłane na wiele komputerów).
55 Jak sobie radzimy z trudnymi zadaniami? Zrównoleglenie (zadanie dzielone jest na mniejsze kawałki i wysyłane na wiele komputerów). Randomizacja. Zamiast przeglądać wszystkie możliwe rozwiązania w sposób losowy wybiera się niektóre z nich. Pozostają te, które w najlepszy sposób spełniają nasze oczekiwania.
56 Jak sobie radzimy z trudnymi zadaniami? Zrównoleglenie (zadanie dzielone jest na mniejsze kawałki i wysyłane na wiele komputerów). Randomizacja. Zamiast przeglądać wszystkie możliwe rozwiązania w sposób losowy wybiera się niektóre z nich. Pozostają te, które w najlepszy sposób spełniają nasze oczekiwania. Komputery kwantowe.???
57 Jak sobie radzimy z trudnymi zadaniami? Zrównoleglenie (zadanie dzielone jest na mniejsze kawałki i wysyłane na wiele komputerów). Randomizacja. Zamiast przeglądać wszystkie możliwe rozwiązania w sposób losowy wybiera się niektóre z nich. Pozostają te, które w najlepszy sposób spełniają nasze oczekiwania. Komputery kwantowe.??? Obliczenia molekularne.???
58 Do czego może nadać się komputer kwantowy? Jeżeli mamy zadanie spełniające następujące warunki: 1. Jedyna znana metoda rozwiązania go to zgadnięcie i sprawdzenie. 2. Do sprawdzenia mamy n możliwych odpowiedzi. 3. Każde sprawdzenie zajmuje tyle samo czasu. 4. Nie ma żadnych wskazówek na temat kolejności sprawdzania (każda, nawet losowa, kolejność jest dobra). Czas rozwiązania takich zadań przez komputer kwantowy będzie proporcjonalny do pierwiastka kwadratowego z n.
59 Komputer kwantowy?
60 Komputer kwantowy?
61 Część II Poprawność algorytmów
62 Błędy Każdy program ma błędy. Tak długo, jak używany jest jedynie do zabawy nie odgrywa to większej roli. Programy komercyjne...
63 Licencja Gwarancja. Produkt jest zaprojektowany i oferowany jako produkt ogólnego zastosowania, a nie dla określonego celu jakiegokolwiek użytkownika. Licencjobiorca uznaje, ze Produkty mogą być wadliwe. W związku z powyższym zdecydowanie zaleca się Licencjobiorcy systematyczną archiwizację plików.[...] Produkt będzie działał zasadniczo zgodnie z załączonymi do Produktu materiałami drukowanymi, oraz (b) usługi pomocy technicznej świadczone przez firmę XXX będą zasadniczo zgodne z opisem zamieszczonym w odpowiednich materiałach drukowanych dostarczonych Licencjobiorcy przez firmę XXX, a pracownicy pomocy technicznej firmy XXX podejmą uzasadnione działania i wysiłki w celu rozwiązania ewentualnych problemów.[...] Ograniczenie Odpowiedzialności. W maksymalnym zakresie dozwolonym przez prawo właściwe i z wyjątkiem postanowień gwarancji firmy XXX, firma XXX oraz jej dostawcy nie będą ponosić odpowiedzialności za żadne szkody[...] W każdym przypadku, całkowita odpowiedzialność firmy XXX na podstawie niniejszej Umowy jest ograniczona do kwoty rzeczywiście zapłaconej przez Licencjobiorcę za Produkt. [...]
64 Bug Błędy, w żargonie informatyków zwykło się nazywać pluskwami (czy może, raczej robalami?). Po angielsku bug. Anegdota mówi, że w 1945 roku Grace Murray Hopper (autorka Cobola) korzystała z prymitywnego kalkulatora (działającego na przekaźnikach). Pojawiły się problemy z pracą kalkulatora. Po badaniach, okazało się, że jakiś robaczek latający wpadł między styki przekaźnika. Sporządzono raport, który zachował się do dziś...
65 Czy są programy wolne od błędów? Dobre pytanie.
66 Czy są programy wolne od błędów? Dobre pytanie. Właściwie nie ma...
67 Czy są programy wolne od błędów? Dobre pytanie. Właściwie nie ma......ale
68 Czy są programy wolne od błędów? Dobre pytanie. Właściwie nie ma......ale
69 Donald Knuth i TEX Więcej na temat tego w jaki sposób efekt ten osiągnął Donald Knuth poczytać można na stronach Wikipedii: a przyklady czeków wystawionych przez Knutha polskim użytkownikom TEXa na stronach GUST:
70 Uruchamianie programów i badanie ich poprawności Szacuje się, że ponad 70% nakładów na opracowanie złożonych systemów oprogramowania pochłania usuwanie błędów. Komputery zasadniczo są nieomylne. Psują się, ale przypadki, że generują błędne obliczenia są tak rzadkie, że spokojnie mówimy iż są nieomylne... Mylą się ludzie: na etapie opracowania algorytmu na etapie jego programowania podczas obsługi programu
71 O nieomylności komputerów I Czerwiec 1994: Testerzy firmy Intel zauważyli, że procesor źle liczy (błąd w instrukcji dzielenia). Kierownictwo uznało, że problem nie dotknie zbyt wielu użytkowników. 19 października: Jeden z użytkowników zauważa błąd i nabiera pewności, że to procesor (Pentium) / = (Correct value) / = (Flawed Pentium) 24 października: zgłasza błąd do Intela, osoba odpowiedzialna za kontakt z klientem potwierdza błąd (odtwarza go), i mowi, że nikt jeszcze go nie zgłosił. 30 pażdziernika odkrywca sprawę upublicznia (kilku swoim znajomym). 3 listopada informacja o błędzie pojawia się na grupie dyskusyjnej. 7 listopada Intel przyznaje się publicznie do błędu i ogłasza, że kolejne wydania procesora były już od niego wolne.
72 O nieomylności komputerów II 23 listopada pierwszy z producentów oprogramowania matematycznego (Mathworks) wypuszcza wersję Matlaba z modyfikacjami niwelujacymi błąd. 24 listopada okazuje się, że Intel ciągle sprzedaje błędne procesory. 30 listopada Intel przedstawia dokładny raport opisujący problem (i potencjalne jego konsekwencje) [1]. Za późno! 12 grudnia IBM publikuje swój własny raport oceniający znacznie poważniej konsekwencje błędu i ogłasza, że wstrzymuje sprzedaż komputerów PC z procesorem Intela. 16 grudnia akcje Intela sadają o 3,25$ (ok. 5%) 20 grudnia: Intel przeprasza i obiecuje bezpłatnie wymienić wadliwe procesory na żądanie. (Na podstawie [2])
73 Przyczyny problemów Intela I 1. Niecheć Intela do poinformowania o problemie swoich najważniejszych klientów. 2. Niepoinformowanie swojej pomocy technicznej, co uniemożliwiło traktowanie zgłaszających bład w sposób specjalny. 3. Pierwsze informacje Intela na temat problemu były odbierane przez wszystkich (poza firmą) jako nizadawalające i zdawkowe. 4. Nowy procesor Intela (Pentium) był przedmiotem bardzo intensywnej kampanii reklamowej. 5. Błąd dotyczył bardzo podstawowej operacji, którą łatwo było zademonstrować niefachowcom. 6. Błąd został wykryty na bardzo późnym etapie testowania procesora (po tym jak bardzo wiele procesorów zostało już sprzedanych). 7. Internet i sposób jego funkcjonowania.
74 Przyczyny problemów Intela II 8. Poważny konkurent firmy (IBM) zdecydował się na opublikowanie własnych analiz przedstawiających w innym świetle problem.
75 Znaczenie błędu Failure category and system component 16 4-Mbit DRAM parts in a 60Mhz Pentium TM processor system without ECC Particle defects in PentiumTM processor 16 4-Mbit DRAM parts in a 60Mhz Pentium TM processor system with ECC PC user on spreadsheet running 1,000 independent divides a day on the PentiumTM processor a Na podstawie [1] Hard or Soft FIT rate (per 10 9 device hours) MTBF (1 in x years) Soft 16 7 years Hard years Soft years Hard ,000 years Rate of significant failure seen by user Depends upon where defect occurs and how propagated Depends upon where defect occurs and how propagated Depends upon where defect occurs and how propagated Less frequent than 1 in 27,000 years. Depends upon the way inaccurate result gets used
76 Znaczenie błędu Class Applications MTBF Impact of failure in div/rem/tran Word Microsoft Word, Wordperfect, etc. Never None processing Spreadsheets (basic user) 123, Excel, QuattroPro (basic user runs fewer than 1000 div/day) 27,000 years Publishing, Print Shop, Adobe Acrobat viewers 270 Graphics years Personal Quicken, Money, Managing Your Money, Simply 2,000 Money Money, TurboTax (fewer than 14,000 divides per day) years Management Games X-Wing, Falcon (flight simulator), Strategy Games 270 years Unnoticeable Impact only on Viewing Unnoticeable Impact is benign, (since game) Na podstawie [1]
77 Znaczenie błędu Usage Examples Division intensive Standard spreadsheet analysis Basic financial calculations Complex mathematical models Path based models and simulations Na podstawie [1] Corporate finance, budget or marketing analysis, Present value, yield to maturity Black-Scholes model, Binomial model Monte Carlo risk analysis, non recombining paths No Some Some Yes Impact None Significant only in the extreme circumstance of > 10 million divisions per day Could be significant on continuous use Significant unless there is a low P2 factor.
78 Spectre & Meltdown
79 Jeszcze jedna definicja algorytmu Zadanie algorytmiczne można scharakteryzować zwięźle jako złożone z: 1. zbioru I dopuszczalnych danych wejściowych 2. zależności R między danymi a żądanymi wynikami O R : I O
80 Poprawność częściowa i całkowita Algorytm A jest częściowo poprawny względem I i R, gdy dla każdego zestawu danych X z I, jeżeli A uruchomiony dla X zatrzyma się, to relacja R między X a otrzymanym zestawem wyników jest spełniona. Częściowo poprawny algorytm sortowania mógłby zatrzymywać się nie dla wszystkich list dopuszczalnych, ale zatrzymując się, zawsze da w wyniku listę uporządkowaną poprawnie. Algorytm całkowicie poprawny poprawnie rozwiązuje zadanie dla każdego zestawu danych X z I
81 Poprawność częściowa i całkowita
82 Czy trzeba udowadniać poprawność algorytmów? Systemy bankowe... Systemy sterowania rakietami (balistycznymi) Pojazdy kosmiczne Systemy nadzoru chorych System ABS... A praktyka jest taka (wedle powiedzonek): oprogramowanie udostępnia się użytkownikom nie wtedy, kiedy jego poprawność staje się pewna, ale wtedy, gdy szybkość odkrywania nowych błędów spada do poziomu, który może być zaakceptowany...
83 Jak to się robi? Ba!
84 Jak to się robi? Ba! Dla każdego poprawnego algorytmu można ściśle wykazać, że jest on poprawny.
85 Jak to się robi? Ba! Dla każdego poprawnego algorytmu można ściśle wykazać, że jest on poprawny. Inna sprawa, czy to łatwo zrobić...
86 Jak to się robi? cd Obowiązują ogólne zasady: Z tego, że program działa poprawnie dla każdego zestawu danych, który wypróbowaliśmy nie wynika wcale, że działa dobrze dla innych zestawów.
87 Jak to się robi? cd Obowiązują ogólne zasady: Z tego, że program działa poprawnie dla każdego zestawu danych, który wypróbowaliśmy nie wynika wcale, że działa dobrze dla innych zestawów. Jeżeli uda się nam znaleźć jeden jedyny dopuszczalny zestaw danych, dla którego program działa źle to jest zły.
88 Jak to się robi? cd Obowiązują ogólne zasady: Z tego, że program działa poprawnie dla każdego zestawu danych, który wypróbowaliśmy nie wynika wcale, że działa dobrze dla innych zestawów. Jeżeli uda się nam znaleźć jeden jedyny dopuszczalny zestaw danych, dla którego program działa źle to jest zły. Idealna sytuacja dla osób, które potrafią być tylko destrukcyjne!
89 Jak to się robi? cdcd Zazwyczaj zależy nam, żeby algorytm kiedyś się zatrzymał.
90 Jak to się robi? cdcd Zazwyczaj zależy nam, żeby algorytm kiedyś się zatrzymał. Aby wykazać, że algorytm kiedyś się zatrzyma można wybrać jakąś wielkość zależną od zmiennych i struktur danych algorytmu i wykazać, że wielkość ta jest zbieżna.
91 Jak to się robi? cdcd Zazwyczaj zależy nam, żeby algorytm kiedyś się zatrzymał. Aby wykazać, że algorytm kiedyś się zatrzyma można wybrać jakąś wielkość zależną od zmiennych i struktur danych algorytmu i wykazać, że wielkość ta jest zbieżna. Jest mi bardzo przykro, że przypomina to Analizę Matematyczną...
92 Prosty przykład Odwracanie napisu Mamy pewien napis S zbudowany z ciągu symboli (na przykład zdanie języka naturalnego). Zadanie polega na stworzeniu procedury odwrócone(s) zwracającej symbole w kolejności odwrotnej. odwrócone("ala ma kota") "atok am ala"
93 Odwracanie napisu Schemat blokowy
94 Odwracanie napisu Schemat blokowy Start X S Y λ TAK X = λ? NIE Y glowa(x) Y drukuj Y. X ogon(x) Koniec
95 Odwracanie napisu Schemat blokowy Start X S λ to pusty napis Y λ TAK X = λ? NIE Y glowa(x) Y drukuj Y. X ogon(x) Koniec
96 Odwracanie napisu Schemat blokowy Start X S λ to pusty napis głowa(x) to funkcja zwracająca pierwszy symbol z napisu X; głowa("ala ma kota")="a" TAK Y λ X = λ? NIE Y glowa(x) Y drukuj Y. X ogon(x) Koniec
97 Odwracanie napisu Schemat blokowy Start X S λ to pusty napis głowa(x) to funkcja zwracająca pierwszy symbol z napisu X; głowa("ala ma kota")="a" to operator konkatenacji (łączenia napisów); "Ala " "ma kota"="ala ma kota" TAK Y λ X = λ? NIE Y glowa(x) Y drukuj Y. X ogon(x) Koniec
98 Odwracanie napisu Schemat blokowy Start λ to pusty napis głowa(x) to funkcja zwracająca pierwszy symbol z napisu X; głowa("ala ma kota")="a" to operator konkatenacji (łączenia napisów); "Ala " "ma kota"="ala ma kota" ogon(x) to funkcja zwracająca napis X bez głowy ; ogon("ala ma kota")="la ma kota" X S Y λ TAK X = λ? Y glowa(x) Y NIE drukuj Y. X ogon(x) Koniec
99 Odwracanie napisu Algorytm działa w kółko, kolejno odrywając symbole z końca S i dołączając je na początku nowo tworzonego napisu Y. Początkowo napis rozpoczyna jako pusty. Procedura kończy się, kiedy nic już nic nie zostanie do oderwania z S. Odrywania dokonuje się używając zmiennej X, której początkowo nadaje się wartość S, tak aby nie niszczyć oryginalnej wartości S.
100 Badanie poprawności Idea postępowania: Tworzymy punkty kontrolne (asercje). Pierwsza z nich kontroluje dane wejściowe (czy zgodne z założeniami). Ostatnia sprawdza wynik. Najistotniejsza jest jednak druga. Nadzoruje ona sytuację przed podjęciem decyzji czy potrzebne jest jest jeszcze jedno wykonanie pętli czy należy już kończyć. Stwierdza ona, że w punkcie kontrolnym (2) połączone wartości X i Y tworzą początkowy napis (przy czym Y jest odwrócony!) Pokazać powinniśmy, że wszystkie asercje są niezmiennikami, to znaczy, że podczas każdego wykonania algorytmu są prawdziwe (dla danych dopuszczalnych!)
101 Badanie poprawności, cd Sztuczka polega na tym, że rozpatruje się wszystkie możliwe drogi podążania procesora z jednego punktu kontrolnego do następnego.
102 Badanie poprawności, cd Sztuczka polega na tym, że rozpatruje się wszystkie możliwe drogi podążania procesora z jednego punktu kontrolnego do następnego.
103 Badanie poprawności, cd Sztuczka polega na tym, że rozpatruje się wszystkie możliwe drogi podążania procesora z jednego punktu kontrolnego do następnego. W przypadku tego algorytmu możliwe są trzy drogi: z (1) do (2), z (2) do (3) i z (2) do (2)
104 Badanie poprawności, cd Sztuczka polega na tym, że rozpatruje się wszystkie możliwe drogi podążania procesora z jednego punktu kontrolnego do następnego. W przypadku tego algorytmu możliwe są trzy drogi: z (1) do (2), z (2) do (3) i z (2) do (2) Pierwsza z nich przechodzona jest tylko jeden raz na samym początku
105 Badanie poprawności, cd Sztuczka polega na tym, że rozpatruje się wszystkie możliwe drogi podążania procesora z jednego punktu kontrolnego do następnego. W przypadku tego algorytmu możliwe są trzy drogi: z (1) do (2), z (2) do (3) i z (2) do (2) Pierwsza z nich przechodzona jest tylko jeden raz na samym początku Druga z nich co najwyżej jeden raz gdy algorytm się zatrzymuje.
106 Badanie poprawności, cd Sztuczka polega na tym, że rozpatruje się wszystkie możliwe drogi podążania procesora z jednego punktu kontrolnego do następnego. W przypadku tego algorytmu możliwe są trzy drogi: z (1) do (2), z (2) do (3) i z (2) do (2) Pierwsza z nich przechodzona jest tylko jeden raz na samym początku Druga z nich co najwyżej jeden raz gdy algorytm się zatrzymuje. Trzecia przechodzona będzie wiele razy (ile?)
107 Badanie poprawności, cd Sztuczka polega na tym, że rozpatruje się wszystkie możliwe drogi podążania procesora z jednego punktu kontrolnego do następnego. W przypadku tego algorytmu możliwe są trzy drogi: z (1) do (2), z (2) do (3) i z (2) do (2) Pierwsza z nich przechodzona jest tylko jeden raz na samym początku Druga z nich co najwyżej jeden raz gdy algorytm się zatrzymuje. Trzecia przechodzona będzie wiele razy (ile?) Zauważmy, że w żadnym odcinku nie występują już pętle. Instrukcje są dosyć proste... Idea postępowania polega na pokazaniu, że jeśli asercja na początku odcinka jest prawdziwa i rzeczywiście przejdziemy ten odcinek to asercja na końcu odcinka również będzie prawdziwa kiedy do niej dotrzemy.
108 Asercje... Przebieg algorytmu składa się z odcinków oddzielonych punktami kontrolnymi.
109 Asercje... Przebieg algorytmu składa się z odcinków oddzielonych punktami kontrolnymi. Jeżeli dla każdego odcinka z prawdziwości asercji początkowej wynika prawdziwość asercji końcowej...
110 Asercje... Przebieg algorytmu składa się z odcinków oddzielonych punktami kontrolnymi. Jeżeli dla każdego odcinka z prawdziwości asercji początkowej wynika prawdziwość asercji końcowej... I jeśli pierwsza asercja w całym ciągu odpowiada poprawności danych wejściowych (z góry jest przyjęta za prawdziwą)...
111 Asercje... Przebieg algorytmu składa się z odcinków oddzielonych punktami kontrolnymi. Jeżeli dla każdego odcinka z prawdziwości asercji początkowej wynika prawdziwość asercji końcowej... I jeśli pierwsza asercja w całym ciągu odpowiada poprawności danych wejściowych (z góry jest przyjęta za prawdziwą)... To prawdziwość asercji propaguje się wzdłuż całego ciągu...
112 Asercje... Przebieg algorytmu składa się z odcinków oddzielonych punktami kontrolnymi. Jeżeli dla każdego odcinka z prawdziwości asercji początkowej wynika prawdziwość asercji końcowej... I jeśli pierwsza asercja w całym ciągu odpowiada poprawności danych wejściowych (z góry jest przyjęta za prawdziwą)... To prawdziwość asercji propaguje się wzdłuż całego ciągu... Zatem prawdziwa będzie i asercja końcowa...
113 Asercje... Przebieg algorytmu składa się z odcinków oddzielonych punktami kontrolnymi. Jeżeli dla każdego odcinka z prawdziwości asercji początkowej wynika prawdziwość asercji końcowej... I jeśli pierwsza asercja w całym ciągu odpowiada poprawności danych wejściowych (z góry jest przyjęta za prawdziwą)... To prawdziwość asercji propaguje się wzdłuż całego ciągu... Zatem prawdziwa będzie i asercja końcowa... Co gwarantuje częściową poprawność algorytmu.
114 Co teraz trzeba zrobić? Udowodnić należy trzy twierdzenia: (1 2) Dla każdego napisu S po wykonaniu dwóch instrukcji X S; Y λ będzie spełniona równość S = odwrócone(y) X
115 Co teraz trzeba zrobić? Udowodnić należy trzy twierdzenia: (1 2) Dla każdego napisu S po wykonaniu dwóch instrukcji X S; Y λ będzie spełniona równość S = odwrócone(y) X (2 3) Jeśli S = odwrócone(y) X i X = λ to Y = odwrócone(s)
116 Co teraz trzeba zrobić? Udowodnić należy trzy twierdzenia: (1 2) Dla każdego napisu S po wykonaniu dwóch instrukcji X S; Y λ będzie spełniona równość S = odwrócone(y) X (2 3) Jeśli S = odwrócone(y) X i X = λ to Y = odwrócone(s) (2 2) Jeśli S = odwrócone(y) X i X λ to po wykonaniu instrukcji Y głowa(x) Y; X ogon(x) zachodzi równość S = odwrócone(y) X dla nowych wartości X i Y.
117 Dowód Zacznijmy od (1 2). Po wykonaniu X S zmienna X ma wartość S, a po wykonaniu jeszcze Y λ zmienna Y zawiera napis pusty. Czyli odwrócone(y) = odwrócone(λ), zatem odwrócone(y) X = λ X = X. Równością, która miała zachodzić po wykonaniu tych dwu instrukcji jest więc po prostu S = X. Co kończy dowód. W analogiczny sposób można pokazać (2 3).
118 Dowód cd Pokażemy teraz, że (2 2), czyli jeśli spełniona jest asercja 2 i pętla będzie wykonana jeden raz to asercja zostanie spełniona i po tym wykonaniu. Załóżmy, że X λ (czyli w szczególności, że X ma i głową i ogon puste napisy ich nie mają) i że napis S jest dokładnie taki sam jak odwrócone(y) X. Wykonujemy teraz działania: Y głowa(x) Y i X ogon(x) zatem odwrócone(y) X = odwrócone(głowa(x) Y) ogon(x) = odwrócone(y) głowa(x) ogon(x) = odwrócone(y) X
119 Wnioski Pokazaliśmy, że wszystkie asercje są spełnione. Zatem algorytm jest częściowo poprawny (czyli jeżeli się zatrzyma to daje poprawne wyniki. Jak pokazać, że zatrzyma się dla każdych poprawnych danych? Jedynie miejsce gdzie algorytm może się zapętlić to ścieżka (2 2). Ale na tej ścieżce za każdym razem dokonywana jest operacja odcinania głowy od X co powoduje, że za każdym razem X jest krótszy. Gdy X będzie napisem jednoliterowym odcięcie głowy stworzy pusty ciąg znaków. Zatem algorytm jest poprawny!
120 I po co to wszystko? 1. Algorytm był prosty, a dowód zagmatwany (i mocno matematyczny). 2. Jego istota polega na odpowiednim doborze punktów kontrolnych (początek i koniec algorytmu, oraz kilka takich innych miejsc między innymi tak dobranych aby likwidować pętle. 3. Ważną sprawą jest dobór niezmienników (asercji). 4. Na koniec należy dobrać warunek stopu czyli taki parametr o którym można powiedzieć że w trakcie wykonywania algorytmu będzie zmierzał do jakiejś wartości (będzie zbieżny). Niestety, nie da się skonstruować automatu, który będzie służył do dowodzenia poprawności algorytmów...
121 (Za
122 Bibliografia Intel. White paper: Statistical analysis of floating point flaw. // Thomas R. Nicely. Pentium FDIV flaw FAQ
Poprawność algorytmów wer. 1.3
Poprawność algorytmów wer. 1.3 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ść
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],
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
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
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
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
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ść
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
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
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
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
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ść
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)
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
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
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
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ę
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
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.
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
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ą
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
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
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
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
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:
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:
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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,
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:
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
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
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.
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
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
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
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
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
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
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
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),
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
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
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
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ź
Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa. Diagnostyka i niezawodność robotów
Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa Diagnostyka i niezawodność robotów Laboratorium nr 6 Model matematyczny elementu naprawialnego Prowadzący: mgr inż. Marcel Luzar Cele ćwiczenia:
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
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)
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
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
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
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
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,
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
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
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
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,
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
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
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
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
Materiały dla finalistów
Materiały dla finalistów Malachoviacus Informaticus 2016 11 kwietnia 2016 Wprowadzenie Poniższy dokument zawiera opisy zagadnień, które będą niezbędne do rozwiązania zadań w drugim etapie konkursu. Polecamy
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
========================= 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
Teoretyczne podstawy informatyki
Teoretyczne podstawy informatyki Wykład 12a: Prawdopodobieństwo i algorytmy probabilistyczne http://hibiscus.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Teoria prawdopodobieństwa
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
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
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
Sortowanie. Tomasz Żak zak. styczeń Instytut Matematyki i Informatyki, Politechnika Wrocławska
Tomasz Żak www.im.pwr.wroc.pl/ zak Instytut Matematyki i Informatyki, Politechnika Wrocławska styczeń 2014 Przypuśćmy, że po sprawdzeniu 30 klasówek układamy je w kolejności alfabetycznej autorów. Jak
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
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
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
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
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
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,
Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy
Informatyka wprowadze do algorytmów (II) dr hab. inż. Mikołaj Morzy plan wykładu cechy algorytmów sposoby zapisu algorytmów klasyfikacja algorytmów przykłady algorytmów sumowa przeszukiwa ciągu liczb sortowa
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ę
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
Algorytmy sortujące. sortowanie kubełkowe, sortowanie grzebieniowe
Algorytmy sortujące sortowanie kubełkowe, sortowanie grzebieniowe Sortowanie kubełkowe (bucket sort) Jest to jeden z najbardziej popularnych algorytmów sortowania. Został wynaleziony w 1956 r. przez E.J.
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
Matematyka Dyskretna 2/2008 rozwiązania. x 2 = 5x 6 (1) s 1 = Aα 1 + Bβ 1. A + B = c 2 A + 3 B = d
C. Bagiński Materiały dydaktyczne 1 Matematyka Dyskretna /008 rozwiązania 1. W każdym z następujących przypadków podać jawny wzór na s n i udowodnić indukcyjnie jego poprawność: (a) s 0 3, s 1 6, oraz
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.)