PODSTAWY PROBABILISTYKI Z PRZYKŁADAMI ZASTOSOWAŃ W INFORMATYCE

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

Download "PODSTAWY PROBABILISTYKI Z PRZYKŁADAMI ZASTOSOWAŃ W INFORMATYCE"

Transkrypt

1 Marek Cieciura, Janusz Zacharski PODSTAWY PROBABILISTYKI Z PRZYKŁADAMI ZASTOSOWAŃ W INFORMATYCE CZĘŚĆ V PRZYKŁADY ZASTOSOWAŃ W INFORMATYCE Na prawach rękopisu Warszawa, październik 20 Data ostatniej aktualizacji: piątek, 2 grudnia 20, godzina 6:4

2 Podręcznik: Statystyka jest bardziej sposobem myślenia lub wnioskowania niŝ pęczkiem recept na młócenie danych w celu odsłonięcia odpowiedzi - Calyampudi Radhakrishna Rao PODSTAWY PROBABILISTYKI Z PRZYKŁADAMI ZASTOSOWAŃ W INFORMATYCE publikowany jest w częściach podanych poniŝej Nr I. Wprowadzenie II. III. IV. Statystyka opisowa Tytuł Rachunek prawdopodobieństwa Statystyka matematyczna V. Przykłady zastosowań w informatyce VI. VII. Wybrane twierdzenia z dowodami Tablice statystyczne Autorzy proszą o przesyłanie wszelkich uwagi i propozycji dotyczących zawartości podręcznika z wykorzystaniem formularza kontaktowego zamieszczonego w portalu Publikowane części będą na bieŝąco poprawiane, w kaŝdej będzie podawana data ostatniej aktualizacji. Podręcznik udostępnia się na warunku licencji Creative Commons (CC): Uznanie Autorstwa UŜycie Niekomercyjne Bez Utworów ZaleŜnych (CC-BY-NC-ND),co oznacza: Uznanie Autorstwa (ang. Attribution - BY): zezwala się na kopiowanie, dystrybucję, wyświetlanie i uŝytkowanie dzieła i wszelkich jego pochodnych pod warunkiem umieszczenia informacji o twórcy. UŜycie Niekomercyjne (ang. Noncommercial - NC): zezwala się na kopiowanie, dystrybucję, wyświetlanie i uŝytkowanie dzieła i wszelkich jego pochodnych tylko w celach niekomercyjnych.. Bez Utworów ZaleŜnych (ang. No Derivative Works - ND): zezwala się na kopiowanie, dystrybucję, wyświetlanie tylko dokładnych (dosłownych) kopii dzieła, niedozwolone jest jego zmienianie i tworzenie na jego bazie pochodnych. Podręcznik i skorelowany z nim portal, są w pełni i powszechnie dostępne, stanowią więc Otwarte Zasoby Edukacyjne O

3 SPIS TREŚCI 9. ANALIZA ALGORYTMÓW POD WZGLĘDEM ŚREDNIEGO ZACHOWANIA UWAGI WSTĘPNE SZACOWANIE RODZAJU / KLASY ZŁOśONOŚCI OBLICZENIOWEJ DANEGO ALGORYTMU PRZYKŁADOWE WYZNACZANIE ZŁOśONOŚCI OBLICZENIOWEJ SYMULACYJNA OCENA ZŁOśONOŚCI ALGORYTMÓW PRZYKŁADOWE PYTANIA TESTOWE ZADANIA NA ĆWICZENIA RACHUNKOWE OBLICZANIE NIEZAWODNOŚCI PROSTYCH UKŁADÓW SPRZĘTOWYCH I SYSTEMÓW PROGRAMOWYCH UWAGI WSTĘPNE POJĘCIE NIEZAWODNOŚCI POPRAWNOŚĆ, NIEZAWODNOŚĆ I ODPORNOŚĆ OPROGRAMOWANIA ZWIĘKSZANIE NIEZAWODNOŚCI OPROGRAMOWANIA OBLICZANIE NIEZAWODNOŚCI PODSTAWOWYCH KONFIGURACJI UKŁADÓW SPRZĘTOWYCH ZADANIA NA ĆWICZENIA RACHUNKOWE PROCESY STOCHASTYCZNE DEFINICJA I OPIS PROCESU STOCHASTYCZNEGO KLASY PROCESÓW STOCHASTYCZNYCH PRÓBKOWANIE PROCESÓW STOCHASTYCZNYCH ŁAŃCUCHY MARKOWA PIŚMIENNICTWO ANALIZA WYDAJNOŚCI PROSTYCH UKŁADÓW SPRZĘTOWO- PROGRAMOWYCH - ZASTOSOWANIA TEORII PROCESÓW STOCHASTYCZNYCH UWAGI WSTĘPNE OCENA WYDAJNOŚCI OPROGRAMOWANIA PODSTAWOWE POJĘCIA TEORII MASOWEJ OBSŁUGI MODEL JEDNOKANAŁOWY M / M / L (, ) MODEL WIELOKANAŁOWY M / M / S (, ) DLA S PRZYKŁADY ZADANIA NA ĆWICZENIA RACHUNKOWE

4 PRZYKŁADY ZASTOSOWAŃ W INFORMATYCE 9. ANALIZA ALGORYTMÓW POD WZGLĘDEM ŚREDNIEGO ZACHOWANIA 9.. Uwagi wstępne Istnieje wiele problemów, których człowiek nie jest w stanie rozwiązywać, posługując się nawet najszybszymi z istniejących komputerów. Nawet kolejne generacje coraz szybszych komputerów niewiele zmieniają tę sytuację. Panuje powszechne przekonanie, Ŝe cała nadzieja w coraz szybszych algorytmach. To przekonanie najlepiej oddają następujące powiedzenia: Najlepszym sposobem przyspieszania pracy komputerów jest obarczanie ich mniejszą liczbą działań - Ralf Gomory, szef ośrodka badawczego IBM. Największe przyspieszenie osiąga się nie pedałem gazu, a głową Ferrari. Analiza algorytmu obejmuje ocenę poprawności wykonywanych na jego podstawie obliczeń oraz ocenę złoŝoności algorytmu. W wyniku oceny złoŝoności algorytmu określane są zasoby potrzebne do rozwiązania problemów obliczeniowych. RozwaŜanymi zasobami są czas wykonywania obliczeń, niezbędna pamięć czy liczba procesorów. Za twórców podstaw oceny złoŝoności uwaŝani są Juris Hartmanis i Richard Stearns. Podejście do oceny poprawności obliczeń przedstawiono w rozdziale 5 Obliczanie niezawodności prostych układów sprzętowych i systemów programowych. Ocena złoŝoności algorytmów jest szczegółowo omawiana w ramach przedmiotu Algorytmy i złoŝoność, stąd po krótkim wprowadzeniu dalsze rozwaŝania ograniczono zgodnie z tytułem rozdziału do analizy algorytmów pod względem średniego zachowania. WyróŜnia się trzy rodzaje złoŝoności: ZłoŜoność obliczeniowa liczba elementarnych operacji wykonywanych w algorytmie. ZłoŜoność czasowa czas wykonania algorytmu. ZłoŜoność pamięciowa wielkość pamięci potrzebnej do przechowywania danych, oraz pośrednich i końcowych i wyników obliczeń ZłoŜoność czasowa określona jest przez złoŝoność obliczeniową oraz dodatkowo zaleŝy od parametrów wykorzystywanych komputerów i ich systemów operacyjnych, języków w których były napisane programy, uŝytych kompilatorów itp. Wraz z zmniejszaniem cen układów elektronicznych nawet najtańsze komputery maja pamięci operacyjne o duŝej pojemności, co spowodowało zmniejszenie znaczenia złoŝoności pamięciowej. ZłoŜoność obliczeniowa z reguły nie zaleŝy wyłącznie od rozmiaru danych, ale moŝe się znacznie róŝnić dla danych wejściowych o identycznym rozmiarze. Maciej M. Sysło, Anna B. Kwiatkowska, ZłoŜoność obliczeniowa i efektywność algorytmów, Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman: Projektowanie i analiza algorytmów, ftp://ftp.helion.pl/online/proalg/proalg-.pdf Algorytmy i struktury danych/wstęp: poprawność i złoŝoność algorytmu, %9B%C4%87_i_z%C5%82o%C5%BCono%C5%9B%C4%87_algorytmu ZłoŜoność obliczeniowa:

5 Czas wykonywania obliczeń zaleŝy od danych wejściowych. Przykładowo przy sortowaniu: im krótszy jest ciąg danych tym krótszy jest czas ich posortowania, im bardziej wstępnie posortowany jest ciąg danych tym krótszy jest czas ich całkowitego posortowania. Jak wiadomo dwoma często stosowanymi sposobami podejścia są: rozpatrywanie przypadków najgorszych (złoŝoność pesymistyczna) oraz zastosowanie określonego sposobu uśrednienia wszystkich moŝliwych przypadków (złoŝoność oczekiwana). Ocena złoŝoności obliczeniowej algorytmu moŝe być dokonana teoretycznie lub symulacyjnie jest ona niezaleŝna od środowiska sprzętowo-programowego. Z kolei ocena złoŝoności czasowej jest zawsze prowadzona w określonym środowisku sprzętowo-programowym. Na zakończenie rozwaŝań wstępnych naleŝy podkreślić, Ŝe 2 istnieje wiele programów, które testują róŝne charakterystyki sprzętu komputerowego i oprogramowanie - moc pojedynczej maszyny, interakcje w systemie klient-serwer (z pojedynczym lub wieloma klientami) czy liczbę transakcji na sekundę w systemie przetwarzania transakcyjnego. W miarę jak pojawiają się nowe wersje oprogramowania i sprzętu, zmieniają się składowe testy benchmarków i ich wagi w obliczaniu wyniku benchmarku 3 - dlatego jednym z warunków uzyskania wiarygodnej oceny w testach porównawczych jest konieczność zastosowania tej samej wersji benchmarku Szacowanie rodzaju / klasy złoŝoności obliczeniowej danego algorytmu 4 W niektórych prostych przypadkach moŝliwe jest oszacowanie złoŝoności obliczeniowej bez wykonywania skomplikowanych obliczeń, czy symulacji. Przykład Wyszukiwanie wartości maksymalnej w ciągu nieposortowanym ZałóŜmy, Ŝe mamy n liczb. Potrzebujemy przejrzeć kaŝdą z nich po to, by określić, która z nich jest największa. Potrzebujemy zatem n operacji ("spojrzeń) - liczba potrzebnych operacji jest proporcjonalna do rozmiaru ciągu - więc złoŝoność liniowa - O(n). Przykład 2 Wyszukiwanie danej liczby w ciągu posortowanym. Pomyślmy jakąś liczbę od do 000. MoŜna ją zgadnąć zadając maksymalnie 0 pytań na które odpowiada się tak lub nie. A oto pytania: Czy ta liczba jest mniejsza od 500? Jeśli tak, to czy jest mniejsza od 250? Jesli nie, to czy jest mniejsza od 375? Jeśli nie, to czy jest mniejsza od 438? Jeśli nie, to czy jest mniejsza od 469? Jeśli tak, to czy jest mniejsza od 443? Jeśli tak, to czy jest mniejsza od 440? Jeśli tak, to tą liczbą jest 439. Idea jest taka, Ŝe dzięki temu, Ŝe ciąg jest posortowany, w kolejnych krokach pomniejszany jest o połowę zakres, w którym znajduje się liczba dzięki temu potrzebne jest ok. log operacji - a więc występuje tu złoŝoność logarytmiczna - O(log 2 n) Test wydajności systemu komputerowego: sprzętu lub oprogramowania, jednym z warunków uzyskania wiarygodnej oceny w testach porównawczych jest konieczność zastosowania tej samej wersji testu

6 PRZYKŁADY ZASTOSOWAŃ W INFORMATYCE Przykład 3 Sortowanie przez wybieranie. Mamy nieposortowany ciąg o n elementach i posortowany o 0 elementach. Szukamy najmniejszego elementu w ciągu nieposortowanym i wstawiamy go na koniec posortowanego ciągu, tyle razy, aŝ posortowany ciąg będzie miał n elementów, a nieposortowany 0. Taki stan uzyskamy wtedy, gdy wszystkie n elementów z nieposortowanego przerzucimy w posortowany. Musimy zatem n razy wyszukać najmniejszy element w ciągu - a wyszukiwanie najmniejszego elementu, jak wiemy z. przykładu, ma złoŝoność O(n) (liniową). Zatem wykonanie n razy operacji o złoŝoności n wymaga n*n operacji, czyli ma złoŝoność kwadratową O(n*n) = O(n 2 ). Najczęściej algorytmy mają złoŝoność czasową proporcjonalną do funkcji: log(n)- złoŝoność logarytmiczna n - złoŝoność liniowa nlog(n) - złoŝoność liniowo-logarytmiczna n 2 - złoŝoność kwadratowa n k - złoŝoność wielomianowa 2 n - złoŝoność wykładnicza n! - złoŝoność wykładnicza, poniewaŝ n!>2 n juŝ od n= Przykładowe wyznaczanie złoŝoności obliczeniowej 5 Ocenimy złoŝoność obliczeniową sortowania przez wstawianie, które polega na pobieraniu kolejnych elementów ciągu i poszukaniu dla niego odpowiedniego miejsca na liście elementów uporządkowanych. Gdy miejsce zostanie znalezione, to elementy listy się rozsuwa i w tak ustalone miejsce wkłada ostatnio pobrany element. Algorytm sortowania przez wstawianie moŝna porównać do sposobu układania kart pobieranych z talii. Najpierw bierzemy pierwszą kartę. Następnie pobieramy kolejne, aŝ do wyczerpania talii. KaŜdą pobraną kartę porównujemy z kartami, które juŝ trzymamy w ręce i szukamy dla niej miejsca przed pierwszą kartą starszą (młodszą w przypadku porządku malejącego). Gdy znajdziemy takie miejsce, rozsuwamy karty i nową wstawiamy na przygotowane w ten sposób miejsce (stąd pochodzi nazwa algorytmu - sortowanie przez wstawianie, ang. Insertion Sort). Jeśli nasza karta jest najstarsza (najmłodsza), to umieszczamy ją na samym końcu. Tak porządkujemy karty. A jak przenieść tę ideę do świata komputerów i zbiorów liczbowych? Przykład Ciąg liczb do sortowania: 2,4,,6,3 Realizacja: ) element ostatni jest początkiem listy uporządkowanej 2) wybiera się element leŝący tuŝ przed elementem ostatnim (liczba 6 na miejscu czwartym) i porównuje się z elementem listy (3), element 6 > 3 zatem liczbę 3 przesuwa się na miejsce czwarte, a na zwolnione miejsce piąte wstawia się liczbę 6. Po tym kroku mamy więc ) wybiera się następny element (), i porównuje z elementami listy. PoniewaŜ < 3 to liczba pozostaje na swoim, trzecim miejscu. Zatem otrzymujemy

7 4) wybiera się następny element (4), i porównuje z elementami listy poniewaŝ dopiero dla ostatniego elementu 4 < 6, to liczby z pozycji trzeciej i czwartej przesuwa się odpowiednio na pozycję drugą i trzecią, a na zwolnioną pozycję czwartą wstawią się liczbę 4. Zatem ) wybiera się ostatni (2), i porównuje z elementami listy. Dla trzeciej pozycji 2 < 3, to liczbę z pozycji drugiej przesuwa się na pozycję pierwszą, a na zwolnioną pozycję wstawią liczbę 2. Zatem W tabeli podano schemat blokowy algorytmu, opis w pseudokodzie, liczbę wykonań poszczególnych instrukcji i komentarz. Zakładając, Ŝe czas wykonania kaŝdej instrukcji wynosi c i, na podstawie tabeli moŝna podać wzór na złoŝoność czasową. n Z t (n) = c +nc 2 +(n-)c 3 +(n-)c 4 + t(i) c 5 +( t(i) -)c 6 +( t(i) -)c 7 +(n-)c 8 +(n-)c 9 Po uporządkowaniu otrzymujemy zaleŝność w postaci następującej: i= Z t (n) =(c -c 3 -c 4 -c 6 -c 7 -c 8 -c 9 ) + (c 2 +c 3 +c 4 +c 8 +c 9 )n + (c 5 +c 6 +c 7 ) n t(i) Wprowadzając oznaczenia: d =c -c 3 -c 4 -c 6 -c 7 -c 8 -c 9 d 2 =c 2 +c 3 +c 4 +c 8 +c 9 d 3 =c 5 +c 6 +c 7 otrzymuje się ostateczny wzór na złoŝoność czasową algorytmu / programu na sortowanie przez wstawianie n Z t (n) =d + d 2 n + d 3 t(i) Ocena optymistyczna Tablica jest juŝ posortowana na samym początku - a zatem wykonanie algorytmu jest zbędne. Wszystkie elementy są na właściwych miejscach, a więc liczba sprawdzeń t i będzie równa przy kaŝdym obrocie zewnętrznej pętli. Wówczas funkcja złoŝoności jest następująca: n n i= T opt (n) = 5n-4+3 t(i) = 5n-4+3 = 5n 4 +3(n-) = 5n-4+3n-3 = 8n-7 i= Otrzymaliśmy liniową zaleŝność od n! Ocena pesymistyczna n i= W tym przypadku podana tablica jest takŝe posortowana, ale w odwrotnym porządku! Wtedy teŝ wszystkie elementy muszą być kolejno posyłane na koniec tablicy: i-ty element przemieści się więc o i - miejsc do tyłu w kaŝdym obrocie zewnętrznej pętli. Wniosek: t i = i dla kaŝdego i = 2, 3,, n. Funkcja T(n) będzie zatem wyglądała tak: T pes (n) = 5n-4+3 n n n(n + ) Uwzględniając, Ŝe n = i = otrzymuje się i = i= 2 i= Zatem n(n ) 3 T pes (n) = 5n-4+3 = 2 7 n + n Otrzymaliśmy więc funkcję kwadratową. i= n i= i n i= i= n(n ) 2 + n(n ) -n = 2 7

8 Tabela. Algorytm sortowania przez wstawianie Schemat blokowy algorytmu Opis algorytmu Krok Postać instrukcji Liczba wykonań Komentarz j = n- 2 for i= to n- n 3 x = d[j] n- 4 i = j + n- 5 while i n & x d[i] 6 d[i-] = d[i] 7 i = i+ n i= n i= t(i) Instrukcja inicjująca licznik (j = n-) zewnętrznej pętli for Sprawdzenie wartości tegoŝ licznika (j ) na początku kaŝdego cyklu zewnętrznej pętli for Przypisanie zmiennej pomocniczej x wartości d[j] w zewnętrznej pętli Instrukcja inicjująca licznik (i = j + ) na początku wewnętrznej pętli for Instrukcja sprawdzająca wartość tego licznika (i n & x d[i]) na początku kaŝdego cyklu wewnętrznej pętli for (właściwie mamy tutaj dwa porównania, ale dla uproszczenia potraktujemy to jako jedną instrukcję) t(i) - Przypisanie d[i -] = d[i] w wewnętrznej pętli n t(i) - i= Inkrementacja licznika (i) - operacja matematyczna powodująca zwiększenie wartości zmiennej o jeden 8 d[i-] = x n- Przypisanie d[i-] = x w zewnętrznej pętli 9 j = j - n- Dekrementacja licznika (j) pod koniec cyklu wewnętrznej pętli - instrukcja zmniejszająca o jeden wartość zmiennej podanej jako argument Suma n Uwaga: t(i) oznacza liczba sprawdzeń warunku pętli 5n-4+3 t(i) for w i-tym przebiegu i= Ostatnia aktualizacja: piątek, 2 grudnia 20 6:4 8

9 PRZYKŁADY ZASTOSOWAŃ W INFORMATYCE Ocena średnia Przyjmujemy, Ŝe z jednakowym prawdopodobieństwem i-ty element jest przemieszczany o moŝliwą liczbę miejsc: ti i. Zatem średnia liczba przesunięć tego elementu jest równa: t i i i(i + ) i + = k = = i i 2 2 k= Wówczas funkcja złoŝoności przedstawia się następująco: Suma w powyŝszej zaleŝności jest równa: n n n n i= i= i= i= n T sr (n) = 5n-4+3 ti = 5n-4+3 i= n i= i + 2 i + n n(n ) n n n (n )(n 2) = i = i = = = Zatem ostatecznie T sr (n) = n + n Czyli podobnie jest przy ocenie pesymistycznej otrzymaliśmy funkcję kwadratową. Przykład 6 Sortowanie tablicy zawierającej milion liczb (0 6 ). Superkomputer: wykonuje 00 milionów (0 8 ) operacji na sekundę. Sortujemy algorytmem przez wstawianie: T(n) = 2n 2 T(0 6 ) = 2 * (0 6 )2 / 0 8 = sekund 5.56 godzin Komputer osobisty: wykonuje milion (06) operacji na sekundę Sortujemy algorytmem przez scalanie: T(n) = 50nlgn T(0 6 ) = 50 * 0 6 * lg0 6 / sekund 6.67 minut Komputer osobisty wykonał zadanie 20 razy szybciej Symulacyjna ocena złoŝoności algorytmów Analityczna ocena złoŝoności algorytmów jest moŝliwa jedynie dla obliczeń stosunkowo prostych. Dla obliczeń skomplikowanych jedyną drogą oceny złoŝoności jest metoda symulacyjna. Symulacja to przybliŝone odtwarzanie zjawiska lub zachowania danego obiektu za pomocą jego modelu, np. modelu matematycznego, często zapisanego w postaci programu komputerowego Przy ocenie złoŝoności obliczeniowej naleŝy opracować model symulacyjny algorytmu, który umoŝliwia rejestrację liczby wykonywanych operacji elementarnych. Ideę postępowania dla prostego algorytmu przedstawiono na rys.. Dla algorytmu sortowania przez wstawianie kluczowe jest rejestrowanie liczby sprawdzeń warunku pętli for w i-tym przebiegu. PoniŜej zamieszczono wyniki oceny analitycznej i oceny symulacyjnej 7 dla tego algorytmu Algorytmy sortowania. Opis i demonstracja 9

10 PRZYKŁADY ZASTOSOWAŃ W INFORMATYCE Liczba porównań przy ocenie optymistycznej jest równa k opt = n, a przy ocenie pesymistycznej k pes =. Zakładając, Ŝe wszystkie te wartości są jednakowo prawdopo- n(n ) 2 dobne w oparciu o wzór na sumę k początkowych wyrazów ciągu arytmetycznego a + a k Sk = a + a a k = k 2 otrzymuje się zaleŝność na średnią liczbę porównań: 2 n(n ) 2n 2 + n n n 2 kopt + k + pes n n 2 k sr = n sr = = = n gdzie: sr n(n ) n(n ) 2n n 3n + 4 n sr = (n ) + = = Rodzaj oceny Wyznaczanie Liczba porównań dla n = 0 Optymistyczna Pesymistyczna Średnia Analityczne k opt = 0 - = 9 k pes = = 45 ksr = = = 29, Symulacyjne Średnia = 287/0=28,7 Przy wykorzystaniu tego samego programu symulacyjnego otrzymano następujące liczbą porównań L dla wybranych liczb sortowanych, przypadkowo ustawionych danych - N: L N Wykres dla tych danych wraz z liniową linia trendu jest następujący: Liczba porównań Liczba danych 0

11 Generator danych wejściowych Czy kontynuować symulację? TAK Wylosowanie i-tej porcji danych wejściowych NIE Obliczenie estymatorów parametrów złoŝoności O L O 2 L 2 W 3 O 5 O 4 L 5 L 4 Rysunek. Przykład symulacji dla wyznaczenia złoŝoności obliczeniowej Przy ocenie złoŝoności czasowej programów wykorzystuje się program implementujący algorytm, który uzupełnia się o generator danych wejściowych, liczniki ilości wykonywanych operacji w poszczególnych fragmentach programu oraz moduł obliczający ich średnie charakterystyki. Ideę przedstawia rysunek 2.

12 PRZYKŁADY ZASTOSOWAŃ W INFORMATYCE Generator danych wejściowych Czy kontynuować symulację? NIE TAK Wylosowanie i-tej porcji danych wejściowych Obliczenie estymatorów parametrów złoŝoności Pomiar czasu t i Program implementujący algorytm Pomiar czasu t i2 Obliczenie czasu przetwarzania Ti = ti2-ti Rysunek 2. Schemat blokowy symulacyjnej oceny złoŝoności czasowej programów MoŜliwe jest takŝe symulacyjne wyznaczenie średnich czasów wykonywania operacji z ustaloną szczegółowością, np. na poziomie modułów. W tym przypadku naleŝy rejestrować czasy wykonywania obliczeń w poszczególnych modułach. Przypadek ten jest więc połączeniem podejść przedstawionych na rys. i 2. NaleŜy pamiętać tutaj, ze rejestracja czasów wykonywania obliczeń zajmuje teŝ pewien czas. Tak więc estymowane czasy obliczeń będą zawyŝone. K i = W metodzie symulacyjnej kluczowe jest zapewnienie reprezentatywności generowanych danych, co jest warunkiem uzyskania wiarogodnych wyników. NaleŜy takŝe zapewnić wystarczającą liczbę prób (liczbę generowanych porcji danych). Wyznaczane estymatory parametrów złoŝoności obliczeniowej mogą być zarówno punktowe, począwszy od średniej K arytmetycznej T = Ticzy wariancji, jak i przedziałowe w postaci przedziałów ufności. Symulacyjnie moŝna wyznaczać takŝe wartości rozmaitych współczynników korelacji, np. określających zaleŝność czasu obliczeń od wielkości danych wejściowych. 2

13 9.5. Przykładowe pytania testowe 8. Sortowanie polega na: uporządkowaniu zbioru danych względem pewnych cech charakterystycznych kaŝdego elementu tego zbioru wyznaczaniu wartości argumentów funkcji tylko wtedy, kiedy są potrzebne (na Ŝądanie) wyznaczania wartości argumentów funkcji przed jej wywołaniem wyznaczania wartości argumentów funkcji po jej wywołaniu 2. Czasowa złoŝoność obliczeniowa algorytmu określa: kolejności wykonywania obliczeń statystycznie czas wykonywania algorytmu w zaleŝności od liczby danych wejściowych podanie równowaŝnika terminu nieznanego w terminach znanych statystycznie czas wykonywania algorytmu w zaleŝności od liczby danych wyjściowych 3. ZłoŜoność obliczeniowa charakteryzowana jest przy pomocy: sumy zakresów wszystkich nazw współczynnika operacji dominujących notacji O (omikron) wartości implementacji 4. Który algorytm jest najbardziej korzystny: O(n) O(n!) O(n log n) wszystkie odpowiedzi są poprawne 5. O(n 2 ) zapis klasy złoŝoności obliczeniowej algorytmu oznacza: algorytm o liniowej zaleŝności czasu wykonania od ilości danych algorytm, w którym czas wykonania rośnie z kwadratem liczby przetwarzanych elementów bardzo pesymistyczny algorytm, czas wykonania rośnie szybko wraz ze wzrostem liczby elementów wejściowych algorytm, w którym czas wykonania rośnie wprost proporcjonalnie do kwadratu liczb przetwarzanych elementów 6. Pamięciowa złoŝoność obliczeniowa określa: ilość zasobów komputera, których wymaga dany algorytm w zaleŝności od liczby danych wejściowych statystycznie czas wykonywania algorytmu w zaleŝności od liczby danych wejściowych liczbę procesów potrzebnych do wykonania danego algorytmu wszystkie odpowiedzi są poprawne 7. Algorytmy sortujące w miejscu: wymagają zarezerwowania w pamięci dodatkowych obszarów, których wielkość jest uzaleŝniona od liczby sortowanych elementów lub od ich wartości wymagają stałej liczby dodatkowych struktur danych, która nie zaleŝy od liczby elementów sortowanego zbioru danych ani od ich wartości wymagają wyznaczenia wartości argumentów funkcji tylko wtedy, kiedy są potrzebne (na Ŝądanie) wymagają zmiennej liczby struktur danych, która zaleŝy od liczby elementów sortowanego zbioru danych oraz od ich wartości 8 3

14 PRZYKŁADY ZASTOSOWAŃ W INFORMATYCE 8. Algorytmy stabilne: zachowują kolejność elementów równych kolejność wynikowa elementów równych jest nieokreślona wyszukują elementy mające się znaleźć na zadanej pozycji nie zachowują kolejności elementów równych 9. Sortowanie przez wybór polega na: wyszukaniu elementu mającego się znaleźć na zadanej pozycji i zamianie miejscami z tym, który jest tam obecnie usuwaniu pewnego elementu z danych wejściowych i wstawianiu go na odpowiednie miejsce w wynikach badaniu kolejno wszystkich pary obiektów odległych o określoną rozpiętość usuwaniu kolejnego elementu z danych wejściowych i wstawianiu go na ściśle określone miejsce w wynikach 0. W metodzie sortowania przez wybór: algorytm jest niestabilny, sortowanie odbywa się w miejscu algorytm jest stabilny, sortowanie odbywa się w miejscu algorytm jest niestabilny, sortowanie nie odbywa się w miejscu algorytm jest stabilny, sortowanie nie odbywa się w miejscu. Jaką klasę czasowej złoŝoności obliczeniowej posiada metoda sortowania przez wybór? O(n!) O(n2) O(n log n) O(n) 2. Sortowanie przez wstawianie polega na: usuwaniu pewnego elementu z danych wejściowych i wstawianiu go na odpowiednie miejsce w wynikach wyszukaniu elementu mającego się znaleźć na zadanej pozycji i zamianie miejscami z tym, który jest tam obecnie badaniu kolejno wszystkich pary obiektów odległych o określoną rozpiętość przestawieniu elementów zbioru wejściowego między sobą, według określonej zasady 3. Które stwierdzenie jest nieprawdziwe: algorytm sortowania przez wstawianie jest wydajny dla danych wstępnie posortowanych algorytm sortowania przez wstawianie jest stabilny algorytm sortowania przez wstawianie jest wydajny dla zbiorów o duŝej liczebności algorytm sortowania przez wstawianie jest wydajny dla zbiorów o małej liczebności 4. Algorytm sortowania przez wybór jest duŝo lepszy od sortowania przez wstawianie w przypadku zbiorów w znacznym stopniu uporządkowanych prawda fałsz 5. W metodzie sortowania przez wybór: algorytm jest niestabilny, sortowanie nie odbywa się w miejscu algorytm jest stabilny, sortowanie odbywa się w miejscu algorytm jest stabilny, sortowanie nie odbywa się w miejscu algorytm jest niestabilny, sortowanie odbywa się w miejscu 6. Najbardziej niekorzystnym przypadkiem sortowania przez wybór jest: sortowanie zbioru posortowanego odwrotnie sortowania zbioru o losowym rozkładzie elementów Ŝadne z powyŝszych wszystkie odpowiedzi są poprawne 4

15 9.6. Zadania na ćwiczenia rachunkowe Zadanie - Algorytm sortowania przez wybór 9 ZałóŜmy, iŝ chcemy posortować zbiór liczbowy rosnąco. Zatem element najmniejszy powinien znaleźć się na pierwszej pozycji. Szukamy w zbiorze elementu najmniejszego i wymieniamy go z elementem na pierwszej pozycji. W ten sposób element najmniejszy znajdzie się na swojej docelowej pozycji. W identyczny sposób postępujemy z resztą elementów naleŝących do zbioru. Znów wyszukujemy element najmniejszy i zamieniamy go z elementem na drugiej pozycji. Otrzymamy dwa posortowane elementy. Procedurę kontynuujemy dla pozostałych elementów dotąd, aŝ wszystkie będą posortowane. Rysunek 3. Algorytm sortowania przez wybór Dla algorytmu sortowania przez wybór: Pętla zewnętrzna sterowana zmienną j wyznacza kolejne elementy zbioru o indeksach od do n -, w których zostaną umieszczone elementy minimalne. Na początku tej pętli zakładamy, iŝ elementem minimalnym jest element d[j] i zapamiętujemy jego indeks w zmiennej p min. W pętli numer 2 sterowanej zmienną i porównujemy pozostałe elementy zbioru z elementem d[p min ]. Jeśli element zbioru d[i] jest mniejszy od elementu d[p min ], to znaleźliśmy nowy element minimalny. W takim przypadku zapamiętujemy jego pozycję w p min i kontynuujemy pętlę wewnętrzną. Po zakończeniu pętli wewnętrznej pmin zawiera indeks elementu minimalnego. Zamieniamy miejscami element d[j] z elementem d[p min ]. Dzięki tej operacji element minimalny znajduje się na swojej docelowej pozycji. Zwiększamy j przechodząc do kolejnego elementu zbioru i kontynuujemy pętlę zewnętrzną.. Wyznaczyć optymistyczną, pesymistyczną i średnią złoŝoność obliczeniową. 2. Wyznaczyć liczbę wykonywanych iteracji dla powyŝszych przypadków. 3. Obliczyć wartości powyŝszych wskaźników dla n = Porównać obliczone wartości z wynikami symulacji 0 liczby porównań w której dla n = 0 dla wszystkich sprawdzanych danych otrzymano taką samą liczbę porównań, równą Dla otrzymanych wyników symulacji ocenić korelację pomiędzy liczbą porównań L i liczbą sortowanych, przypadkowo ustawionych danych - N: L N

16 PRZYKŁADY ZASTOSOWAŃ W INFORMATYCE Zadanie 2 Algorytm sortowania szybkiego Idea sortowania szybkiego jest następująca: DZIEL najpierw sortowany zbiór dzielimy na dwie części w taki sposób, aby wszystkie elementy leŝące w pierwszej części (zwanej lewą partycją) były mniejsze lub równe od wszystkich elementów drugiej części zbioru (zwanej prawą partycją). ZWYCIĘśAJ kaŝdą z partycji sortujemy rekurencyjnie tym samym algorytmem. POŁĄCZ połączenie tych dwóch partycji w jeden zbiór daje w wyniku zbiór posortowany. Do utworzenia partycji musimy ze zbioru wybrać jeden z elementów, który nazwiemy piwotem. W lewej partycji znajdą się wszystkie elementy niewiększe od piwotu, a w prawej partycji umieścimy wszystkie elementy niemniejsze od piwotu. PołoŜenie elementów równych nie wpływa na proces sortowania, zatem mogą one występować w obu partycjach. RównieŜ porządek elementów w kaŝdej z partycji nie jest ustalony. Jako piwot moŝna wybierać element pierwszy, środkowy, ostatni, medianę lub losowy. Dla naszych potrzeb wybierzemy element środkowy: piwot d[(lewy + prawy) div 2] piwot - element podziałowy d[ ] - dzielony zbiór lewy - indeks pierwszego elementu prawy - indeks ostatniego elementu Dzielenie na partycje polega na umieszczeniu dwóch wskaźników na początku zbioru - i oraz j. Wskaźnik i przebiega przez zbiór poszukując wartości mniejszych od piwotu. Po znalezieniu takiej wartości jest ona wymieniana z elementem na pozycji j. Po tej operacji wskaźnik j jest przesuwany na następną pozycję. Wskaźnik j zapamiętuje pozycję, na którą trafi następny element oraz na końcu wskazuje miejsce, gdzie znajdzie się piwot. W trakcie podziału piwot jest bezpiecznie przechowywany na ostatniej pozycji w zbiorze. Na element podziałowy wybieramy element leŝący w środku dzielonej partycji. Wyliczamy jego pozycję i zapamiętujemy ją tymczasowo w zmiennej i. Robimy to po to, aby dwukrotnie nie wykonywać tych samych rachunków. Rysunek 4. Algorytm sortowania szybkiego 6

17 Element d[i] zapamiętujemy w zmiennej piwot, a do d[i] zapisujemy ostatni element partycji. Dzięki tej operacji piwot został usunięty ze zbioru. Ustawiamy zmienną j na początek partycji. Zmienna ta zapamiętuje pozycję podziału partycji. W pętli sterowanej zmienną i przeglądamy kolejne elementy od pierwszego do przedostatniego (ostatni został umieszczony na pozycji piwotu, a piwot zapamiętany). Jeśli i-ty element jest mniejszy od piwotu, to trafia on na początek partycji - wymieniamy ze sobą elementy na pozycjach i-tej i j-tej. Po tej operacji przesuwamy punkt podziałowy partycji j. Po zakończeniu pętli element z pozycji j-tej przenosimy na koniec partycji, aby zwolnić miejsce dla piwotu, po czym wstawiamy tam piwot. Zmienna j wskazuje zatem wynikową pozycję piwotu. Pierwotna partycja została podzielona na dwie partycje: partycja lewa od pozycji lewy do j - zawiera elementy mniejsze od pikotu partycja prawa od pozycji j + do pozycji prawy zawiera elementy większe lub równe piwotowi. Sprawdzamy, czy partycje te obejmują więcej niŝ jeden element. Jeśli tak, to wywołujemy rekurencyjnie algorytm sortowania szybkiego przekazując mu granice wyznaczonych partycji. Po powrocie z wywołań rekurencyjnych partycja wyjściowa jest posortowana rosnąco. Kończymy algorytm. Dla algorytmu sortowania szybkiego:. Wyznaczyć optymistyczną, pesymistyczną i średnią złoŝoność obliczeniową. 2. Wyznaczyć liczbę wykonywanych iteracji dla powyŝszych przypadków. 3. Obliczyć wartości powyŝszych wskaźników dla n = Porównać obliczone wartości z wynikami symulacji 2 liczby porównań w której dla n = 0 niezaleŝnie od posortowania danych otrzymano taką samą liczbę porównań, równą 45. Natomiast dla danych losowych otrzymano: 23, 30, 23, 22, 2, 2, 28, 2, 27, Dla otrzymanych wyników symulacji ocenić korelację pomiędzy liczbą porównań L i liczbą sortowanych, przypadkowo ustawionych danych - N: L N Zadanie 3 Otrzymano wyniki dot. liczby iteracji w procesie obliczeniowym realizowanym według dwóch algorytmów. Zweryfikować hipotezę o takiej samej wydajności obliczeniowej tych algorytmów. Zadanie 4 Otrzymano wyniki dot. czasu trwania obliczeń tym samym programem na dwóch typach komputerów. Zweryfikować hipotezę o takiej samej wydajności czasowej tych komputerów. Zadanie 5 Otrzymano wyniki dot. czasu trwania obliczeń na tym samym komputerze dwoma programami napisanymi według tego samego algorytmu. Zweryfikować hipotezę o takiej samej wydajności obliczeniowej tych programów. Zadanie 6 Otrzymano wyniki dot. czasu trwania obliczeń na tym samym komputerze dwoma programami napisanymi według dwóch róŝnych algorytmów. Zweryfikować hipotezę o takiej samej wydajności obliczeniowej par (algorytm, program)

18 20. OBLICZANIE NIEZAWODNOŚCI PROSTYCH UKŁADÓW SPRZĘTOWYCH I SYSTEMÓW PROGRAMOWYCH Uwagi wstępne Jako wprowadzenie do tematu na poniŝszym rysunku przedstawiono informacje dotyczące uruchomienia i wykonywania programu. Nr kroku. Realizowane operacje Załadowanie programu z pamięci zewnętrznej do pamięci systemowej komputera Ilustracja graficzna 2. Pobranie danych dla programu z pamięci zewnętrznej lub z urządzeń wejściowych Wykonanie algorytmu dla pobranych danych Podanie wyniku działania programu na ekranie lub zapisanie do pliku Rysunek 5. Uruchomianie i wykonywanie programu 3 M.Rawski Wstęp do Informatyki,

19 Układ sprzętowo-programowy to najczęściej spotykane rozwiązanie w przetwarzaniu danych. Część funkcji realizowane jest przez oprogramowanie, a część przez sprzęt. KaŜdy komputer jest układem sprzętowo-programowym. Termin środowisko sprzętowo-programowe oznacza przykładowo serwery oraz bazę danych i system informatyczny Pojęcie niezawodności 4 KaŜdy system, w tym takŝe komputer, jest budowany z myślę o spełnieniu określonej funkcji. Jako miarę zdolności systemu do spełnienia zadanej funkcji wprowadza się pojęcie wydajności. JednakŜe z tym pojęciem nie wiąŝe się Ŝadne stwierdzenie dotyczące przedziału czasowego, w którym system działa poprawnie. To czasowe zmniejszenie wydajności zaleŝy od niezawodności oraz moŝliwości konserwacji. Formalnie niezawodność moŝna zdefiniować w sposób następujący: Niezawodność (ang. reliability) systemu jest to prawdopodobieństwo zdarzenia polegającego na tym, Ŝe w z góry zadanym przedziale czasowym, przy określonych warunkach, system wykona zadania, do których został przeznaczony. Pojecie niezawodności moŝna interpretować jako prawdopodobieństwo przeŝycia systemu. Ilościowo moŝna opisać niezawodność za pomocą funkcji niezawodności R(t) określającej prawdopodobieństwo działania systemu w przedziale czasowym (0, t). Rysunek 6. Przykładowa funkcja niezawodności Funkcja ta ma następujące własności: t = 0 R(t) = 0 t Na początku przedziału czasowego system działa poprawnie, gdy czas rośnie nieskończenie, system na pewno przestanie działać. W przedziale czasowym (0, od) funkcja niezawodności jest monotonicznie malejąca. Za zawodność systemu Q(t) moŝna przyjąć prawdopodobieństwo niesprawności systemu. Tak więc Kolejne pojęcie to efektywność. Q(t)+R(t) = 4 W dalszych punktach niniejszego rozdziału zamieszczono przede wszystkim fragmenty ksiąŝki: Herman Kopetz, Niezawodność oprogramowania, WNT, Warszawa

20 PRZYKŁADY ZASTOSOWAŃ W INFORMATYCE System jest efektywny, jeśli zadowalająco wykonuje powierzone zadania w dłuŝszym okresie czasu. Analizując dokładniej efektywność z punktu widzenia czasu, dochodzimy do wniosku, Ŝe pojęcie to ma tak wielkie znaczenie, jak pojęcia niezawodności i moŝliwości konserwacji. Efektywność systemu Wydajność systemu MoŜliwość konserwacji systemu Niezawodność systemu Personel konserwujący Łatwość konserwacji systemu Dostępność części zamiennych Budowa systemu Dokumentacja systemu Rysunek 7. Związki miedzy wydajnością, moŝliwością konserwacji oraz niezawodnością systemu MoŜliwość konserwacji systemu jest to prawdopodobieństwo tego, Ŝe w określonym przedziale czasowym po wystąpieniu uszkodzenia (błędu) moŝna doprowadzić system do pełnych moŝliwości funkcjonalnych. Średni czas potrzebny do usunięcia błędu lub usterki nazywa się średnim czasem naprawy t n (ang. mean time to repair - MTTR). Ten interwał czasowy rozpoczyna się w chwili powstania niesprawności i kończy z ponownym przywróceniem działania systemu. MoŜliwość konserwacji jest zaleŝna od pewnej liczby czynników: moŝliwości dysponowania personelem konserwującym, umiejętności tego personelu, dostępności części zamiennych oraz łatwości konserwacji systemu. Łatwość konserwacji jest prawdopodobieństwem, Ŝe błędnie działający system moŝe być zreperowany w określonym przedziale czasowym przez przeciętny personel konserwujący, przy załoŝeniu dostępności wszystkich potrzebnych części zamiennych. PoniewaŜ moŝliwość konserwacji w kaŝdym konkretnym przypadku zaleŝy od organizacji prac konserwacyjnych, łatwość konserwacji stanowi charakterystykę systemu, zaleŝną od jego budowy, dokumentacji itd. Dla praktycznych zastosowań duŝe znaczenie ma średni czas między uszkodzeniami t mu (ang. mean time between failures - MTBF). Pojęcie to moŝna wprowadzić, gdy zachowanie się błędów systemu nie zmienia się przez dłuŝszy czas w porównaniu ze średnim czasem między uszkodzeniami. Mówi się wówczas o stałej intensywności pojawiania się błędów albo, inaczej, o stałym prawdopodobieństwie niesprawności na jednostkę czasu. Zakłada się przy tym, Ŝe system działa poprawnie na początku rozwaŝanego przedziału czasowego. Średni czas między uszkodzeniami t mu jest sumą średniego czasu do kolejnego uszkodzenia t ku (ang. mean time to fail - MTTF) oraz średniego czasu naprawy t n t mu = t ku + t n 20

21 PoniewaŜ średni czas t n w porównaniu z czasem t ku jest bardzo mały, w praktyce często nie odróŝnia się czasu t mu od t ku. Przez współczynnik gotowości systemu K rozumie się udział czasu, w którym system moŝna uŝytkować t K ku = t t ku + u DuŜy współczynnik gotowości moŝna uzyskać albo dzięki bardzo małemu czasowi t n przy niewielkim czasie t ku albo dzięki trochę większemu t n przy duŝym t ku Rysunek 8. Związki pomiędzy średnim czasem naprawy t n, średnim czasem do kolejnego uszkodzenia t ku oraz współczynnikiem gotowości systemu Sam współczynnik gotowości nie jest wystarczający do scharakteryzowania efektywności systemu, poniewaŝ znaczenie decydujące moŝe mieć liczba uszkodzeń. Redundancja Gdy w systemie uŝywa się więcej środków, niŝ to jest konieczne do wykonania jego zadań, wówczas mówi się, Ŝe system jest redundancyjny. System taki korzysta więc ze środków niezbędnych oraz z dodatkowych. Pojęcie środki" jest utaj oczywiście rozumiane w najszerszym znaczeniu tego słowa. W systemach komputerowych dotyczy to sprzętu, oprogramowania i czasu. Z punktu widzenia niezawodności bardzo duŝe znaczenie ma pojęcie redundancji. Za miarę redundancji przyjmiemy następujący stosunek środki dodatkowe r = środki niezbędne + środki dodatkowe Redundancja jest niezbędna, aby moŝna było wykryć uszkodzenie oraz je usunąć. Dopiero przy uwzględnieniu redundancji moŝna podczas projektowania wybrać jedną z dwóch całkowicie róŝnych metod zapewniających duŝą niezawodność. Tę duŝą niezawodność moŝna osiągnąć albo bez redundancji, przy uŝyciu bardzo dobrych jakościowo elementów, albo z redundancją, z zastosowaniem większej liczby elementów średniej klasy. Redundancja aktywna występuje wówczas, gdy wszystkie elementy redundacyjne systemu przez cały czas jego działania współdziałają w wykonaniu jego zadań. Gdy natomiast z elementów redundancyjnych systemu korzysta się dopiero w przypadku niesprawności jakiegoś elementu aktywnego, wówczas mówimy o redundancji pasywnej. 2

22 PRZYKŁADY ZASTOSOWAŃ W INFORMATYCE Jeśli niezawodność ma być zwiększona dzięki redundancji, naleŝy się zdecydować, czy tę redundancję naleŝy realizować na poziomie całego systemu, czy jego elementów składowych. Przy tym samym zakresie, redundancja zrealizowana na poziomie całego systemu zapewnia mniejszy przyrost niezawodności niŝ zastosowana na poziomic poszczególnych składników. Z drugiej jednak strony, zastosowanie redundancji na poziomie elementów systemu stawia w wielu przypadkach ostrzejsze wymagania w stosunku do personelu technicznego. Zlokalizowanie uszkodzenia w ramach, niesprawnej części systemu oraz wstawienie odpowiedniego elementu dodatkowego wymaga znacznie więcej wysiłku w systemie, w którym redundancja jest zrealizowana na poziomie poszczególnych elementów, niŝ w systemie z redundancją na poziomie całego systemu. RozwaŜane dotąd pojęcia z zakresu niezawodności dotyczą przede wszystkim urządzeń, tzn. sprzętu. Przyjmuje się przy tym w domyśle, Ŝe poprawnie zaprojektowany element, na skutek zjawiska starzenia, po pewnym czasie nie moŝe juŝ spełniać swojej funkcji I powoduje zakłócenia w całym systemie. Sytuacja w oprogramowaniu jest nieco odmienna. Tutaj nie moŝe pojawić się uszkodzenie w przyjętym ogólnie sensie, a jedynie moŝe wystąpić błąd projektowy. Błąd taki występujący w jakiejś sekwencji programu uwidocznia się jednak dopiero wówczas, gdy ta sekwencja jest wykonywana. Dlatego teŝ niezwykle waŝny jest związek między statycznym tekstem programu i dynamicznym jego wykonaniem Poprawność, niezawodność i odporność oprogramowania Poprawność programu dotyczy zgodności między wymaganiami funkcjonalnymi i tekstem programu. Jest ona natomiast niezaleŝna od ogólnego zastosowania programu. Kolejne waŝne pojęcie to niezawodność oprogramowania. Niezawodność oprogramowania moŝna rozwaŝać tylko w powiązaniu z ogólnym wykorzystaniem tego oprogramowania. Niezawodność jest (co najmniej) relacją dwuargumentową pomiędzy oprogramowaniem i uŝytkownikiem albo relacją trójargumentową pomiędzy oprogramowaniem, uŝytkownikiem i czasem. Proces obliczeniowy realizowany jest w kolejnych krokach i =,2,... N. Poprawność obliczeń w tych krokach zaleŝy od tego, czy dane wejściowe (początkowe w kroku i pośrednie w kolejnych) naleŝą do określonej dziedziny D i. Proces obliczeniowy moŝna uwaŝać za realizację pewnej funkcji, która kaŝdemu elementowi dziedziny przypisuje odpowiedni element przeciwdziedziny. Gdy w procesie obliczeniowym wystąpi błąd, wówczas przyporządkowanie nie jest takie, jakie być powinno; oznacza to, Ŝe w niektórych elementach dziedziny nie otrzymuje się spodziewanych wyników. Dysponując metodą pozwalającą stwierdzić dla wszystkich elementów dziedziny, czy obliczenie jest poprawne czy fałszywe, moŝna wprowadzić funkcję błędu e(i) określoną na całej dziedzinie: 0 jeŝeli wyniki obliczeń wykonywanych w i-tym kroku są poprawne e(i) = jeŝeli wyniki obliczeń wykonywanych w i-tym kroku sa falszywe lub obliczenia się nie kończą Znając dla kaŝdego zastosowania oraz dla wszystkich elementów dziedziny prawdopodobieństwo p(i) naleŝenia danych w i-tym kroku do dziedziny poprawności, przy czym N p(i) = i= 22

23 moŝna określić prawdopodobieństwo wystąpienia błędu programowego dotyczącego jednej danej jako N λ = p(i) e(i) i= NaleŜy podkreślić, Ŝe wybór konkretnej danej ze zbioru wszystkich danych jest zdarzeniem przypadkowym. Niezawodność oprogramowania moŝna więc zdefiniować następująco: Niezawodność oprogramowania jest to prawdopodobieństwo, Ŝe system oprogramowania wykona stawiane przed nim zadanie dla określonej liczby danych wejściowych przy ustalonych warunkach i przy załoŝeniu, Ŝe sprzęt działa poprawnie i dane wejściowe są bezbłędne. RozwaŜając oprogramowanie moŝna stwierdzić, Ŝe dla kaŝdej danej jest określony wynik obliczenia. Stanowi to podstawową róŝnicę w stosunku do niezawodności sprzętu. Przy uszkodzeniu związanym ze starzeniem nie trzeba rozwaŝać konkretnej sytuacji, poniewaŝ moŝna przyjąć, Ŝe sprzęt uprzednio działał poprawnie we wszystkich sytuacjach, a przypadkowość działania wynika z awarii jednego z elementów sprzętu - błędy projektowania sprzętu odpowiadają błędom oprogramowania. Częstość pojawiania się błędów oprogramowania moŝe się zmienić tylko wówczas, gdy albo zmienia się funkcja błędu, tzn. są dokonywane zmiany programu, albo zmienia się rozkład danych, tzn. program jest umieszczony w nowym otoczeniu. Przykład zmiany częstości pojawiania się błędów spowodowanych zmianą danych moŝna łatwo znaleźć w ramach systemu programów dla wewnętrznych potrzeb przedsiębiorstwa. Gdy tylko zmienią się warunki prób, zmieni się równieŝ skokowo częstość występowania błędów. Jeśli ani zakres danych nie ulega zmianie, ani program nic jest modyfikowany, to częstość pojawiania się błędów nie moŝe się zmieniać. Przy tych załoŝeniach błędy oprogramowania pojawiają się ze stałą częstością. Związek między wprowadzonym pojęciem niezawodności w jednostce czasu oraz prawdopodobieństwem pojawienia się błędu związanego z pojedynczą daną moŝna wyrazić za pomocą szybkości wprowadzania danych do systemu. λ t = λ r przy czym: λ t - liczba błędów w czasie t λ - prawdopodobieństwo wystąpienia błędu programowego związanego z pojedynczą daną r - liczba danych na jednostkę czasu (szybkość wprowadzania danych) Wszystkie te stwierdzenia podano tutaj po to, aby podane wcześniej rozwaŝania z dziedziny teorii niezawodności moŝna było odnieść równieŝ do systemów oprogramowania, W wielu jednak przypadkach naleŝy opierać się o prawdopodobieństwo wystąpienia błędu dla jednej danej. Odporność oprogramowania Przez pojęcie odporności oprogramowania rozumie się zaleŝność między niezawodnością oprogramowania i niezawodnością systemu. Ta ostatnia jest przy tym definiowana następująco: Niezawodność systemu jest to prawdopodobieństwo, Ŝe system komputerowy wykona zamierzone zadanie w ustalonym czasie i przy ustalonych warunkach zewnętrznych. 23

24 PRZYKŁADY ZASTOSOWAŃ W INFORMATYCE Przez pojecie warunków zewnętrznych rozumie się rozkład danych, szybkość wprowadzania danych, średnią liczbę błędów w danych wejściowych, a takŝe warunki fizyczne, w których znajduje się komputer. Definicja niezawodności systemu róŝni się od definicji niezawodności oprogramowania tym, Ŝe nie mają tutaj zastosowania czysto teoretyczne załoŝenia bezbłędnej pracy sprzętu i bezbłędności danych. W warunkach rzeczywistych trzeba się liczyć z uszkodzeniami sprzętu i błędami w danych wejściowych głównym zadaniem oprogramowania jest zmniejszenie skutków tych błędów w określonym zastosowaniu. Zdolność oprogramowania do wykonania tych zadań nosi nazwę odporności oprogramowania. Pojęcie to moŝna zdefiniować następująco: System oprogramowania jest odporny, jeśli skutki uszkodzenia sprzętu lub błędu w danych wejściowych w określonym zastosowaniu są odwrotnie proporcjonalne do prawdopodobieństwa wystąpienia tego błędu w tym zastosowaniu Zwiększanie niezawodności oprogramowania Jednym ze sposobów zwiększanie niezawodności oprogramowania jest wprowadzenie mechanizmu wykrywania błędów. Przy wykrywaniu błędu zakłada się, Ŝe wyniki kaŝdego kroku przetwarzania mogą być odniesione do jakichś kryteriów oceny. Jeśli wynik odpowiada kryteriom oceny, jest on poprawny, jeśli nie jest błędny (w stosunku do tych kryteriów oceny). Automatyczne wykrywanie błędów jest moŝliwe tylko wówczas, gdy takie kryteria oceny są zawarte w samym systemie. System musi więc zawierać redundancję i uŝywać więcej zasobów, niŝ to jest bezwzględnie konieczne dla rozwiązania podstawionego zadania. W dalszym ciągu przyjmiemy, Ŝe te dodatkowe zasoby słuŝące do wykrywania błędów są razem zebrane w moduł wykrywania błędów, oddzielony od właściwego modułu przetwarzającego. W praktyce to wykrywanie błędów moŝna łatwo oddzielić, np. badanie nadmiaru za pomocą jednego rozkazu albo wykonanie duŝej części programu, która bada zgodność wyników obliczeń. Z punktu widzenia niezawodności funkcję wykrywania błędów moŝna włączyć do ciągu funkcji przetwarzających. Oznacza to, Ŝe kaŝdy błąd w module wykrywania błędów ma bezpośredni wpływ na niezawodność całego systemu. Dla dalszej analizy przyjmiemy, Ŝe system składa się tylko z modułu przetwarzającego i modułu wykrywania błędów. Moduł przetwarzający Moduł przetwarzający Moduł wykrywania błędów Rysunek 9. System bez modułu wykrywania błędów oraz z modułem wykrywania błędów Wyniki tego prostego systemu moŝna podzielić na trzy następujące rodzaje: 24

25 Wyniki zamierzone - są to te wyniki, które w określonych warunkach odpowiadają wyobraŝeniom uŝytkownika i dlatego są poprawne. Wyniki faktyczne - są to wszystkie wyniki uzyskane z modułu przetwarzającego. Wyniki uznawane - są to te wyniki, które zaakceptował mechanizm wykrywania błędów. Na rysunku 2 przedstawiono zbiory tych wyników w postaci wykresu dwuwymiarowego. Teoretycznie, zaznaczone na rysunku trzy zakresy powinny się całkowicie pokrywać. Ze względu jednak na błędy w module przetwarzającym oraz w module wykrywania błędów wyniki pokrywają się tylko częściowo. Rysunek 0. Związek między faktycznymi F, zamierzonymi Z i uznawanymi U wynikami programu W polu zakreskowanym poziomo występuje niezgodność wyników faktycznych i zamierzonych, pole zakreskowane pionowo odpowiada powaŝnym błędom, w polu zaś zakropkowanym występują ograniczenia spowodowane uznaniem wyniku za błędny. Klasyfikacji błędów moŝna dokonać ze względu na róŝne kryteria. Szczególne znaczenie ma podział według sposobu wykrycia błędu, poniewaŝ moŝe być dokonany bezpośrednio na podstawie zaobserwowanego działania (skutku) błędu i nie zakłada konieczności trudnego do przeprowadzenia rozpoznania (diagnozy). Gdy oprócz miejsca wykrycia błędu uwzględni się jeszcze zamierzony zakres danych wejściowych dla systemu oprogramowania, wówczas otrzymuje się podział przedstawiony w poniŝszej tabeli. Tabela 2. Podział błędów według sposobu ich wykrywania i naleŝenia danej do przyjętej dziedziny Reakcja systemu Dana Poza przyjęła dziedziną (błędna dana) Wewnątrz przyjętej dziedziny Odrzucenie danej (wykrycie błędu przez system W porządku Błąd rodzaju I Wynik fałszywy (wykrycie błędu poza systemem) Błąd rodzaju II (powaŝny) Błąd rodzaju III (powaŝny) Załamanie systemu Błąd rodzaju IV (powaŝny) Błąd rodzaju V (powaŝny) Konkretne skutki poszczególnych rodzajów błędów bardzo silnie zaleŝą od stawianych przez zastosowania wymagań. Na ogół błąd rodzaju I - system stwierdza, Ŝe nie moŝe przetworzyć danej nie jest lak powaŝny, jak błędy innych rodzajów przedstawionych w tabl. 3.. Wyjątek stanowią tutaj systemy nadąŝne, w których odrzucenie jednej danej moŝe doprowadzić do katastrofalnych skutków, jeśli w określonym przedziale czasowym na podstawie tej danej powinna nastąpić reakcja systemu. Błędy rodzajów II V są traktowane jako powaŝne. Błędne wyniki, jeśli nie mieszczą się w wyznaczonej przez zastosowanie tolerancji, podrywają zaufanie uŝytkownika do systemu i czynią przez to system niepoŝądanym. Być moŝe nie tak krytyczne, jednak równieŝ powaŝne, jest załamanie się systemu. PoniewaŜ po załamaniu się systemu nie otrzymuje się Ŝadnych wyników, przeto dla wykrycia błędu trzeba ponownie zbadać funkcje systemu, co jest dokonywane poza, tym systemem. 25

26 PRZYKŁADY ZASTOSOWAŃ W INFORMATYCE W dalszym ciągu rozwaŝań będą rozróŝniane następujące rodzaje błędów występujących w module przetwarzającym i module wykrywania błędów oraz odpowiadające tym rodzajom błędów prawdopodobieństwa: Moduł przetwarzający p 0 - prawdopodobieństwo, Ŝe moduł przetwarzający nie da Ŝadnych wyników, tzn. nastąpi załamanie systemu; p - prawdopodobieństwo, Ŝe wynik modułu przetwarzającego nie będzie poprawny. Moduł wykrywania błędów e 0 - prawdopodobieństwo, Ŝe moduł wykrywania błędów nie da Ŝadnych wyników, tzn. nastąpi załamanie systemu; e - prawdopodobieństwo, Ŝe moduł wykrywania błędów nie uzna wyniku zamierzonego, czyli poprawnego; e 2 - prawdopodobieństwo, Ŝe moduł wykrywania błędów uzna wynik niezamierzony (tzn. niepoprawny) za poprawny. Tabela 3. Rodzaje błędów w systemie bez modułu wykrywania błędów p 0 p P P 0 Poprawnie PowaŜny błąd rodzaju II - III PowaŜny błąd rodzaju IV - V Na podstawie struktury systemu określonej na rys. 5. oraz opisanych rodzajów błędów moŝna zbudować odpowiednie drzewo decyzyjne oraz obliczyć prawdopodobieństwa występowania wprowadzonych w tabeli rodzajów błędów (tabele 2 i 3). Tabela 4. Rodzaje błędów w systemie z modułem wykrywania błędów p 0 p P e 0 e0 e 0 e e e 2 e 2 e 0 p 0 Poprawnie Błąd rodzaju I Błąd rodzaju IV-V Błąd rodzaju I Błąd rodzaju II-III Błąd rodzaju IV-V Błąd rodzaju IV-V 26

27 W tabeli 5 zestawiono prawdopodobieństwa wystąpienia róŝnych rodzajów błędów. Prawdopodobieństwo Tabela 5. Prawdopodobieństwa wystąpienia róŝnych rodzajów błędów Dotyczy S - System bez modułu wykrywania błędów S2 - System z modułem wykrywania błędów Iloraz prawdopodobieństw dla obu systemów PS / PS2 Prawdopodobieństwo, Ŝe wynik jest poprawny (-p 0 )(-p ) (-p 0 )(-p )(-e0)(-e) (-e0)(-e) Prawdopodobieństwo wystąpienia błędu rodzaju I - (-p 0 )(-p )e + + (-p 0 )p (-e 0 )(-e 2 ) - Prawdopodobieństwo wystąpienia błędu rodzaju II-III (błąd danych) Prawdopodobieństwo wystąpienia błędu rodzaju IV-V (załamanie systemu) (-p 0 )p (-p 0 )p (-e 0 )e 2 (-e 0 )e 2 p 0 (-p 0 )e 0 +p 0 +e 0 /p 0 -e 0 Z tabeli tej wynika bezpośrednio, Ŝe niezawodność systemu zawierającego wykrywanie błędów jest nieco mniejsza niŝ odpowiadającego mu systemu bez wykrywania błędów. Z drugiej jednak strony znacznie zmniejsza się prawdopodobieństwo pojawienia się błędów rodzaju III. tzn. niepoprawnych wyników). Wystąpienie błędu rodzaju I (system odmawia przyjęcia danej) jest moŝliwe dopiero po wprowadzeniu do systemu modułu wykrywania błędów. Potrzebę wykrywania błędów moŝna ocenić tylko w powiązaniu z konkretnym zastosowaniem. Zmniejszenie prawdopodobieństwa przyjęcia błędnego wyniku jest najczęściej duŝo waŝniejsze niŝ wszystkie inne skutki wykrywania błędów. W systemie nadąŝnym, którego zadanie ma być wykonane tylko jeden raz (np. start rakiety), niezawodność moŝe być tak waŝna, Ŝe juŝ samo wykrywanie błędów okazuje się wadą. Jeśli w ciągu ułamka sekundy trzeba zareagować na impuls zewnętrzny, to błędna reakcja nie jest wcale gorsza niŝ brak reakcji w ogóle. Automatyczne wykrywanie błędów jest konieczne dla uniknięcia błędów powaŝnych oraz dla wprowadzenia automatycznego usuwania błędów rodzaju T Obliczanie niezawodności podstawowych konfiguracji układów sprzętowych Estymacja funkcji niezawodności metodami statystycznymi wymaga duŝej liczby doświadczeń. Doświadczenia te przeprowadza się zawsze w ograniczonym przedziale czasu i dlatego otrzymujemy informację o niezawodności elementu tylko w tym przedziale czasu. W zasadzie nic nie moŝemy powiedzieć o niezawodności elementu poza granicami tego przedziału, tzn. nie moŝemy ekstrapolować funkcji niezawodności. Sytuacja zmienia się diametralnie, gdy znamy postać funkcji niezawodności z dokładnością do jednego lub kilku parametrów. Postać funkcji niezawodności moŝna znaleźć dwoma sposobami: Statystycznie, tzn. sprawdzając hipotezę o przynaleŝności rozkładu do określonej klasy. Fizycznie, tzn. budując fizyczny model uszkodzeń i badając go metodami matematycznymi. Wymaga to obszernej i głębokiej informacji o naturze uszkodzeń. Przykłady rozkładów wykorzystywanych w teorii niezawodności: Rozkład wykładniczy F(t) = e -λt 27

28 PRZYKŁADY ZASTOSOWAŃ W INFORMATYCE 2 C (x τ) Ucięty rozkład normalny F(t)= exp 2 2πσ t 2σ Ŝe F(0)=, a τ jest oczekiwanym czasem pracy Weibulla F(t)= exp [-(λt) p ] dx, gdzie stała C jest tak wybrana, Rozpatrzymy teraz niezawodność systemu składającego się z określonej konfiguracji elementów składowych, przykłady połączeń elementów przedstawiono ponizej. Połączenie szeregowe 3 elementów Połączenie równoległe 3 elementów Wyznaczymy teraz niezawodność systemu, rozumiane jako nazywamy prawdopodobieństwo jego prawidłowej pracy w ciągu pewnego czasu. Niezawodność systemu zaleŝy oczywiście od niezawodności jego elementów (wyznaczanych na podstawie funkcji niezawodności patrz powyŝej) oraz ich konfiguracji. Połączenie szeregowe Wykonywanie ciągu kolejnych operacji Obliczymy niezawodność układu składającego się z trzech szeregowo połączonych elementów o niezawodnościach odpowiednio równych p, p 2, p 3. Zakładamy, Ŝe elementy te pracują od siebie niezaleŝnie. Niech A i oznacza zdarzenie, Ŝe w ciągu czasu T nie zepsuje się i-ty element (i =,2,3), zaś N to niezawodność układu. Układ będzie pracował, jeśli pracować będą wszystkie elementy tego układu, więc N = P(A A 2 A 3 ) ale zdarzania A, A 2, A 3, jak wynika z treści zadania, są niezaleŝne, więc N = P(A )P(A 2 )P(A 3 ) = p p 2 p 3 Ogólnie, niezawodność układu złoŝonego z n niezaleŝnie pracujących elementów połączonych szeregowo o niezawodnościach odpowiednio równych p, p 2,..., p n wyraŝa się wzorem N = p p 2... p n Połączenie równoległe Wykonywanie równoczesne operacji Obliczymy niezawodność układu składającego się z trzech równolegle połączonych elementów o niezawodnościach odpowiednio równych p, p 2, p 3. Zakładamy, Ŝe elementy te pracują od siebie niezaleŝnie. Zamiast niezawodności N łatwiej jest obliczyć zawodność Z, tj. prawdopodobieństwo, Ŝe w ciągu czasu T układ przestanie pracować. Niech A i oznacza zdarzenie, Ŝe w ciągu czasu T nie zepsuje się i-ty element (i =,2,3), wtedy ' A i oznacza, Ŝe w ciągu tego czasu zepsuje się i-ty element. Układ nie będzie pracował, jeśli zepsują się wszystkie elementy, więc ' ' ' ' ' ' Z = P(A A A ) = P(A )P(A )P(A ) = ( P(A ))( P(A 2 ))( P(A 3 )) = = ( p )( p 2 )( p 3 ) 28

29 Ale niezawodność jest dopełnieniem do zawodności N = Z, więc N = ( p ) ( p 2 ) ( p 3 ) Ogólnie, niezawodność układu złoŝonego z n niezaleŝnie pracujących elementów połączonych równolegle o niezawodnościach odpowiednio równych p, p 2,..., p n wyraŝa się wzorem: N = - (-p ) (-p 2 )... (-p n ) Połączenie równoległe elementów wykonujących tą sama operację (wprowadzenie nadmiaru mocy obliczeniowej) stosuje się w kluczowych miejscach systemu w celu podwyŝszenia jego niezawodności. ========= KaŜdy system jest budowany z myślą o spełnieniu określonej funkcji. Jako miarę zdolności systemu do spełnienia zadanej funkcji wprowadza się pojęcie wydajności. JednakŜe z tym pojęciem nie wiąŝe się Ŝadne stwierdzenie dotyczące przedziału czasowego, w którym system działa poprawnie. To czasowe zmniejszenie wydajności zaleŝy od niezawodności oraz moŝliwości konserwacji. Niezawodność (ang. reliability) jest to własność obiektu mówiąca o tym, czy pracuje on poprawnie (spełnia wszystkie powierzone mu funkcje i czynności) przez wymagany czas i w określonych warunkach eksploatacji (w danym zespole czynników wymuszających). Niezawodność - bez dodatkowych określeń jest rozumiana jako niezawodność techniczna. Niezawodność obiektu jest to jego zdolność do spełnienia stawianych mu wymagań. Wielkością charakteryzującą zdolność do spełnienia wymagań moŝe być prawdopodobieństwo ich spełniania. Zatem niezawodność obiektu jest to prawdopodobieństwo spełnienia przez obiekt stawianych mu wymagań. Charakteryzując obiekt za pomocą jego zdatności do pracy moŝna podać poniŝsza definicję niezawodności: Niezawodność obiektu jest to prawdopodobieństwo, Ŝe wartości parametrów określających istotne właściwości obiektu nie przekroczą w ciągu okresu zdatności (0, t) dopuszczalnych granic w określonych warunkach eksploatacji obiektu. Niezawodność jest zespołem właściwości opisujących gotowość obiektu i wpływające na nią: nieuszkadzalność, obsługiwalność i zapewnienia środków obsługi. Jeśli mówimy o dostępności to oczywistym jest, Ŝe naleŝny liczyć się teŝ z niedostępnością. NaleŜy być świadomym, Ŝe np. gwarantowany poziom dostępności rzędu 99,9 % to jednocześnie czas niedostępności na poziomie 525 min/ rok. Parametry niezawodności: Średni okres międzyawaryjny wartość oczekiwana czasu miedzy kolejnymi uszkodzeniami elementów systemu powodujący niezdolność realizacji funkcji systemu Średni czas napraw wartość oczekiwana czasu jaki upływa od uszkodzenia systemu do chwili w której jest on ponownie zdolny do realizacji swoich funkcji 29

METODY PROBABILISTYCZNE I STATYSTYKA

METODY PROBABILISTYCZNE I STATYSTYKA METODY PROBABILISTYCZNE I STATYSTYKA INFORMACJE UZUPEŁNIAJĄCE SPIS TREŚCI. ANALIZA ALGORYTMÓW POD WZGLĘDEM ŚREDNIEGO ZACHOWANIA...3.. UWAGI WSTĘPNE...3.2. SZACOWANIE RODZAJU / KLASY ZŁOśONOŚCI OBLICZENIOWEJ

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

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

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

Bardziej szczegółowo

INFORMATYKA SORTOWANIE DANYCH.

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

Bardziej szczegółowo

Algorytmy i struktury danych

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

Bardziej szczegółowo

Algorytmy sortujące i wyszukujące

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

Bardziej szczegółowo

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

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

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

Bardziej szczegółowo

Sortowanie 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

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

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

Bardziej szczegółowo

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

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

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

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

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

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

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

Złożoność obliczeniowa zadania, zestaw 2 Złożoność obliczeniowa zadania, zestaw 2 Określanie złożoności obliczeniowej algorytmów, obliczanie pesymistycznej i oczekiwanej złożoności obliczeniowej 1. Dana jest tablica jednowymiarowa A o rozmiarze

Bardziej szczegółowo

Algorytmy i struktury danych Matematyka III sem.

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

Bardziej szczegółowo

Statystyka hydrologiczna i prawdopodobieństwo zjawisk hydrologicznych.

Statystyka hydrologiczna i prawdopodobieństwo zjawisk hydrologicznych. Statystyka hydrologiczna i prawdopodobieństwo zjawisk hydrologicznych. Statystyka zajmuje się prawidłowościami zaistniałych zdarzeń. Teoria prawdopodobieństwa dotyczy przewidywania, jak często mogą zajść

Bardziej szczegółowo

Programowanie w VB Proste algorytmy sortowania

Programowanie w VB Proste algorytmy sortowania Programowanie w VB Proste algorytmy sortowania Sortowanie bąbelkowe Algorytm sortowania bąbelkowego polega na porównywaniu par elementów leżących obok siebie i, jeśli jest to potrzebne, zmienianiu ich

Bardziej szczegółowo

Zapisywanie algorytmów w języku programowania

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

Bardziej szczegółowo

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny Klasa 2 INFORMATYKA dla szkół ponadgimnazjalnych zakres rozszerzony Założone osiągnięcia ucznia wymagania edukacyjne na poszczególne oceny Algorytmy 2 3 4 5 6 Wie, co to jest algorytm. Wymienia przykłady

Bardziej szczegółowo

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

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

Bardziej szczegółowo

1. Znajdowanie miejsca zerowego funkcji metodą bisekcji.

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

Bardziej szczegółowo

Laboratorium nr 7 Sortowanie

Laboratorium nr 7 Sortowanie Laboratorium nr 7 Sortowanie 1. Sortowanie bąbelkowe (BbS) 2. Sortowanie przez wstawianie (IS) 3. Sortowanie przez wybieranie (SS) Materiały Wyróżniamy następujące metody sortowania: 1. Przez prostą zamianę

Bardziej szczegółowo

Sortowanie - wybrane algorytmy

Sortowanie - wybrane algorytmy Sortowanie - wybrane algorytmy Aleksandra Wilkowska Wydział Matematyki - Katedra Matematyki Stosowanej Politechika Wrocławska 2 maja 2018 1 / 39 Plan prezentacji Złożoność obliczeniowa Sortowanie bąbelkowe

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Statystyki: miary opisujące rozkład! np. : średnia, frakcja (procent), odchylenie standardowe, wariancja, mediana itd.

Statystyki: miary opisujące rozkład! np. : średnia, frakcja (procent), odchylenie standardowe, wariancja, mediana itd. Wnioskowanie statystyczne obejmujące metody pozwalające na uogólnianie wyników z próby na nieznane wartości parametrów oraz szacowanie błędów tego uogólnienia. Przewidujemy nieznaną wartości parametru

Bardziej szczegółowo

Testowanie hipotez statystycznych

Testowanie hipotez statystycznych Temat Testowanie hipotez statystycznych Kody znaków: Ŝółte wyróŝnienie nowe pojęcie pomarańczowy uwaga kursywa komentarz 1 Zagadnienia omawiane na zajęciach 1. Idea i pojęcia teorii testowania hipotez

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

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

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

ANALIZA HIERARCHICZNA PROBLEMU W SZACOWANIU RYZYKA PROJEKTU INFORMATYCZNEGO METODĄ PUNKTOWĄ. Joanna Bryndza

ANALIZA HIERARCHICZNA PROBLEMU W SZACOWANIU RYZYKA PROJEKTU INFORMATYCZNEGO METODĄ PUNKTOWĄ. Joanna Bryndza ANALIZA HIERARCHICZNA PROBLEMU W SZACOWANIU RYZYKA PROJEKTU INFORMATYCZNEGO METODĄ PUNKTOWĄ Joanna Bryndza Wprowadzenie Jednym z kluczowych problemów w szacowaniu poziomu ryzyka przedsięwzięcia informatycznego

Bardziej szczegółowo

Technologia informacyjna

Technologia informacyjna Technologia informacyjna Pracownia nr 9 (studia stacjonarne) - 05.12.2008 - Rok akademicki 2008/2009 2/16 Bazy danych - Plan zajęć Podstawowe pojęcia: baza danych, system zarządzania bazą danych tabela,

Bardziej szczegółowo

Typowe błędy w analizie rynku nieruchomości przy uŝyciu metod statystycznych

Typowe błędy w analizie rynku nieruchomości przy uŝyciu metod statystycznych Typowe błędy w analizie rynku nieruchomości przy uŝyciu metod statystycznych Sebastian Kokot XXI Krajowa Konferencja Rzeczoznawców Majątkowych, Międzyzdroje 2012 Rzetelnie wykonana analiza rynku nieruchomości

Bardziej szczegółowo

Wprowadzenie do analizy korelacji i regresji

Wprowadzenie do analizy korelacji i regresji Statystyka dla jakości produktów i usług Six sigma i inne strategie Wprowadzenie do analizy korelacji i regresji StatSoft Polska Wybrane zagadnienia analizy korelacji Przy analizie zjawisk i procesów stanowiących

Bardziej szczegółowo

Temat: BADANIE NIEZALEśNOŚCI DWÓCH CECH JAKOŚCIOWYCH TEST CHI KWADRAT. Anna Rajfura 1

Temat: BADANIE NIEZALEśNOŚCI DWÓCH CECH JAKOŚCIOWYCH TEST CHI KWADRAT. Anna Rajfura 1 Temat: BADANIE NIEZALEśNOŚCI DWÓCH CECH JAKOŚCIOWYCH TEST CHI KWADRAT Anna Rajfura 1 Przykład W celu porównania skuteczności wybranych herbicydów: A, B, C sprawdzano, czy masa chwastów na poletku zaleŝy

Bardziej szczegółowo

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie

Bardziej szczegółowo

WyŜsza Szkoła Zarządzania Ochroną Pracy MS EXCEL CZ.2

WyŜsza Szkoła Zarządzania Ochroną Pracy MS EXCEL CZ.2 - 1 - MS EXCEL CZ.2 FUNKCJE Program Excel zawiera ok. 200 funkcji, będących predefiniowanymi formułami, słuŝącymi do wykonywania określonych obliczeń. KaŜda funkcja składa się z nazwy funkcji, która określa

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Algorytmy na tablicach Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) WP w. III Jesień 2013 1 / 23 Dwadzieścia pytań Zasady 1 Osoba 1 wymyśla hasło z ustalonej

Bardziej szczegółowo

Wprowadzenie do złożoności obliczeniowej

Wprowadzenie do złożoności obliczeniowej problemów Katedra Informatyki Politechniki Świętokrzyskiej Kielce, 16 stycznia 2007 problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów

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

PLAN WYNIKOWY DLA KLASY DRUGIEJ POZIOM PODSTAWOWY I ROZSZERZONY. I. Proste na płaszczyźnie (15 godz.)

PLAN WYNIKOWY DLA KLASY DRUGIEJ POZIOM PODSTAWOWY I ROZSZERZONY. I. Proste na płaszczyźnie (15 godz.) PLAN WYNIKOWY DLA KLASY DRUGIEJ POZIOM PODSTAWOWY I ROZSZERZONY I. Proste na płaszczyźnie (15 godz.) Równanie prostej w postaci ogólnej Wzajemne połoŝenie dwóch prostych Nierówność liniowa z dwiema niewiadomymi

Bardziej szczegółowo

Modelowanie niezawodności prostych struktur sprzętowych

Modelowanie niezawodności prostych struktur sprzętowych Modelowanie niezawodności prostych struktur sprzętowych W ćwiczeniu tym przedstawione zostaną proste struktury sprzętowe oraz sposób obliczania ich niezawodności przy założeniu, że funkcja niezawodności

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Algorytm 1. Termin algorytm jest używany w informatyce

Bardziej szczegółowo

Statystyki: miary opisujące rozkład! np. : średnia, frakcja (procent), odchylenie standardowe, wariancja, mediana itd.

Statystyki: miary opisujące rozkład! np. : średnia, frakcja (procent), odchylenie standardowe, wariancja, mediana itd. Wnioskowanie statystyczne obejmujące metody pozwalające na uogólnianie wyników z próby na nieznane wartości parametrów oraz szacowanie błędów tego uogólnienia. Przewidujemy nieznaną wartości parametru

Bardziej szczegółowo

Przykładowe sprawozdanie. Jan Pustelnik

Przykładowe sprawozdanie. Jan Pustelnik Przykładowe sprawozdanie Jan Pustelnik 30 marca 2007 Rozdział 1 Sformułowanie problemu Tematem pracy jest porównanie wydajności trzech tradycyjnych metod sortowania: InsertionSort, SelectionSort i BubbleSort.

Bardziej szczegółowo

Sortowanie zewnętrzne

Sortowanie zewnętrzne Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski Sortowanie zewnętrzne 1 Wstęp Bardzo często

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

Wykład Centralne twierdzenie graniczne. Statystyka matematyczna: Estymacja parametrów rozkładu

Wykład Centralne twierdzenie graniczne. Statystyka matematyczna: Estymacja parametrów rozkładu Wykład 11-12 Centralne twierdzenie graniczne Statystyka matematyczna: Estymacja parametrów rozkładu Centralne twierdzenie graniczne (CTG) (Central Limit Theorem - CLT) Centralne twierdzenie graniczne (Lindenberga-Levy'ego)

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

Wstęp do teorii niepewności pomiaru. Danuta J. Michczyńska Adam Michczyński

Wstęp do teorii niepewności pomiaru. Danuta J. Michczyńska Adam Michczyński Wstęp do teorii niepewności pomiaru Danuta J. Michczyńska Adam Michczyński Podstawowe informacje: Strona Politechniki Śląskiej: www.polsl.pl Instytut Fizyki / strona własna Instytutu / Dydaktyka / I Pracownia

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

Analiza algorytmów zadania podstawowe

Analiza algorytmów zadania podstawowe Analiza algorytmów zadania podstawowe Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r 0 Jaka wartość zostanie zwrócona przez powyższą

Bardziej szczegółowo

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście

Bardziej szczegółowo

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

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

Bardziej szczegółowo

POJĘCIA WSTĘPNE. STATYSTYKA - nauka traktująca o metodach ilościowych badania prawidłowości zjawisk (procesów) masowych.

POJĘCIA WSTĘPNE. STATYSTYKA - nauka traktująca o metodach ilościowych badania prawidłowości zjawisk (procesów) masowych. [1] POJĘCIA WSTĘPNE STATYSTYKA - nauka traktująca o metodach ilościowych badania prawidłowości zjawisk (procesów) masowych. BADANIE STATYSTYCZNE - ogół prac mających na celu poznanie struktury określonej

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

PLAN REALIZACJI MATERIAŁU NAUCZANIA Z INFORMATYKI II. Uczeń umie: Świadomie stosować się do zasad regulaminów (P).

PLAN REALIZACJI MATERIAŁU NAUCZANIA Z INFORMATYKI II. Uczeń umie: Świadomie stosować się do zasad regulaminów (P). PLAN REALIZACJI MATERIAŁU NAUCZANIA Z INFORMATYKI II DZIAŁ I: KOMPUTER W ŻYCIU CZŁOWIEKA. 1. Lekcja organizacyjna. Zapoznanie uczniów z wymaganiami edukacyjnymi i PSP. 2. Przykłady zastosowań komputerów

Bardziej szczegółowo

Statystyka i opracowanie danych Podstawy wnioskowania statystycznego. Prawo wielkich liczb. Centralne twierdzenie graniczne. Estymacja i estymatory

Statystyka i opracowanie danych Podstawy wnioskowania statystycznego. Prawo wielkich liczb. Centralne twierdzenie graniczne. Estymacja i estymatory Statystyka i opracowanie danych Podstawy wnioskowania statystycznego. Prawo wielkich liczb. Centralne twierdzenie graniczne. Estymacja i estymatory Dr Anna ADRIAN Paw B5, pok 407 adrian@tempus.metal.agh.edu.pl

Bardziej szczegółowo

Testowanie hipotez statystycznych. Wnioskowanie statystyczne

Testowanie hipotez statystycznych. Wnioskowanie statystyczne Testowanie hipotez statystycznych Wnioskowanie statystyczne Hipoteza statystyczna to dowolne przypuszczenie co do rozkładu populacji generalnej (jego postaci funkcyjnej lub wartości parametrów). Hipotezy

Bardziej szczegółowo

METODY PROBABILISTYCZNE I STATYSTYKA

METODY PROBABILISTYCZNE I STATYSTYKA METODY PROBABILISTYCZNE I STATYSTYKA PROPOZYCJE DYDAKTYCZNE Opracował Marek Cieciura SPIS TREŚCI 1. ROZLICZENIE GODZINOWE... 2 2. CELE ZAJĘĆ Z PRZEDMIOTU... 2 3. ORGANIZACJA ZAJĘĆ... 2 3.1. KLUCZOWE ZAŁOśENIA...

Bardziej szczegółowo

Doświadczalnictwo leśne. Wydział Leśny SGGW Studia II stopnia

Doświadczalnictwo leśne. Wydział Leśny SGGW Studia II stopnia Doświadczalnictwo leśne Wydział Leśny SGGW Studia II stopnia Metody nieparametryczne Do tej pory omawialiśmy metody odpowiednie do opracowywania danych ilościowych, mierzalnych W kaŝdym przypadku zakładaliśmy

Bardziej szczegółowo

Sposoby prezentacji problemów w statystyce

Sposoby prezentacji problemów w statystyce S t r o n a 1 Dr Anna Rybak Instytut Informatyki Uniwersytet w Białymstoku Sposoby prezentacji problemów w statystyce Wprowadzenie W artykule zostaną zaprezentowane podstawowe zagadnienia z zakresu statystyki

Bardziej szczegółowo

Wnioskowanie bayesowskie

Wnioskowanie bayesowskie Wnioskowanie bayesowskie W podejściu klasycznym wnioskowanie statystyczne oparte jest wyłącznie na podstawie pobranej próby losowej. Możemy np. estymować punktowo lub przedziałowo nieznane parametry rozkładów,

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

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

Odchudzamy serię danych, czyli jak wykryć i usunąć wyniki obarczone błędami grubymi

Odchudzamy serię danych, czyli jak wykryć i usunąć wyniki obarczone błędami grubymi Odchudzamy serię danych, czyli jak wykryć i usunąć wyniki obarczone błędami grubymi Piotr Konieczka Katedra Chemii Analitycznej Wydział Chemiczny Politechnika Gdańska D syst D śr m 1 3 5 2 4 6 śr j D 1

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

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

Ćwiczenie 14. Maria Bełtowska-Brzezinska KINETYKA REAKCJI ENZYMATYCZNYCH

Ćwiczenie 14. Maria Bełtowska-Brzezinska KINETYKA REAKCJI ENZYMATYCZNYCH Ćwiczenie 14 aria Bełtowska-Brzezinska KINETYKA REAKCJI ENZYATYCZNYCH Zagadnienia: Podstawowe pojęcia kinetyki chemicznej (szybkość reakcji, reakcje elementarne, rząd reakcji). Równania kinetyczne prostych

Bardziej szczegółowo

Dokumentacja instalacji aktualizacji systemu GRANIT wydanej w postaci HotFix a

Dokumentacja instalacji aktualizacji systemu GRANIT wydanej w postaci HotFix a Dokumentacja instalacji aktualizacji systemu GRANIT wydanej w postaci HotFix a 1. Informacje wstępne...1 2. Sprawdzenie zainstalowanej wersji systemu GRANIT oraz pobieranie aktualizacji...1 3. Instalacja

Bardziej szczegółowo

Algorytmy i struktury danych. Wykład 4

Algorytmy i struktury danych. Wykład 4 Wykład 4 Różne algorytmy - obliczenia 1. Obliczanie wartości wielomianu 2. Szybkie potęgowanie 3. Algorytm Euklidesa, liczby pierwsze, faktoryzacja liczby naturalnej 2017-11-24 Algorytmy i struktury danych

Bardziej szczegółowo

Sortowanie. Bartman Jacek Algorytmy i struktury

Sortowanie. Bartman Jacek Algorytmy i struktury Sortowanie Bartman Jacek jbartman@univ.rzeszow.pl Algorytmy i struktury danych Sortowanie przez proste wstawianie przykład 41 56 17 39 88 24 03 72 41 56 17 39 88 24 03 72 17 41 56 39 88 24 03 72 17 39

Bardziej szczegółowo

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING Laboratorium nr 5 Temat: Funkcje agregujące, klauzule GROUP BY, HAVING Celem ćwiczenia jest zaprezentowanie zagadnień dotyczących stosowania w zapytaniach języka SQL predefiniowanych funkcji agregujących.

Bardziej szczegółowo

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

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

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 3 2 Złożoność obliczeniowa algorytmów Notacja wielkie 0 Notacja Ω i Θ Algorytm Hornera Przykłady rzędów

Bardziej szczegółowo

Statystyka od podstaw Janina Jóźwiak, Jarosław Podgórski

Statystyka od podstaw Janina Jóźwiak, Jarosław Podgórski Statystyka od podstaw Janina Jóźwiak, Jarosław Podgórski Książka jest nowoczesnym podręcznikiem przeznaczonym dla studentów uczelni i wydziałów ekonomicznych. Wykład podzielono na cztery części. W pierwszej

Bardziej szczegółowo

Weryfikacja hipotez statystycznych. KG (CC) Statystyka 26 V / 1

Weryfikacja hipotez statystycznych. KG (CC) Statystyka 26 V / 1 Weryfikacja hipotez statystycznych KG (CC) Statystyka 26 V 2009 1 / 1 Sformułowanie problemu Weryfikacja hipotez statystycznych jest drugą (po estymacji) metodą uogólniania wyników uzyskanych w próbie

Bardziej szczegółowo

Jednostki informacji. Bajt moŝna podzielić na dwie połówki 4-bitowe nazywane tetradami (ang. nibbles).

Jednostki informacji. Bajt moŝna podzielić na dwie połówki 4-bitowe nazywane tetradami (ang. nibbles). Wykład 1 1-1 Informatyka nauka zajmująca się zbieraniem, przechowywaniem i przetwarzaniem informacji. Informacja obiekt abstrakcyjny, który w postaci zakodowanej moŝe być przechowywany, przesyłany, przetwarzany

Bardziej szczegółowo

Wykład 2. Poprawność algorytmów

Wykład 2. Poprawność algorytmów Wykład 2 Poprawność algorytmów 1 Przegląd Ø Poprawność algorytmów Ø Podstawy matematyczne: Przyrost funkcji i notacje asymptotyczne Sumowanie szeregów Indukcja matematyczna 2 Poprawność algorytmów Ø Algorytm

Bardziej szczegółowo

Temat 7. Najlżejsze i najcięższe algorytmy sortowania

Temat 7. Najlżejsze i najcięższe algorytmy sortowania Temat 7 Najlżejsze i najcięższe algorytmy sortowania Streszczenie Komputery są często używane porządkowania różnych danych, na przykład nazwisk (w porządku alfabetycznym), terminów spotkań lub e-maili

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Kolokwium ze wstępu do informatyki, I rok Mat. (Ściśle tajne przed godz. 10 : grudnia 2005.)

Kolokwium ze wstępu do informatyki, I rok Mat. (Ściśle tajne przed godz. 10 : grudnia 2005.) Kolokwium ze wstępu do informatyki, I rok Mat. (Ściśle tajne przed godz. 10 : 15 1 grudnia 005.) 1. Program w C 1 zawiera deklaracje 1 void P1 ( int a, int b) { int i ; 3 for ( i =0;i

Bardziej szczegółowo

STATYSTYKA MATEMATYCZNA. rachunek prawdopodobieństwa

STATYSTYKA MATEMATYCZNA. rachunek prawdopodobieństwa STATYSTYKA MATEMATYCZNA rachunek prawdopodobieństwa treść Zdarzenia losowe pojęcie prawdopodobieństwa prawo wielkich liczb zmienne losowe rozkłady teoretyczne zmiennych losowych Zanim zajmiemy się wnioskowaniem

Bardziej szczegółowo

Korzystanie z podstawowych rozkładów prawdopodobieństwa (tablice i arkusze kalkulacyjne)

Korzystanie z podstawowych rozkładów prawdopodobieństwa (tablice i arkusze kalkulacyjne) Korzystanie z podstawowych rozkładów prawdopodobieństwa (tablice i arkusze kalkulacyjne) Przygotował: Dr inż. Wojciech Artichowicz Katedra Hydrotechniki PG Zima 2014/15 1 TABLICE ROZKŁADÓW... 3 ROZKŁAD

Bardziej szczegółowo

wagi cyfry 7 5 8 2 pozycje 3 2 1 0

wagi cyfry 7 5 8 2 pozycje 3 2 1 0 Wartość liczby pozycyjnej System dziesiętny W rozdziale opiszemy pozycyjne systemy liczbowe. Wiedza ta znakomicie ułatwi nam zrozumienie sposobu przechowywania liczb w pamięci komputerów. Na pierwszy ogień

Bardziej szczegółowo

Dane dotyczące wartości zmiennej (cechy) wprowadzamy w jednej kolumnie. W przypadku większej liczby zmiennych wprowadzamy każdą w oddzielnej kolumnie.

Dane dotyczące wartości zmiennej (cechy) wprowadzamy w jednej kolumnie. W przypadku większej liczby zmiennych wprowadzamy każdą w oddzielnej kolumnie. STATISTICA INSTRUKCJA - 1 I. Wprowadzanie danych Podstawowe / Nowy / Arkusz Dane dotyczące wartości zmiennej (cechy) wprowadzamy w jednej kolumnie. W przypadku większej liczby zmiennych wprowadzamy każdą

Bardziej szczegółowo

Układy równań liniowych. Ax = b (1)

Układy równań liniowych. Ax = b (1) Układy równań liniowych Dany jest układ m równań z n niewiadomymi. Liczba równań m nie musi być równa liczbie niewiadomych n, tj. mn. a a... a b n n a a... a b n n... a a... a b m m mn n m

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

PDF created with FinePrint pdffactory Pro trial version http://www.fineprint.com

PDF created with FinePrint pdffactory Pro trial version http://www.fineprint.com Analiza korelacji i regresji KORELACJA zależność liniowa Obserwujemy parę cech ilościowych (X,Y). Doświadczenie jest tak pomyślane, aby obserwowane pary cech X i Y (tzn i ta para x i i y i dla różnych

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

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1. Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1. Grażyna Koba MIGRA 2019 Spis treści (propozycja na 2*32 = 64 godziny lekcyjne) Moduł A. Wokół komputera i sieci komputerowych

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wykład 3 Hipotezy statystyczne

Wykład 3 Hipotezy statystyczne Wykład 3 Hipotezy statystyczne Hipotezą statystyczną nazywamy każde przypuszczenie dotyczące nieznanego rozkładu obserwowanej zmiennej losowej (cechy populacji generalnej) Hipoteza zerowa (H 0 ) jest hipoteza

Bardziej szczegółowo

A B. Modelowanie reakcji chemicznych: numeryczne rozwiązywanie równań na szybkość reakcji chemicznych B: 1. da dt. A v. v t

A B. Modelowanie reakcji chemicznych: numeryczne rozwiązywanie równań na szybkość reakcji chemicznych B: 1. da dt. A v. v t B: 1 Modelowanie reakcji chemicznych: numeryczne rozwiązywanie równań na szybkość reakcji chemicznych 1. ZałóŜmy, Ŝe zmienna A oznacza stęŝenie substratu, a zmienna B stęŝenie produktu reakcji chemicznej

Bardziej szczegółowo

Niepewność metody FMEA. Wprowadzenie 2005-12-28

Niepewność metody FMEA. Wprowadzenie 2005-12-28 5-1-8 Niepewność metody FMEA Wprowadzenie Doskonalenie produkcji metodą kolejnych kroków odbywa się na drodze analizowania przyczyn niedociągnięć, znajdowania miejsc powstawania wad, oceny ich skutków,

Bardziej szczegółowo