METODY PROBABILISTYCZNE I STATYSTYKA



Podobne dokumenty
PODSTAWY PROBABILISTYKI Z PRZYKŁADAMI ZASTOSOWAŃ W INFORMATYCE

Sortowanie przez wstawianie Insertion Sort

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

INFORMATYKA SORTOWANIE DANYCH.

Algorytmy i struktury danych

Efektywna metoda sortowania 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:

Sortowanie Shella Shell Sort

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Wyszukiwanie. Wyszukiwanie binarne

Algorytmy sortujące i wyszukujące

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

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 )

Statystyka hydrologiczna i prawdopodobieństwo zjawisk hydrologicznych.

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

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

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.

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

Sortowanie. LABORKA Piotr Ciskowski

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

1. Znajdowanie miejsca zerowego funkcji metodą bisekcji.

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

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

Programowanie w VB Proste algorytmy sortowania

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

Modelowanie niezawodności prostych struktur sprzętowych

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

Weryfikacja hipotez statystycznych, parametryczne testy istotności w populacji

Testowanie hipotez statystycznych. Wnioskowanie statystyczne

Wnioskowanie bayesowskie

STATYSTYKA MATEMATYCZNA

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

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

166 Wstęp do statystyki matematycznej

Liczba godzin Punkty ECTS Sposób zaliczenia. ćwiczenia 16 zaliczenie z oceną

Algorytmy i struktury danych Matematyka III sem.

Laboratorium nr 7 Sortowanie

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

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

Weryfikacja hipotez statystycznych

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

Sortowanie - wybrane algorytmy

Statystyka matematyczna dla leśników

Testowanie hipotez statystycznych

Wstęp do programowania

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

Wprowadzenie do analizy korelacji i regresji

Informatyka I stopień (I stopień / II stopień) ogólno akademicki (ogólno akademicki / praktyczny) podstawowy (podstawowy / kierunkowy / inny HES)

Technologia informacyjna

Opis przedmiotu. Karta przedmiotu - Probabilistyka I Katalog ECTS Politechniki Warszawskiej

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

Szczegółowy program kursu Statystyka z programem Excel (30 godzin lekcyjnych zajęć)

Zapisywanie algorytmów w języku programowania

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

Wprowadzenie do złożoności obliczeniowej

TEORETYCZNE PODSTAWY INFORMATYKI

Algorytm. a programowanie -

Szczegółowy program kursu Statystyka z programem Excel (30 godzin lekcyjnych zajęć)

dr Jerzy Pusz, st. wykładowca, Wydział Matematyki i Nauk Informacyjnych Politechniki Warszawskiej B. Ogólna charakterystyka przedmiotu

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

STATYSTYKA MATEMATYCZNA. rachunek prawdopodobieństwa

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

Sortowanie bąbelkowe - wersja nr 1 Bubble Sort

Interpretacja krzywych sondowania elektrooporowego; zagadnienie niejednoznaczności interpretacji (program IX1D Interpex) Etapy wykonania:

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

Statystyka. Rozkład prawdopodobieństwa Testowanie hipotez. Wykład III ( )

Wyszukiwanie binarne

Analiza ilościowa w przetwarzaniu równoległym

Podstawy Informatyki. Sprawność algorytmów

Tablica Wzorów Rachunek Prawdopodobieństwa i Statystyki

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

Informatyka 1. Złożoność obliczeniowa

Wykład 3 Hipotezy statystyczne

VI WYKŁAD STATYSTYKA. 9/04/2014 B8 sala 0.10B Godz. 15:15

Spacery losowe generowanie realizacji procesu losowego

WYDZIAŁ BUDOWNICTWA LĄDOWEGO I WODNEGO

Idea. θ = θ 0, Hipoteza statystyczna Obszary krytyczne Błąd pierwszego i drugiego rodzaju p-wartość

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

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,

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

METODY PROBABILISTYCZNE I STATYSTYKA

Ćwiczenie nr 2: ZaleŜność okresu drgań wahadła od amplitudy

Matematyczne Podstawy Informatyki

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

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

Optymalizacja ciągła

Algorytmika i pseudoprogramowanie

W4 Eksperyment niezawodnościowy

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

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

Sortowanie zewnętrzne

Algorytmy i struktury danych. Wykład 4

Wstęp do programowania

Testy nieparametryczne

Statystyka w pracy badawczej nauczyciela Wykład 4: Analiza współzależności. dr inż. Walery Susłow walery.suslow@ie.tu.koszalin.pl

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

WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI

Opis przedmiotu: Probabilistyka I

WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI

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

Transkrypt:

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 DANEGO ALGORYTMU...4.3. PRZYKŁADOWE WYZNACZANIE ZŁOśONOŚCI OBLICZENIOWEJ...5.4. SYMULACYJNA OCENA ZŁOśONOŚCI ALGORYTMÓW...8.5. PRZYKŁADOWE PYTANIA TESTOWE...2.6. ZADANIA NA ĆWICZENIA RACHUNKOWE...4 2. OBLICZANIE NIEZAWODNOŚCI PROSTYCH UKŁADÓW SPRZĘTOWYCH I SYSTEMÓW PROGRAMOWYCH...7 2.. UWAGI WSTĘPNE...7 2.2. POJĘCIE NIEZAWODNOŚCI...8 2.3. POPRAWNOŚĆ, NIEZAWODNOŚĆ I ODPORNOŚĆ OPROGRAMOWANIA...2 2.4. ZWIĘKSZANIE NIEZAWODNOŚCI OPROGRAMOWANIA...23 2.5. OBLICZANIE NIEZAWODNOŚCI PODSTAWOWYCH KONFIGURACJI UKŁADÓW SPRZĘTOWYCH...26 2.6. ZADANIA NA ĆWICZENIA RACHUNKOWE...29 3. ANALIZA WYDAJNOŚCI PROSTYCH UKŁADÓW SPRZĘTOWO- PROGRAMOWYCH - ZASTOSOWANIA TEORII PROCESÓW STOCHASTYCZNYCH...30 3.. UWAGI WSTĘPNE...30 3.2. OCENA WYDAJNOŚCI OPROGRAMOWANIA...3 3.3. PODSTAWOWE POJĘCIA TEORII MASOWEJ OBSŁUGI...3 3.4. MODEL JEDNOKANAŁOWY M / M / L (, )...35 3.5. MODEL WIELOKANAŁOWY M / M / S (, ) DLA S 2...36 3.6. PRZYKŁADY...36 3.7. ZADANIA NA ĆWICZENIA RACHUNKOWE...39 WYKAZ RYSUNKÓW...40 WYKAZ TABEL...40 Data ostatniej aktualizacji: piątek, 29 października 200

Jednym z przedmiotów podstawowych wymienionych w standardach kształcenia dla kierunku studiów informatyka na studiach I stopnia jest przedmiot Metody probabilistyczne i statystyka. Minimalna liczba godzin dla tego przedmiotu wynosi 30 dla studiów licencjackich i 60 dla studiów inŝynierskich. Sprawdzony układ godzin dla stacjonarnych studiów in- Ŝynierskich to 45 godzin wykładów i 30 godzin ćwiczeń rachunkowych. Z kolei dla studiów niestacjonarnych to układ 30 + 30. Treści i efekty kształcenia dla tego przedmiotu są następujące: Treści kształcenia: Prawdopodobieństwo dyskretne. Prawdopodobieństwo ciągłe. Wartości oczekiwane. Procesy stochastyczne. Próbkowanie. Estymacja. Testowanie hipotez statystycznych. Efekty kształcenia umiejętności i kompetencje: obliczania prawdopodobieństwa zdarzeń, wartości oczekiwanej, wariancji i odchylenia standardowego; analizy algorytmów pod względem średniego zachowania; obliczania niezawodności prostych układów sprzętowych i systemów programowych; zastosowania koncepcji procesów stochastycznych do analizy wydajności prostych układów sprzętowo-programowych; przeprowadzania prostego wnioskowania statystycznego. Z analizy przedstawionych wymagań wynika, Ŝe: W przedmiocie zagadnienia teoretyczne ograniczone są niezbędnego minimum. Pominięto przykładowe klasyczne tematy dot. np.: twierdzeń granicznych, analizy regresji, estymacji przedziałowej czy weryfikacji hipotez nieparametrycznych. Rozbudowane są treści dotyczące informatycznych zastosowań rachunku prawdopodobieństwa, statystyki matematycznej i procesów stochastycznych. W dostępnej literaturze brak jest podręcznika, który zawierałby tak określone treści. Na dodatek informacje dotyczące zastosowań są publikowane w ograniczonej i niejednolitej formie. Stan taki był powodem opracowania niniejszego uzupełnienia. Niniejsze uzupełnienie obejmuje następujące, specjalistyczne zagadnienia: Analizy algorytmów pod względem średniego zachowania; Obliczania niezawodności prostych układów sprzętowych i systemów programowych; Zastosowania koncepcji procesów stochastycznych do analizy wydajności prostych układów sprzętowo-programowych. http://www.bip.nauka.gov.pl/_gallery/23/62/2362/45_informatyka.pdf 2 Data ostatniej aktualizacji: piątek, 29 października 200

. ANALIZA ALGORYTMÓW POD WZGLĘDEM ŚREDNIEGO ZACHOWANIA 2.. 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. 2 Maciej M. Sysło, Anna B. Kwiatkowska, ZłoŜoność obliczeniowa i efektywność algorytmów, http://www.projekt.gammanet.pl/book/infalg/strony//i/30004.html 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, http://wazniak.mimuw.edu.pl/index.php?title=algorytmy_i_struktury_danych/wst%c4%99p:_poprawno%c5 %9B%C4%87_i_z%C5%82o%C5%BCono%C5%9B%C4%87_algorytmu ZłoŜoność obliczeniowa: http://pl.wikipedia.org/wiki/z%c5%82o%c5%bcono%c5%9b%c4%87_obliczeniowa http://bonito.pl/k-707078-projektowanie-i-analiza-algorytmow http://www.wsti.pl/materialy/slajdy2_so.pdf Data ostatniej aktualizacji: piątek, 29 października 200 3

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 3 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 - dlatego jednym z warunków uzyskania wiarygodnej oceny w testach porównawczych jest konieczność zastosowania tej samej wersji benchmarku..2. 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 2 000 operacji - a więc występuje tu złoŝoność logarytmiczna - O(log 2 n). 3 http://pl.wikipedia.org/wiki/testowanie_wzorcowe 4 http://forum.ks-ekspert.pl/topic/4-algorytmy-zlozonosc-obliczeniowa/ 4 Data ostatniej aktualizacji: piątek, 29 października 200

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=4.3. 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: ) 2 4 6 3 - 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 2 4 3 6 3) wybiera się następny element (), i porównuje z elementami listy. PoniewaŜ < 3 to liczba pozostaje na swoim, trzecim miejscu. Zatem otrzymujemy 2 4 3 6. 5 http://www.gamedev.pl/files/articles/megatutorial/m_b.pdf http://xion.org.pl/files/texts/mgt/html/m_b.html http://pl.wikipedia.org/wiki/sortowanie_przez_wstawianie Data ostatniej aktualizacji: piątek, 29 października 200 5

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 2 3 4 6 5) 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 2 3 4 6 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 + 2 +.. + n = i = otrzymuje się i = i= 2 i= Zatem n(n ) 3 T pes (n) = 5n-4+3 = 2 7 n + n + 3 2 2 2 Otrzymaliśmy więc funkcję kwadratową. i= n i= i n i= i= n(n ) 2 + n(n ) -n = 2 6 Data ostatniej aktualizacji: piątek, 29 października 200

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

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 = = = 2 2 2 2 2 2 2 2 2 2 4 Zatem ostatecznie 3 2 5 T sr (n) = n + n 4 4 2 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 = 20 000 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 / 0 6 000 sekund 6.67 minut Komputer osobisty wykonał zadanie 20 razy szybciej..4. 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. 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. 6 http://www.sciaga.pl/tekst/45977-46-zlozonosc_obliczeniowa_algorytmu 7 Algorytmy sortowania. Opis i demonstracja http://www.home.umk.pl/~abak/wdimat/s/index.html 8

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 2 +... + 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 2 2 + sr = = = n 2 2 2 4 gdzie: sr n(n ) n(n ) 2n + 4 2 n 3n + 4 n sr = (n ) + = = 2 2 2 Rodzaj oceny Wyznaczanie Liczba porównań dla n = 0 Optymistyczna Pesymistyczna Średnia 0 9 00 + 0 2 8 Analityczne k opt = 0 - = 9 k pes = = 45 ksr = = = 29,5 2 4 4 Symulacyjne 9 45 25 30 34 28 27 24 29 3 24 35 Ś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 30 35 64 72 9 6 59 73 88 206 N 0 2 4 6 8 20 22 24 26 28 Wykres dla tych danych wraz z liniową linia trendu jest następujący: Liczba porównań 250 200 50 00 50 0 206 88 73 59 6 9 64 72 30 35 0 2 4 6 8 20 22 24 26 28 Liczba danych Data ostatniej aktualizacji: piątek, 29 października 200 9

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. 0 Data ostatniej aktualizacji: piątek, 29 października 200

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. 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 K punktowe, począwszy od średniej 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. Data ostatniej aktualizacji: piątek, 29 października 200

.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 http://szkolnictwo.pl/test,nauka,3578,algorytmy_sortuj%c4%85cesortowanie_przez_wstawianie_sortowanie_przez_wyb%c3%b3r 2 Data ostatniej aktualizacji: piątek, 29 października 200

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 Data ostatniej aktualizacji: piątek, 29 października 200 3

.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 = 0. 4. 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ą 55. 5. Dla otrzymanych wyników symulacji ocenić korelację pomiędzy liczbą porównań L i liczbą sortowanych, przypadkowo ustawionych danych - N: L 55 78 05 36 7 20 253 300 35 406 N 0 2 4 6 8 20 22 24 26 28 9 http://edu.i-lo.tarnow.pl/inf/alg/003_sort/0009.php 0 http://www.home.umk.pl/~abak/wdimat/s/selectsort.html 4 Data ostatniej aktualizacji: piątek, 29 października 200

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 http://edu.i-lo.tarnow.pl/inf/alg/003_sort/008.php Data ostatniej aktualizacji: piątek, 29 października 200 5

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 = 0. 4. 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, 24. 5. Dla otrzymanych wyników symulacji ocenić korelację pomiędzy liczbą porównań L i liczbą sortowanych, przypadkowo ustawionych danych - N: L 24 29 4 46 62 67 85 00 20 36 N 0 2 4 6 8 20 22 24 26 28 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). 2 http://www.home.umk.pl/~abak/wdimat/s/quicksort.html 6 Data ostatniej aktualizacji: piątek, 29 października 200

2. OBLICZANIE NIEZAWODNOŚCI PROSTYCH UKŁADÓW SPRZĘTOWYCH I SYSTEMÓW PROGRAMOWYCH 3 2.. 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 3. 4. Podanie wyniku działania programu na ekranie lub zapisanie do pliku Rysunek 5. Uruchomianie i wykonywanie programu 3 M.Rawski Wstęp do Informatyki, http://rawski.zpt.tele.pw.edu.pl/pl/system/files/wyklad%203.pdf http://pl.wikipedia.org/wiki/niezawodno%c5%9b%c4%87 http://www.zgapa.pl/zgapedia/niezawodno%c5%9b%c4%87.html http://www.szbi.pl/bezpieczestwo-informacji/business-continuity-management-grzegorz-90/niezawodnosc http://www.blades.pl/o-blades/niezawodnosc Data ostatniej aktualizacji: piątek, 29 października 200 7

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. 2.2. 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 2.2. 2.4. zamieszczono przede wszystkim fragmenty ksiąŝki: Herman Kopetz, Niezawodność oprogramowania, WNT, Warszawa 980. 8 Data ostatniej aktualizacji: piątek, 29 października 200

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 Data ostatniej aktualizacji: piątek, 29 października 200 9

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. 20 Data ostatniej aktualizacji: piątek, 29 października 200