Algorytmy i struktury danych

Podobne dokumenty
Matematyka dyskretna dla informatyków

Listy i operacje pytania

Algorytmy i Struktury Danych.

Algorytmy zwiazane z gramatykami bezkontekstowymi

Lab. 02: Algorytm Schrage

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Caªkowanie numeryczne - porównanie skuteczno±ci metody prostokatów, metody trapezów oraz metody Simpsona

Twierdzenie Wainera. Marek Czarnecki. Warszawa, 3 lipca Wydziaª Filozoi i Socjologii Uniwersytet Warszawski

Metody dowodzenia twierdze«

ALGORYTMIKA Wprowadzenie do algorytmów

Skrypt do Algorytmów i Struktur Danych

Język programowania PASCAL

Analiza algorytmów zadania podstawowe

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II.

Sortowanie przez wstawianie

Programowanie funkcyjne. Wykªad 13

Algorytmy i struktury danych

Algorytmy i struktury danych

Wykład 2. Poprawność algorytmów

Wykªad 4. Funkcje wielu zmiennych.

Wstęp do programowania. Różne różności

Wyszukiwanie. Algorytmy i Struktury Danych. (c) Marcin Sydow. Dziel i rz d¹. Wyszukiwanie. Statystyki pozycyjne. Podsumowanie

Algorytmy i struktury danych

Rekurencja. Algorytmy i Struktury Danych. (c) Marcin Sydow. Wst p. Fibonacci. Liniowe 2. rz du. Wie»e Hanoi. Wa»ne 3 przypadki

Matematyka wykªad 1. Macierze (1) Andrzej Torój. 17 wrze±nia Wy»sza Szkoªa Zarz dzania i Prawa im. H. Chodkowskiej

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Zaliczenie. Egzamin. lub. Wykład. Zaliczenie. Ćwiczenie. 3 zadania. Projekty. Ocena. Na ocenę

Metody numeryczne. Wst p do metod numerycznych. Dawid Rasaªa. January 9, Dawid Rasaªa Metody numeryczne 1 / 9

Podstawy Informatyki. Sprawność algorytmów

1. Analiza algorytmów przypomnienie

1. Wprowadzenie do C/C++

Metody numeryczne i statystyka dla in»ynierów

1. Wprowadzenie do C/C++

i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017

Wprowadzenie do złożoności obliczeniowej

ALGORYTMY SORTOWANIA DANYCH

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

1 Bª dy i arytmetyka zmiennopozycyjna

Ÿ1 Oznaczenia, poj cia wst pne

Macierze i Wyznaczniki

Podstawy matematyki dla informatyków

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

1 0 Je»eli wybierzemy baz A = ((1, 1), (2, 1)) to M(f) A A =. 0 2 Daje to znacznie lepszy opis endomorzmu f.

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Rekurencyjne struktury danych

Uniwersytet Warszawski Wydziaª Matematyki, Informatyki i Mechaniki

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

TEORETYCZNE PODSTAWY INFORMATYKI

Zbiory ograniczone i kresy zbiorów

Programowanie wspóªbie»ne

wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe

Analiza algorytmów zadania podstawowe

Zbiory i odwzorowania

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Pascal - wprowadzenie

ELEMENTARNA TEORIA LICZB. 1. Podzielno±

Algorytmy i Struktury Danych.

Kierunek: Informatyka. Przedmiot:

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Logika dla matematyków i informatyków Wykªad 1

Macierze. 1 Podstawowe denicje. 2 Rodzaje macierzy. Denicja

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Teoria grafów i sieci 1 / 58

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

Metodydowodzenia twierdzeń

Ciaªa i wielomiany. 1 Denicja ciaªa. Ciaªa i wielomiany 1

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.

Równania ró»niczkowe I rz du (RRIR) Twierdzenie Picarda. Anna D browska. WFTiMS. 23 marca 2010

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne:

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Matematyczne Podstawy Informatyki

Algorytmy i struktury danych

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Funkcje, wielomiany. Informacje pomocnicze

Programowanie i struktury danych

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Wska¹niki, tablice dynamiczne wielowymiarowe

Interpolacja Lagrange'a, bazy wielomianów

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Ekstremalnie maªe zbiory

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Problem decyzyjny naley do klasy NP. (Polynomial), jeeli moe by rozwizany w czasie conajwyej wielomianowym przez algorytm A dla DTM.

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Sortowanie przez scalanie

Algorytmy i struktury danych. wykład 1

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2015/2016. Forma studiów: Stacjonarne Kod kierunku: 11.

Algorytmy i struktury danych.

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Baza danych - Access. 2 Budowa bazy danych

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Zdzisªaw Dzedzej, Katedra Analizy Nieliniowej pok. 611 Kontakt:

Informatyka 1. Przetwarzanie tekstów

Transkrypt:

Algorytmy i struktury danych Cz ± pierwsza Prowadz cy: dr Andrzej Mróz, Wydziaª Matematyki i Informatyki, Uniwersytet Mikoªaja Kopernika 1 / 65

Opis przedmiotu Zagadnienia, którymi si zajmiemy: metody projektowania algorytmów, 2 / 65

Opis przedmiotu Zagadnienia, którymi si zajmiemy: metody projektowania algorytmów, przykªady algorytmów, 2 / 65

Opis przedmiotu Zagadnienia, którymi si zajmiemy: metody projektowania algorytmów, przykªady algorytmów, struktury danych, 2 / 65

Opis przedmiotu Zagadnienia, którymi si zajmiemy: metody projektowania algorytmów, przykªady algorytmów, struktury danych, zªo»ono± obliczeniowa. 2 / 65

Opis przedmiotu Zagadnienia, którymi si zajmiemy: metody projektowania algorytmów, przykªady algorytmów, struktury danych, zªo»ono± obliczeniowa. Na wiczeniach (laboratoriach): implementowanie algorytmów z wykªadu, 2 / 65

Opis przedmiotu Zagadnienia, którymi si zajmiemy: metody projektowania algorytmów, przykªady algorytmów, struktury danych, zªo»ono± obliczeniowa. Na wiczeniach (laboratoriach): implementowanie algorytmów z wykªadu, projektowanie i implementowanie wªasnych algorytmów, 2 / 65

Opis przedmiotu Zagadnienia, którymi si zajmiemy: metody projektowania algorytmów, przykªady algorytmów, struktury danych, zªo»ono± obliczeniowa. Na wiczeniach (laboratoriach): implementowanie algorytmów z wykªadu, projektowanie i implementowanie wªasnych algorytmów, szacowanie zªo»ono±ci obliczeniowej algorytmów. 2 / 65

Opis przedmiotu Plan wykªadu (mo»e ulega drobnym modykacjom): poj cie zªo»ono±ci obliczeniowej algorytmów, 3 / 65

Opis przedmiotu Plan wykªadu (mo»e ulega drobnym modykacjom): poj cie zªo»ono±ci obliczeniowej algorytmów, przegl d wybranych algorytmów sortowania, 3 / 65

Opis przedmiotu Plan wykªadu (mo»e ulega drobnym modykacjom): poj cie zªo»ono±ci obliczeniowej algorytmów, przegl d wybranych algorytmów sortowania, wska¹niki w j zyku programowania, 3 / 65

Opis przedmiotu Plan wykªadu (mo»e ulega drobnym modykacjom): poj cie zªo»ono±ci obliczeniowej algorytmów, przegl d wybranych algorytmów sortowania, wska¹niki w j zyku programowania, podstawowe struktury danych (stosy, kolejki, listy), metody ich implementacji, 3 / 65

Opis przedmiotu Plan wykªadu (mo»e ulega drobnym modykacjom): poj cie zªo»ono±ci obliczeniowej algorytmów, przegl d wybranych algorytmów sortowania, wska¹niki w j zyku programowania, podstawowe struktury danych (stosy, kolejki, listy), metody ich implementacji, elementy teorii grafów, struktury danych do reprezentowania grafów, 3 / 65

Opis przedmiotu Plan wykªadu (mo»e ulega drobnym modykacjom): poj cie zªo»ono±ci obliczeniowej algorytmów, przegl d wybranych algorytmów sortowania, wska¹niki w j zyku programowania, podstawowe struktury danych (stosy, kolejki, listy), metody ich implementacji, elementy teorii grafów, struktury danych do reprezentowania grafów, zªo»one struktury danych, 3 / 65

Opis przedmiotu Plan wykªadu (mo»e ulega drobnym modykacjom): poj cie zªo»ono±ci obliczeniowej algorytmów, przegl d wybranych algorytmów sortowania, wska¹niki w j zyku programowania, podstawowe struktury danych (stosy, kolejki, listy), metody ich implementacji, elementy teorii grafów, struktury danych do reprezentowania grafów, zªo»one struktury danych, algorytmy rekurencyjne, 3 / 65

Opis przedmiotu Plan wykªadu (mo»e ulega drobnym modykacjom): poj cie zªo»ono±ci obliczeniowej algorytmów, przegl d wybranych algorytmów sortowania, wska¹niki w j zyku programowania, podstawowe struktury danych (stosy, kolejki, listy), metody ich implementacji, elementy teorii grafów, struktury danych do reprezentowania grafów, zªo»one struktury danych, algorytmy rekurencyjne, metody projektowania algorytmów (metoda przyrostowa, zachªanna, dziel i zwyci»aj, programowanie dynamiczne), 3 / 65

Opis przedmiotu Plan wykªadu (mo»e ulega drobnym modykacjom): poj cie zªo»ono±ci obliczeniowej algorytmów, przegl d wybranych algorytmów sortowania, wska¹niki w j zyku programowania, podstawowe struktury danych (stosy, kolejki, listy), metody ich implementacji, elementy teorii grafów, struktury danych do reprezentowania grafów, zªo»one struktury danych, algorytmy rekurencyjne, metody projektowania algorytmów (metoda przyrostowa, zachªanna, dziel i zwyci»aj, programowanie dynamiczne), wybrane algorytmy grafowe, tekstowe, geometryczne (analiza ich poprawno±ci, zªo»ono±ci, metody implementacji), 3 / 65

Opis przedmiotu Plan wykªadu (mo»e ulega drobnym modykacjom): poj cie zªo»ono±ci obliczeniowej algorytmów, przegl d wybranych algorytmów sortowania, wska¹niki w j zyku programowania, podstawowe struktury danych (stosy, kolejki, listy), metody ich implementacji, elementy teorii grafów, struktury danych do reprezentowania grafów, zªo»one struktury danych, algorytmy rekurencyjne, metody projektowania algorytmów (metoda przyrostowa, zachªanna, dziel i zwyci»aj, programowanie dynamiczne), wybrane algorytmy grafowe, tekstowe, geometryczne (analiza ich poprawno±ci, zªo»ono±ci, metody implementacji), wybrane algorytmy aproksymacyjne. 3 / 65

Opis przedmiotu Nie wszystko jest na slajdach! 4 / 65

Literatura 1 T. H. Cormen, Ch. E. Leiserson, R. L. Rivest, Wprowadzenie do algorytmów, WNT, Warszawa 2001. 2 D. Harel, Rzecz o istocie informatyki. Algorytmika, WNT, Warszawa 1992. 3 A. V. Aho, J. E. Hopcroft, J. D. Ullman, Projektowanie i analiza algorytmów komputerowych, Helion, Gliwice 2003. 4 L. Banachowski, K. Diks, W. Rytter, Algorytmy i struktury danych, WNT, Warszawa 2006. 5 D. E. Knuth, Sztuka programowania, WNT, Warszawa 2002. 6 P. Sta«czyk, Algorytmika praktyczna. Nie tylko dla mistrzów, PWN, Warszawa 2009. 7 V. V. Vazirani, Algorytmy aproksymacyjne, WNT, Warszawa 2005. Przydatny: podr cznik do j zyka Pascal. 5 / 65

Egzamin Forma: egzamin praktyczny przy komputerze. Samodzielna implementacja kilku wybranych algorytmów w tym algorytmów, które pojawi sie na wykªadzie. Forma poprawy: ustalana indywidualnie na podstawie wyników egzaminu. 6 / 65

Podstawy Algorytm = precyzyjnie okre±lony, jednoznaczny, sko«czony opis przetworzenia pewnych danych wej±ciowych do pewnych danych wyj±ciowych. 7 / 65

Podstawy Algorytm = precyzyjnie okre±lony, jednoznaczny, sko«czony opis przetworzenia pewnych danych wej±ciowych do pewnych danych wyj±ciowych. Specykacja problemu obliczeniowego: trójka (D, X, f ), gdzie D zbiór (zwany zbiorem danych wej±ciowych), X zbiór (zwany zbiorem danych wyj±ciowych lub wyników), f : D X funkcja. 7 / 65

Podstawy Algorytm = precyzyjnie okre±lony, jednoznaczny, sko«czony opis przetworzenia pewnych danych wej±ciowych do pewnych danych wyj±ciowych. Specykacja problemu obliczeniowego: trójka (D, X, f ), gdzie D zbiór (zwany zbiorem danych wej±ciowych), X zbiór (zwany zbiorem danych wyj±ciowych lub wyników), f : D X funkcja. Przykªad 1. Problem: liczenie silni liczby naturalnej. D = N, X = N, f (d) = d! 7 / 65

Podstawy Algorytm = precyzyjnie okre±lony, jednoznaczny, sko«czony opis przetworzenia pewnych danych wej±ciowych do pewnych danych wyj±ciowych. Specykacja problemu obliczeniowego: trójka (D, X, f ), gdzie D zbiór (zwany zbiorem danych wej±ciowych), X zbiór (zwany zbiorem danych wyj±ciowych lub wyników), f : D X funkcja. Przykªad 1. Problem: liczenie silni liczby naturalnej. D = N, X = N, f (d) = d! Przykªad 2. Problem: test pierwszo±ci. { True, d jest l. pierwsz, D = N\{1}, X = {True, False}, f (d) = False, d jest l. zªo»on. 7 / 65

Podstawy Def.: Algorytm A realizuj cy problem (D, X, f ) nazywamy cz ±ciowo poprawnym, gdy d D je»eli A na d zatrzymuje si, to wynik x X speªnia f (d) = x. 8 / 65

Podstawy Def.: Algorytm A realizuj cy problem (D, X, f ) nazywamy cz ±ciowo poprawnym, gdy d D je»eli A na d zatrzymuje si, to wynik x X speªnia f (d) = x. Def.: Mówimy,»e algorytm A realizuj cy problem (D, X, f ) ma wªasno± stopu, gdy d D A na d zatrzymuje si. 8 / 65

Podstawy Def.: Algorytm A realizuj cy problem (D, X, f ) nazywamy cz ±ciowo poprawnym, gdy d D je»eli A na d zatrzymuje si, to wynik x X speªnia f (d) = x. Def.: Mówimy,»e algorytm A realizuj cy problem (D, X, f ) ma wªasno± stopu, gdy d D A na d zatrzymuje si. Def.: Algorytm A realizuj cy problem (D, X, f ) nazywamy poprawnym, gdy jest cz ±ciowo poprawny, ma wªasno± stopu. 8 / 65

Podstawy Sposoby zapisywania algorytmu: 1 opisowy w j zyku naturalnym, 9 / 65

Podstawy Sposoby zapisywania algorytmu: 1 opisowy w j zyku naturalnym, 2 przy pomocy schematu blokowego, 9 / 65

Podstawy Sposoby zapisywania algorytmu: 1 opisowy w j zyku naturalnym, 2 przy pomocy schematu blokowego, 3 przy pomocy konkretnego j zyka programowania (Pascal), 9 / 65

Podstawy Sposoby zapisywania algorytmu: 1 opisowy w j zyku naturalnym, 2 przy pomocy schematu blokowego, 3 przy pomocy konkretnego j zyka programowania (Pascal), 4 przy pomocy pseudokodu: uproszczonego kodu ª cz cego elementy skªadni j zyków programowania wysokiego poziomu z j zykiem naturalnym. 9 / 65

Podstawy Przykªad. Test pierwszo±ci. Specykacja: (D, X, f ). { True, d jest l. pierwsz, D = N\{1}, X = {True, False}, f (d) = False, d jest l. zªo»on. 10 / 65

Podstawy Przykªad. Test pierwszo±ci. Specykacja: (D, X, f ). { True, d jest l. pierwsz, D = N\{1}, X = {True, False}, f (d) = False, d jest l. zªo»on. Wykorzystamy Lemat. Liczba naturalna n 2 jest zªo»ona posiada dzielnik p N taki,»e 2 p n. 10 / 65

Podstawy Ad 3: j zyk programowania Pascal. function pierwsza(n : Integer ) : Boolean; var p : Integer; B : Boolean; begin p := 2; B := True; while (p p <= n) and B do if n mod p = 0 then B := False else p := p + 1; pierwsza := B end; 11 / 65

Podstawy Ad 3: j zyk programowania Pascal. function pierwsza(n : Integer ) : Boolean; var p : Integer; B : Boolean; begin p := 2; B := True; while (p p <= n) and B do if n mod p = 0 then B := False else p := p + 1; pierwsza := B end; Uwaga. Wªasno± stopu i cz ±ciowa poprawno± wynika bezpo±rednio z lematu i konstrukcji p tli. 11 / 65

Podstawy Ad 4: pseudokod. Konwencje: bez technik programowania jak kontrola bª dów, typów danych, obsªuga pami ci itp., 12 / 65

Podstawy Ad 4: pseudokod. Konwencje: bez technik programowania jak kontrola bª dów, typów danych, obsªuga pami ci itp., brak deklaracji zmiennych, 12 / 65

Podstawy Ad 4: pseudokod. Konwencje: bez technik programowania jak kontrola bª dów, typów danych, obsªuga pami ci itp., brak deklaracji zmiennych, skªadnia zbli»ona do Pascala (sªowa kluczowe), 12 / 65

Podstawy Ad 4: pseudokod. Konwencje: bez technik programowania jak kontrola bª dów, typów danych, obsªuga pami ci itp., brak deklaracji zmiennych, skªadnia zbli»ona do Pascala (sªowa kluczowe), nazwy procedur/funkcji na ogóª angloj zyczne (zgodno± z literatur ), 12 / 65

Podstawy Ad 4: pseudokod. Konwencje: bez technik programowania jak kontrola bª dów, typów danych, obsªuga pami ci itp., brak deklaracji zmiennych, skªadnia zbli»ona do Pascala (sªowa kluczowe), nazwy procedur/funkcji na ogóª angloj zyczne (zgodno± z literatur ), dopuszczamy wstawki w j zyku naturalnym (pl), 12 / 65

Podstawy Ad 4: pseudokod. Konwencje: bez technik programowania jak kontrola bª dów, typów danych, obsªuga pami ci itp., brak deklaracji zmiennych, skªadnia zbli»ona do Pascala (sªowa kluczowe), nazwy procedur/funkcji na ogóª angloj zyczne (zgodno± z literatur ), dopuszczamy wstawki w j zyku naturalnym (pl), do zwracania warto±ci stosujemy klauzul return (o semantyce jak w C). 12 / 65

Podstawy begin p := 2; B := True; while (p p <= n) and B do if n mod p = 0 then B := False else p := p + 1; return B end; lub begin p := 2; while p p <= n do if n mod p = 0 then return False end; else p := p + 1; return True 13 / 65

Analiza algorytmów czas oblicze«, pami RAM, pami dyskowa, inne zasoby (szeroko± ª cza komunikacji)... 14 / 65

Analiza algorytmów czas oblicze«, pami RAM, pami dyskowa, inne zasoby (szeroko± ª cza komunikacji)... Uwaga. Cz sto zmniejszenie zu»ycia jednych zasobów wymusza zwi kszenie zu»ycia innych! 14 / 65

Zªo»ono± obliczeniowa (czasowa) J = zbiór operacji jednostkowych okre±lonych dla konkretnego j zyka (Pascal) Przyjmujemy J = { operacje arytm., log., relac., instr. przypisania, przekazanie parametrów,... } 15 / 65

Zªo»ono± obliczeniowa (czasowa) J = zbiór operacji jednostkowych okre±lonych dla konkretnego j zyka (Pascal) Przyjmujemy J = { operacje arytm., log., relac., instr. przypisania, przekazanie parametrów,... } P program, D zbiór danych wej±ciowych dla P EX P (d) wykonanie P na d D (ci g instrukcji). Zaªo»enie: d D EX P (d) <. 15 / 65

Zªo»ono± obliczeniowa (czasowa) J = zbiór operacji jednostkowych okre±lonych dla konkretnego j zyka (Pascal) Przyjmujemy J = { operacje arytm., log., relac., instr. przypisania, przekazanie parametrów,... } P program, D zbiór danych wej±ciowych dla P EX P (d) wykonanie P na d D (ci g instrukcji). Zaªo»enie: d D EX P (d) <. Def. Peªn funkcj kosztu programu P ze wzgl du na J nazywamy funkcj t = t P,J : D N, okre±lon : t(d) = liczba operacji ze zbioru J wyst puj cych w EX P (d), dla d D. 15 / 65

Zªo»ono± obliczeniowa (czasowa) Przykªad. Test pierwszo±ci. J = {:=,, <=, +, =, and, mod }, D = N \ {1}. begin p := 2; B := True; while (p p <= n) and B do if n mod p = 0 then B := False else p := p + 1; pierwsza := B end; 16 / 65

Zªo»ono± obliczeniowa (czasowa) Przykªad. Test pierwszo±ci. J = {:=,, <=, +, =, and, mod }, D = N \ {1}. maks. begin p := 2; 1 B := True; 1 while (p p <= n) and B do 3 if n mod p = 0 then B := False 2 +1 else p := p + 1; 2 pierwsza := B 1 end; 16 / 65

Zªo»ono± obliczeniowa (czasowa) Przykªad. Test pierwszo±ci. J = {:=,, <=, +, =, and, mod }, D = N \ {1}. maks. begin p := 2; 1 B := True; 1 while (p p <= n) and B do 3 ( n + 1) if n mod p = 0 then B := False 2 n +1 else p := p + 1; 2 n pierwsza := B 1 end; 16 / 65

Zªo»ono± obliczeniowa (czasowa) Przykªad. Test pierwszo±ci. J = {:=,, <=, +, =, and, mod }, D = N \ {1}. maks. begin p := 2; 1 B := True; 1 while (p p <= n) and B do 3 ( n + 1) if n mod p = 0 then B := False 2 n +1 else p := p + 1; 2 n pierwsza := B 1 end; t(n) 1 + 1 + 3( n + 1) + 2 n + 1 + 2 n + 1 = 7 n + 7 16 / 65

Zªo»ono± obliczeniowa (czasowa) Przykªad. Test pierwszo±ci. J = {:=,, <=, +, =, and, mod }, D = N \ {1}. maks. begin p := 2; 1 B := True; 1 while (p p <= n) and B do 3 ( n + 1) if n mod p = 0 then B := False 2 n +1 else p := p + 1; 2 n pierwsza := B 1 end; t(n) 1 + 1 + 3( n + 1) + 2 n + 1 + 2 n + 1 = 7 n + 7 Uwaga. Zakªadamy,»e wszystkie operacje jednostkowe wykonywane s w czasie staªym! 16 / 65

Zªo»ono± obliczeniowa (czasowa) Przypadek pesymistyczny. n jest liczb pierwsz. Wówczas t(n) = 7 n + 7. 17 / 65

Zªo»ono± obliczeniowa (czasowa) Przypadek pesymistyczny. n jest liczb pierwsz. Wówczas t(n) = 7 n + 7. Przypadek optymistyczny. n jest liczb parzyst. Wówczas begin p := 2; 1 B := True; 1 while (p p <= n) and B do 3 if n mod p = 0 then B := False 2+1 else p := p + 1; 2 pierwsza := B 1 end; 17 / 65

Zªo»ono± obliczeniowa (czasowa) Przypadek pesymistyczny. n jest liczb pierwsz. Wówczas t(n) = 7 n + 7. Przypadek optymistyczny. n jest liczb parzyst. Wówczas begin p := 2; 1 B := True; 1 while (p p <= n) and B do 3 2 if n mod p = 0 then B := False 2+1 else p := p + 1; 2 0 pierwsza := B 1 end; 17 / 65

Zªo»ono± obliczeniowa (czasowa) Przypadek pesymistyczny. n jest liczb pierwsz. Wówczas t(n) = 7 n + 7. Przypadek optymistyczny. n jest liczb parzyst. Wówczas begin p := 2; 1 B := True; 1 while (p p <= n) and B do 3 2 if n mod p = 0 then B := False 2+1 else p := p + 1; 2 0 pierwsza := B 1 end; t(n) = 1 + 1 + 6 + 3 + 1 = 12. 17 / 65

Zªo»ono± obliczeniowa (czasowa) Przypadek pesymistyczny. n jest liczb pierwsz. Wówczas t(n) = 7 n + 7. Przypadek optymistyczny. n jest liczb parzyst. Wówczas begin p := 2; 1 B := True; 1 while (p p <= n) and B do 3 2 if n mod p = 0 then B := False 2+1 else p := p + 1; 2 0 pierwsza := B 1 end; t(n) = 1 + 1 + 6 + 3 + 1 = 12. Wniosek. 12 t(n) 7 n + 7. 17 / 65

Zªo»ono± uproszczenia Ustalmy specykacj problemu (D, X, f ), realizuj cy go program (algorytm) P oraz zbiór operacji J. 18 / 65

Zªo»ono± uproszczenia Ustalmy specykacj problemu (D, X, f ), realizuj cy go program (algorytm) P oraz zbiór operacji J. Def. Niech W b dzie niepustym zbiorem (zwanym zbiorem rozmiarów). Dowoln funkcj r : D W nazywamy funkcj rozmiaru danych. 18 / 65

Zªo»ono± uproszczenia Ustalmy specykacj problemu (D, X, f ), realizuj cy go program (algorytm) P oraz zbiór operacji J. Def. Niech W b dzie niepustym zbiorem (zwanym zbiorem rozmiarów). Dowoln funkcj r : D W nazywamy funkcj rozmiaru danych. Def. Funkcj kosztu algorytmu (programu) P przy ustalonych J, D, W, r nazywamy funkcj (cz ±ciow ) T : W N okre±lon wzorem T (w) := sup{t(d) : d D, r(d) = w }. 18 / 65

Zªo»ono± uproszczenia Ustalmy specykacj problemu (D, X, f ), realizuj cy go program (algorytm) P oraz zbiór operacji J. Def. Niech W b dzie niepustym zbiorem (zwanym zbiorem rozmiarów). Dowoln funkcj r : D W nazywamy funkcj rozmiaru danych. Def. Funkcj kosztu algorytmu (programu) P przy ustalonych J, D, W, r nazywamy funkcj (cz ±ciow ) T : W N okre±lon wzorem T (w) := sup{t(d) : d D, r(d) = w }. Inne uproszczenia. ograniczenie si do zliczania operacji dominuj cych w danej linii, ignorowanie linii wykonywanych w czasie staªym poza p tlami (ostro»nie!). 18 / 65

Zªo»ono± przykªady Problem: obliczanie warto±ci wielomianu. Tj. dla wielomianu p(x) = a n x n + a n 1 x n 1 +... + a 1 x + a 0 R[x] oraz x 0 R, obliczy warto± p(x 0 ) R. 19 / 65

Zªo»ono± przykªady Problem: obliczanie warto±ci wielomianu. Tj. dla wielomianu p(x) = a n x n + a n 1 x n 1 +... + a 1 x + a 0 R[x] oraz x 0 R, obliczy warto± p(x 0 ) R. Specykacja: (D, X, f ), gdzie D = {(n, a, x 0 ) : n N, a = (a 0,..., a n ) R n+1, x 0 R}, X = R, f ((n, a, x 0 )) = a n x n 0 + a n 1 x n 1 0 +... + a 1 x 0 + a 0. 19 / 65

Zªo»ono± przykªady Problem: obliczanie warto±ci wielomianu. Tj. dla wielomianu p(x) = a n x n + a n 1 x n 1 +... + a 1 x + a 0 R[x] oraz x 0 R, obliczy warto± p(x 0 ) R. Specykacja: (D, X, f ), gdzie D = {(n, a, x 0 ) : n N, a = (a 0,..., a n ) R n+1, x 0 R}, X = R, f ((n, a, x 0 )) = a n x n 0 + a n 1 x n 1 0 +... + a 1 x 0 + a 0. Funkcja rozmiaru danych: przyjmujemy W := N, r : D W, r((n, a, x 0 )) = n. 19 / 65

Algorytm naiwny: Zªo»ono± przykªady function wielomian(n : Integer; a : array var i, j : Integer; w, m : Real; begin w := 0; for i := 0 to n do begin m := a[i]; for j := 1 to i do m := m x0; w := w + m; end; wielomian := w end; of Real; x0 : Real) : Real; 20 / 65

Algorytm naiwny: Zªo»ono± przykªady function wielomian(n : Integer; a : array var i, j : Integer; w, m : Real; begin w := 0; 1 for i := 0 to n do 3 begin m := a[i]; 2 for j := 1 to i do 3 m := m x0; 2 w := w + m; 2 end; wielomian := w 1 end; of Real; x0 : Real) : Real; 20 / 65

Algorytm naiwny: Zªo»ono± przykªady function wielomian(n : Integer; a : array var i, j : Integer; w, m : Real; begin w := 0; 1 for i := 0 to n do 3 begin m := a[i]; 2 for j := 1 to i do 3 (i + 1) m := m x0; 2 i w := w + m; 2 end; wielomian := w 1 end; of Real; x0 : Real) : Real; 20 / 65

Algorytm naiwny: Zªo»ono± przykªady function wielomian(n : Integer; a : array var i, j : Integer; w, m : Real; begin w := 0; 1 for i := 0 to n do 3 (n + 2) begin m := a[i]; 2 (n + 1) for j := 1 to i do 3 (i + 1) m := m x0; 2 i w := w + m; 2 (n + 1) end; wielomian := w 1 end; of Real; x0 : Real) : Real; 20 / 65

Algorytm naiwny: Zªo»ono± przykªady function wielomian(n : Integer; a : array var i, j : Integer; w, m : Real; begin w := 0; 1 for i := 0 to n do 3 (n + 2) begin m := a[i]; 2 (n + 1) for j := ni=0 1 to i do 3 (i + 1) m := m ni=0 x0; 2 i w := w + m; 2 (n + 1) end; wielomian := w 1 end; of Real; x0 : Real) : Real; 20 / 65

Algorytm naiwny: Zªo»ono± przykªady function wielomian(n : Integer; a : array var i, j : Integer; w, m : Real; begin w := 0; 1 for i := 0 to n do 3 (n + 2) begin m := a[i]; 2 (n + 1) for j := ni=0 1 to i do 3 (i + 1) m := m ni=0 x0; 2 i w := w + m; 2 (n + 1) end; wielomian := w 1 end; of Real; x0 : Real) : Real; t((n, a, x0)) = 12 + 7n + 3 n i=0 (i + 1) + 2 n i=0 i = = 12 + 7n + 3 n2 +3n+2 + 2 n2 +n = 5 2 2 2 n2 + 25 n + 15. 2 20 / 65

Zªo»ono± przykªady Uwaga. Warto± t((n, a, x0)) zale»y tylko od n 21 / 65

Zªo»ono± przykªady Uwaga. Warto± t((n, a, x0)) zale»y tylko od n w tym wypadku T (n) = t((n, a, x0)) = 5 2 n2 + 25 2 n + 15 (przypomnijmy,»e funkcj rozmiaru danych okre±lili±my wzorem zatem funkcja kosztu jest zadana: r((n, a, x 0 )) = n, T (w) := sup{t((n, a, x 0 )) : (n, a, x 0 ) D, r((n, a, x 0 )) = w }, dla w W = N). 21 / 65

Wielomiany usprawnienie Metoda Hornera: n a i x i = (...(a n x + a n 1 )x +... + a 1 )x + a 0. i=0 22 / 65

Wielomiany usprawnienie Metoda Hornera: n a i x i = (...(a n x + a n 1 )x +... + a 1 )x + a 0. i=0 function Horner(n : Integer; a : array var i : Integer; w : Real; begin w := a[n]; for i := n 1 downto 0 do w := w x0 + a[i]; Horner := w end; of Real; x0 : Real) : Real; 22 / 65

Wielomiany usprawnienie Metoda Hornera: n a i x i = (...(a n x + a n 1 )x +... + a 1 )x + a 0. i=0 function Horner(n : Integer; a : array var i : Integer; w : Real; begin w := a[n]; 1 for i := n 1 downto 0 do 3 w := w x0 + a[i]; 3 Horner := w 1 end; of Real; x0 : Real) : Real; 22 / 65

Wielomiany usprawnienie Metoda Hornera: n a i x i = (...(a n x + a n 1 )x +... + a 1 )x + a 0. i=0 function Horner(n : Integer; a : array var i : Integer; w : Real; begin w := a[n]; 1 for i := n 1 downto 0 do 3 (n + 1) w := w x0 + a[i]; 3 n Horner := w 1 end; of Real; x0 : Real) : Real; 22 / 65

Wielomiany usprawnienie Metoda Hornera: n a i x i = (...(a n x + a n 1 )x +... + a 1 )x + a 0. i=0 function Horner(n : Integer; a : array var i : Integer; w : Real; begin w := a[n]; 1 for i := n 1 downto 0 do 3 (n + 1) w := w x0 + a[i]; 3 n Horner := w 1 end; of Real; x0 : Real) : Real; T (n) = t((n, a, x0)) = 6n + 5. 22 / 65

Asymptotyczna zªo»ono± Ustalmy funkcj g : N N (cz sto funkcj g uto»samiamy z jej wzorem g(n); dopuszczamy te» funkcje o warto±ciach w R + ). Def. Ω(g(n)) := {f (n) : c R+, n 0 N n n0 0 cg(n) f (n) }, 23 / 65

Asymptotyczna zªo»ono± Ustalmy funkcj g : N N (cz sto funkcj g uto»samiamy z jej wzorem g(n); dopuszczamy te» funkcje o warto±ciach w R + ). Def. Ω(g(n)) := {f (n) : c R+, n 0 N n n0 0 cg(n) f (n) }, O(g(n)) := {f (n) : c R+, n 0 N n n0 0 f (n) cg(n) }, 23 / 65

Asymptotyczna zªo»ono± Ustalmy funkcj g : N N (cz sto funkcj g uto»samiamy z jej wzorem g(n); dopuszczamy te» funkcje o warto±ciach w R + ). Def. Ω(g(n)) := {f (n) : c R+, n 0 N n n0 0 cg(n) f (n) }, O(g(n)) := {f (n) : c R+, n 0 N n n0 0 f (n) cg(n) }, Θ(g(n)) := {f (n) : c1,c 2 R +, n 0 N n n0 0 c 1 g(n) f (n) c 2 g(n) }. 23 / 65

Asymptotyczna zªo»ono± Ustalmy funkcj g : N N (cz sto funkcj g uto»samiamy z jej wzorem g(n); dopuszczamy te» funkcje o warto±ciach w R + ). Def. Ω(g(n)) := {f (n) : c R+, n 0 N n n0 0 cg(n) f (n) }, O(g(n)) := {f (n) : c R+, n 0 N n n0 0 f (n) cg(n) }, Θ(g(n)) := {f (n) : c1,c 2 R +, n 0 N n n0 0 c 1 g(n) f (n) c 2 g(n) }. Umowa. Zapis f (n) = Ω(g(n)) oznacza,»e f (n) Ω(g(n)) (analogicznie dla O, Θ). 23 / 65

Asymptotyczna zªo»ono± Gdy f (n) = Ω(g(n)), mówimy,»e g(n) jest asymptotyczn granic doln dla f (n) (lub,»e f (n) jest rz du co najmniej g(n)). 24 / 65

Asymptotyczna zªo»ono± Gdy f (n) = Ω(g(n)), mówimy,»e g(n) jest asymptotyczn granic doln dla f (n) (lub,»e f (n) jest rz du co najmniej g(n)). Gdy f (n) = O(g(n)), mówimy,»e g(n) jest asymptotyczn granic górn dla f (n) (lub,»e f (n) jest rz du co najwy»ej g(n)). 24 / 65

Asymptotyczna zªo»ono± Gdy f (n) = Ω(g(n)), mówimy,»e g(n) jest asymptotyczn granic doln dla f (n) (lub,»e f (n) jest rz du co najmniej g(n)). Gdy f (n) = O(g(n)), mówimy,»e g(n) jest asymptotyczn granic górn dla f (n) (lub,»e f (n) jest rz du co najwy»ej g(n)). Gdy f (n) = Θ(g(n)), mówimy,»e g(n) jest asymptotycznie dokªadnym oszacowaniem dla f (n) (lub,»e f (n) jest rz du dokªadnie g(n)). 24 / 65

Asymptotyczna zªo»ono± Gdy f (n) = Ω(g(n)), mówimy,»e g(n) jest asymptotyczn granic doln dla f (n) (lub,»e f (n) jest rz du co najmniej g(n)). Gdy f (n) = O(g(n)), mówimy,»e g(n) jest asymptotyczn granic górn dla f (n) (lub,»e f (n) jest rz du co najwy»ej g(n)). Gdy f (n) = Θ(g(n)), mówimy,»e g(n) jest asymptotycznie dokªadnym oszacowaniem dla f (n) (lub,»e f (n) jest rz du dokªadnie g(n)). Twierdzenie. Dla ka»dych dwóch funkcji f (n), g(n) zachodzi: f (n) Θ(g(n)) f (n) Ω(g(n)) f (n) O(g(n)). 24 / 65

Asymptotyczna zªo»ono± Najprostsze przykªady. (1) Niech f (n) = 5n 2. Wówczas oczywi±cie 0 5n 2 f (n) 5n 2, zatem f (n) = Θ(n 2 ) (za staªe c 1, c 2, n 0 mo»emy przyj odpowiednio 5, 5, 1 patrz def. zbioru Θ). 25 / 65

Asymptotyczna zªo»ono± Najprostsze przykªady. (1) Niech f (n) = 5n 2. Wówczas oczywi±cie 0 5n 2 f (n) 5n 2, zatem f (n) = Θ(n 2 ) (za staªe c 1, c 2, n 0 mo»emy przyj odpowiednio 5, 5, 1 patrz def. zbioru Θ). (2) Niech f (n) = n 2. Wówczas 0 n f (n) f (n) = Ω(n), 25 / 65

Asymptotyczna zªo»ono± Najprostsze przykªady. (1) Niech f (n) = 5n 2. Wówczas oczywi±cie 0 5n 2 f (n) 5n 2, zatem f (n) = Θ(n 2 ) (za staªe c 1, c 2, n 0 mo»emy przyj odpowiednio 5, 5, 1 patrz def. zbioru Θ). (2) Niech f (n) = n 2. Wówczas 0 n f (n) f (n) = Ω(n), 0 f (n) n 3 f (n) = O(n 3 ), 25 / 65

Asymptotyczna zªo»ono± Najprostsze przykªady. (1) Niech f (n) = 5n 2. Wówczas oczywi±cie 0 5n 2 f (n) 5n 2, zatem f (n) = Θ(n 2 ) (za staªe c 1, c 2, n 0 mo»emy przyj odpowiednio 5, 5, 1 patrz def. zbioru Θ). (2) Niech f (n) = n 2. Wówczas 0 n f (n) f (n) = Ω(n), ale 0 f (n) n 3 f (n) = O(n 3 ), f (n) / Θ(n 3 ), f (n) / Θ(n). 25 / 65

Asymptotyczna zªo»ono± (3) Niech f (n) = k, dla ustalonego k N (tj. f jest funkcj staª ). Wówczas oczywi±cie 0 k 1 f (n) k 1 zatem f (n) = Θ(1). 26 / 65

Asymptotyczna zªo»ono± (3) Niech f (n) = k, dla ustalonego k N (tj. f jest funkcj staª ). Wówczas oczywi±cie 0 k 1 f (n) k 1 zatem f (n) = Θ(1). (4) 2 n / Θ(n 2 ), n 2 / Θ(2 n ). 26 / 65

Asymptotyczna zªo»ono± (3) Niech f (n) = k, dla ustalonego k N (tj. f jest funkcj staª ). Wówczas oczywi±cie 0 k 1 f (n) k 1 zatem f (n) = Θ(1). (4) 2 n / Θ(n 2 ), n 2 / Θ(2 n ). (5) Dla b > 1 i d 0, n d = O(b n ). 26 / 65

Asymptotyczna zªo»ono± (3) Niech f (n) = k, dla ustalonego k N (tj. f jest funkcj staª ). Wówczas oczywi±cie 0 k 1 f (n) k 1 zatem f (n) = Θ(1). (4) 2 n / Θ(n 2 ), n 2 / Θ(2 n ). (5) Dla b > 1 i d 0, n d = O(b n ). (6) Dla b > 1 i d > 0, log b n = O(n d ). 26 / 65

Asymptotyczna zªo»ono± Inne wªasno±ci. 1 f (n) = Ω(f (n)), 27 / 65

Asymptotyczna zªo»ono± Inne wªasno±ci. 1 f (n) = Ω(f (n)), 2 f (n) = O(f (n)), 27 / 65

Asymptotyczna zªo»ono± Inne wªasno±ci. 1 f (n) = Ω(f (n)), 2 f (n) = O(f (n)), 3 f (n) = Θ(f (n)), 27 / 65

Asymptotyczna zªo»ono± Inne wªasno±ci. 1 f (n) = Ω(f (n)), 2 f (n) = O(f (n)), 3 f (n) = Θ(f (n)), 4 f (n) = Θ(g(n)) g(n) = Θ(f (n)), 27 / 65

Asymptotyczna zªo»ono± Inne wªasno±ci. 1 f (n) = Ω(f (n)), 2 f (n) = O(f (n)), 3 f (n) = Θ(f (n)), 4 f (n) = Θ(g(n)) g(n) = Θ(f (n)), 5 f (n) = O(g(n)) g(n) = Ω(f (n)), 27 / 65

Asymptotyczna zªo»ono± Inne wªasno±ci. 1 f (n) = Ω(f (n)), 2 f (n) = O(f (n)), 3 f (n) = Θ(f (n)), 4 f (n) = Θ(g(n)) g(n) = Θ(f (n)), 5 f (n) = O(g(n)) g(n) = Ω(f (n)), 6 f (n) = O(g(n)) g(n) = O(h(n)) f (n) = O(h(n)) (analogicznie dla Ω, Θ). 27 / 65

Asymptotyczna zªo»ono± Inne wªasno±ci. 1 f (n) = Ω(f (n)), 2 f (n) = O(f (n)), 3 f (n) = Θ(f (n)), 4 f (n) = Θ(g(n)) g(n) = Θ(f (n)), 5 f (n) = O(g(n)) g(n) = Ω(f (n)), 6 f (n) = O(g(n)) g(n) = O(h(n)) f (n) = O(h(n)) (analogicznie dla Ω, Θ). 7 Dla staªej d R +, df (n) = O(f (n)) (analogicznie dla Ω, Θ). 27 / 65

Asymptotyczna zªo»ono± Uwaga. Niech f (n) = a d n d + a d 1 n d 1 +... a 1 n + a 0, a d 0 (tj. f (n) jest wielomianem stopnia d). Wówczas 28 / 65

Asymptotyczna zªo»ono± Uwaga. Niech f (n) = a d n d + a d 1 n d 1 +... a 1 n + a 0, a d 0 (tj. f (n) jest wielomianem stopnia d). Wówczas k d f (n) = O(n k ), 28 / 65

Asymptotyczna zªo»ono± Uwaga. Niech f (n) = a d n d + a d 1 n d 1 +... a 1 n + a 0, a d 0 (tj. f (n) jest wielomianem stopnia d). Wówczas k d f (n) = O(n k ), k d f (n) = Ω(n k ), 28 / 65

Asymptotyczna zªo»ono± Uwaga. Niech f (n) = a d n d + a d 1 n d 1 +... a 1 n + a 0, a d 0 (tj. f (n) jest wielomianem stopnia d). Wówczas k d f (n) = O(n k ), k d f (n) = Ω(n k ), k = d f (n) = Θ(n k ). 28 / 65

Asymptotyczna zªo»ono± Ustalmy algorytm (program) P o zbiorze danych wej±ciowych D, funkcj rozmiaru danych r : D W oraz zbiór operacji J. Niech T : W N b dzie funkcj kosztu. 29 / 65

Asymptotyczna zªo»ono± Ustalmy algorytm (program) P o zbiorze danych wej±ciowych D, funkcj rozmiaru danych r : D W oraz zbiór operacji J. Niech T : W N b dzie funkcj kosztu. Def. Gdy T (n) = Ω(g(n)), mówimy,»e algorytm P ma zªo»ono± rz du co najmniej g(n). 29 / 65

Asymptotyczna zªo»ono± Ustalmy algorytm (program) P o zbiorze danych wej±ciowych D, funkcj rozmiaru danych r : D W oraz zbiór operacji J. Niech T : W N b dzie funkcj kosztu. Def. Gdy T (n) = Ω(g(n)), mówimy,»e algorytm P ma zªo»ono± rz du co najmniej g(n). Def. Gdy T (n) = O(g(n)), mówimy,»e algorytm P ma zªo»ono± rz du co najwy»ej g(n). 29 / 65

Asymptotyczna zªo»ono± Ustalmy algorytm (program) P o zbiorze danych wej±ciowych D, funkcj rozmiaru danych r : D W oraz zbiór operacji J. Niech T : W N b dzie funkcj kosztu. Def. Gdy T (n) = Ω(g(n)), mówimy,»e algorytm P ma zªo»ono± rz du co najmniej g(n). Def. Gdy T (n) = O(g(n)), mówimy,»e algorytm P ma zªo»ono± rz du co najwy»ej g(n). Def. Gdy T (n) = Θ(g(n)), mówimy,»e algorytm P ma zªo»ono± rz du g(n) (dokªadnie g(n)). 29 / 65

Asymptotyczna zªo»ono± Ustalmy algorytm (program) P o zbiorze danych wej±ciowych D, funkcj rozmiaru danych r : D W oraz zbiór operacji J. Niech T : W N b dzie funkcj kosztu. Def. Gdy T (n) = Ω(g(n)), mówimy,»e algorytm P ma zªo»ono± rz du co najmniej g(n). Def. Gdy T (n) = O(g(n)), mówimy,»e algorytm P ma zªo»ono± rz du co najwy»ej g(n). Def. Gdy T (n) = Θ(g(n)), mówimy,»e algorytm P ma zªo»ono± rz du g(n) (dokªadnie g(n)). Zªo»ono± = asymptotyczna pesymistyczna zªo»ono± obliczeniowa (czasowa). 29 / 65

Asymptotyczna zªo»ono± Wró my do rozwa»anych algorytmów. (1) Test pierwszo±ci. 30 / 65

Asymptotyczna zªo»ono± Wró my do rozwa»anych algorytmów. (1) Test pierwszo±ci. 12 t(n) 7 n + 7. 30 / 65

Asymptotyczna zªo»ono± Wró my do rozwa»anych algorytmów. (1) Test pierwszo±ci. 12 t(n) 7 n + 7. Przy trywialnej funkcji rozmiaru danych r(n) = n, mamy T (n) = t(n). 30 / 65

Asymptotyczna zªo»ono± Wró my do rozwa»anych algorytmów. (1) Test pierwszo±ci. 12 t(n) 7 n + 7. Przy trywialnej funkcji rozmiaru danych r(n) = n, mamy T (n) = t(n). St d T (n) = O( n), 30 / 65

Asymptotyczna zªo»ono± Wró my do rozwa»anych algorytmów. (1) Test pierwszo±ci. 12 t(n) 7 n + 7. Przy trywialnej funkcji rozmiaru danych r(n) = n, mamy T (n) = t(n). St d T (n) = O( n), ale T (n) / Ω( n), wi c T (n) / Θ( n). 30 / 65

Asymptotyczna zªo»ono± Wró my do rozwa»anych algorytmów. (1) Test pierwszo±ci. 12 t(n) 7 n + 7. Przy trywialnej funkcji rozmiaru danych r(n) = n, mamy T (n) = t(n). St d T (n) = O( n), ale T (n) / Ω( n), wi c T (n) / Θ( n). Nasz algorytm ma zªo»ono± rz du co najwy»ej n. 30 / 65

Asymptotyczna zªo»ono± (2) Naiwny algorytm liczenia warto±ci wielomianu. 31 / 65

Asymptotyczna zªo»ono± (2) Naiwny algorytm liczenia warto±ci wielomianu. T (n) = 5 2 n2 + 25 2 n + 15. 31 / 65

Asymptotyczna zªo»ono± (2) Naiwny algorytm liczenia warto±ci wielomianu. St d T (n) = 5 2 n2 + 25 2 n + 15. T (n) = Θ(n 2 ), wi c algorytm ma zªo»ono± dokªadnie rz du n 2 (wielomianow stopnia 2 lub kwadratow ). 31 / 65

Asymptotyczna zªo»ono± (2) Naiwny algorytm liczenia warto±ci wielomianu. St d T (n) = 5 2 n2 + 25 2 n + 15. T (n) = Θ(n 2 ), wi c algorytm ma zªo»ono± dokªadnie rz du n 2 (wielomianow stopnia 2 lub kwadratow ). (3) Algorytm liczenia warto±ci wielomianu metod Hornera. 31 / 65

Asymptotyczna zªo»ono± (2) Naiwny algorytm liczenia warto±ci wielomianu. St d T (n) = 5 2 n2 + 25 2 n + 15. T (n) = Θ(n 2 ), wi c algorytm ma zªo»ono± dokªadnie rz du n 2 (wielomianow stopnia 2 lub kwadratow ). (3) Algorytm liczenia warto±ci wielomianu metod Hornera. St d T (n) = 6n + 5. T (n) = Θ(n), wi c algorytm ma zªo»ono± dokªadnie rz du n (liniow ). 31 / 65

Asymptotyczna zªo»ono± Zaªó»my,»e komputer I wykonuje 10 6 operacji na sekund, komputer II wykonuje 10 9 operacji na sekund, rozmiar danych: 10 5. T (n) czas I czas II n n log n n 2 3n 2 n 3 2 n 32 / 65

Asymptotyczna zªo»ono± Zaªó»my,»e komputer I wykonuje 10 6 operacji na sekund, komputer II wykonuje 10 9 operacji na sekund, rozmiar danych: 10 5. T (n) czas I czas II n 0, 1 s. 0, 0001 s. n log n n 2 3n 2 n 3 2 n 32 / 65

Asymptotyczna zªo»ono± Zaªó»my,»e komputer I wykonuje 10 6 operacji na sekund, komputer II wykonuje 10 9 operacji na sekund, rozmiar danych: 10 5. T (n) czas I czas II n 0, 1 s. 0, 0001 s. n log n 1, 6 s. 0, 0016 s. n 2 3n 2 n 3 2 n 32 / 65

Asymptotyczna zªo»ono± Zaªó»my,»e komputer I wykonuje 10 6 operacji na sekund, komputer II wykonuje 10 9 operacji na sekund, rozmiar danych: 10 5. T (n) czas I czas II n 0, 1 s. 0, 0001 s. n log n 1, 6 s. 0, 0016 s. n 2 2 h. 45 min. 10 s. 3n 2 n 3 2 n 32 / 65

Asymptotyczna zªo»ono± Zaªó»my,»e komputer I wykonuje 10 6 operacji na sekund, komputer II wykonuje 10 9 operacji na sekund, rozmiar danych: 10 5. T (n) czas I czas II n 0, 1 s. 0, 0001 s. n log n 1, 6 s. 0, 0016 s. n 2 2 h. 45 min. 10 s. 3n 2 8 h. 15 min. 30 s. n 3 2 n 32 / 65

Asymptotyczna zªo»ono± Zaªó»my,»e komputer I wykonuje 10 6 operacji na sekund, komputer II wykonuje 10 9 operacji na sekund, rozmiar danych: 10 5. T (n) czas I czas II n 0, 1 s. 0, 0001 s. n log n 1, 6 s. 0, 0016 s. n 2 2 h. 45 min. 10 s. 3n 2 8 h. 15 min. 30 s. n 3 32 lata 11,5 dnia 2 n 32 / 65

Asymptotyczna zªo»ono± Zaªó»my,»e komputer I wykonuje 10 6 operacji na sekund, komputer II wykonuje 10 9 operacji na sekund, rozmiar danych: 10 5. T (n) czas I czas II n 0, 1 s. 0, 0001 s. n log n 1, 6 s. 0, 0016 s. n 2 2 h. 45 min. 10 s. 3n 2 8 h. 15 min. 30 s. n 3 32 lata 11,5 dnia 2 n 3,2 10 30089 lat 3,2 10 30086 lat 32 / 65

Asymptotyczna zªo»ono± Zaªó»my,»e komputer I wykonuje 10 6 operacji na sekund, komputer II wykonuje 10 9 operacji na sekund, rozmiar danych: 10 5. T (n) czas I czas II n 0, 1 s. 0, 0001 s. n log n 1, 6 s. 0, 0016 s. n 2 2 h. 45 min. 10 s. 3n 2 8 h. 15 min. 30 s. n 3 32 lata 11,5 dnia 2 n 3,2 10 30089 lat 3,2 10 30086 lat Wiek Wszech±wiata: 10 10 9 lat! 32 / 65

Sortowanie Sortowanie = ustawienie obiektów ustalonego typu (np. liczb, ci gów znaków...) wedªug ustalonego porz dku (np.,, porz dek leksykograczny...). 33 / 65

Sortowanie Sortowanie = ustawienie obiektów ustalonego typu (np. liczb, ci gów znaków...) wedªug ustalonego porz dku (np.,, porz dek leksykograczny...). Lub ogólniej: porz dkowanie rekordów wzgl dem pewnego pola klucza. 33 / 65

Sortowanie przez wstawianie 5 2 4 6 1 3 34 / 65

Sortowanie przez wstawianie 5 2 4 6 1 3 5 2 4 6 1 3 34 / 65

Sortowanie przez wstawianie 5 2 4 6 1 3 5 2 4 6 1 3 2 5 4 6 1 3 34 / 65

Sortowanie przez wstawianie 5 2 4 6 1 3 5 2 4 6 1 3 2 5 4 6 1 3 2 4 5 6 1 3 34 / 65

Sortowanie przez wstawianie 5 2 4 6 1 3 5 2 4 6 1 3 2 5 4 6 1 3 2 4 5 6 1 3 2 4 5 6 1 3 34 / 65

Sortowanie przez wstawianie 5 2 4 6 1 3 5 2 4 6 1 3 2 5 4 6 1 3 2 4 5 6 1 3 2 4 5 6 1 3 1 2 4 5 6 3 34 / 65

Sortowanie przez wstawianie 5 2 4 6 1 3 5 2 4 6 1 3 2 5 4 6 1 3 2 4 5 6 1 3 2 4 5 6 1 3 1 2 4 5 6 3 1 2 3 4 5 6 34 / 65

Sortowanie przez wstawianie Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. 35 / 65

Sortowanie przez wstawianie Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. Analiza zªo»ono±ci zbiór danych wej±ciowych: D = {(n, A) : n N, A R n }, 35 / 65

Sortowanie przez wstawianie Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. Analiza zªo»ono±ci zbiór danych wej±ciowych: D = {(n, A) : n N, A R n }, zbiór rozmiarów W = N, 35 / 65

Sortowanie przez wstawianie Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. Analiza zªo»ono±ci zbiór danych wej±ciowych: D = {(n, A) : n N, A R n }, zbiór rozmiarów W = N, funkcja rozmiaru r : D W, r((n, A)) = n. 35 / 65

Sortowanie przez wstawianie Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. 36 / 65

Sortowanie przez wstawianie Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. 1 begin 2 for j := 2 to n do 3 begin 4 klucz := A[j]; 5 i := j 1; 6 while (i > 0) and (A[i] > klucz) do 7 begin 8 A[i + 1] := A[i]; 9 i := i 1 10 end; 11 A[i + 1] := klucz 12 end 13 end 36 / 65

Sortowanie przez wstawianie Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. 1 begin 2 for j := 2 to n do n 3 begin 4 klucz := A[j]; n 1 5 i := j 1; n 1 6 while (i > 0) and (A[i] > klucz) do 7 begin 8 A[i + 1] := A[i]; 9 i := i 1 10 end; 11 A[i + 1] := klucz n 1 12 end 13 end 36 / 65

Sortowanie przez wstawianie Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. 1 begin 2 for j := 2 to n do n 3 begin 4 klucz := A[j]; n 1 5 i := j 1; n 1 6 while (i > 0) and (A[i] > nj=2 klucz) do (t j + 1) 7 begin 8 A[i + 1] := nj=2 A[i]; t j 9 i := i nj=2 1 t j 10 end; 11 A[i + 1] := klucz n 1 12 end 13 end t j = liczba wykona«ciaªa wewn trznej p tli dla j {2,..., n}. 36 / 65

Sortowanie przez wstawianie Peªna funkcja kosztu: n t((n, A)) = (4n 3) + 2 t j + n n (t j + 1) = (5n 4) + 3 (zale»y od A!). t j j=2 j=2 j=2 37 / 65

Sortowanie przez wstawianie Peªna funkcja kosztu: n t((n, A)) = (4n 3) + 2 t j + n n (t j + 1) = (5n 4) + 3 (zale»y od A!). Przypadek optymistyczny: A posortowana t j j=2 j=2 j=2 37 / 65

Sortowanie przez wstawianie Peªna funkcja kosztu: n t((n, A)) = (4n 3) + 2 t j + n n (t j + 1) = (5n 4) + 3 (zale»y od A!). j=2 j=2 Przypadek optymistyczny: A posortowana t j = 0 t j j=2 37 / 65

Sortowanie przez wstawianie Peªna funkcja kosztu: n t((n, A)) = (4n 3) + 2 t j + n n (t j + 1) = (5n 4) + 3 (zale»y od A!). j=2 j=2 Przypadek optymistyczny: A posortowana t j = 0 t((n, A)) = 5n 4 = Θ(n). t j j=2 37 / 65

Sortowanie przez wstawianie Peªna funkcja kosztu: n t((n, A)) = (4n 3) + 2 t j + n n (t j + 1) = (5n 4) + 3 (zale»y od A!). j=2 j=2 Przypadek optymistyczny: A posortowana t j = 0 t((n, A)) = 5n 4 = Θ(n). Przypadek pesymistyczny: A posortowana odwrotnie t j j=2 37 / 65

Sortowanie przez wstawianie Peªna funkcja kosztu: n t((n, A)) = (4n 3) + 2 t j + n n (t j + 1) = (5n 4) + 3 (zale»y od A!). j=2 j=2 Przypadek optymistyczny: A posortowana t j = 0 t((n, A)) = 5n 4 = Θ(n). Przypadek pesymistyczny: A posortowana odwrotnie t j = j 1 t j j=2 37 / 65

Sortowanie przez wstawianie Peªna funkcja kosztu: n t((n, A)) = (4n 3) + 2 t j + n n (t j + 1) = (5n 4) + 3 (zale»y od A!). j=2 j=2 Przypadek optymistyczny: A posortowana t j = 0 t((n, A)) = 5n 4 = Θ(n). Przypadek pesymistyczny: A posortowana odwrotnie t j = j 1 t((n, A)) = 5n 4 + 3 n(n 1) 2 = 3 2 n2 + 7 2 n 4 = Θ(n2 ). t j j=2 37 / 65

Sortowanie przez wstawianie Peªna funkcja kosztu: n t((n, A)) = (4n 3) + 2 t j + n n (t j + 1) = (5n 4) + 3 (zale»y od A!). j=2 j=2 Przypadek optymistyczny: A posortowana t j = 0 t((n, A)) = 5n 4 = Θ(n). Przypadek pesymistyczny: A posortowana odwrotnie t j = j 1 t((n, A)) = 5n 4 + 3 n(n 1) 2 = 3 2 n2 + 7 2 n 4 = Θ(n2 ). Funkcja kosztu: T (n) = 3 2 n2 + 7 2 n 4 = Θ(n2 ). t j j=2 37 / 65

Sortowanie przez wstawianie Problem: czy przypadek pesymistyczny jest bardzo oddalony od przypadku ±redniego? 38 / 65

Sortowanie przez wstawianie Problem: czy przypadek pesymistyczny jest bardzo oddalony od przypadku ±redniego? Przypadek ±redni: A jest tablic wygenerowan losowo 38 / 65

Sortowanie przez wstawianie Problem: czy przypadek pesymistyczny jest bardzo oddalony od przypadku ±redniego? Przypadek ±redni: A jest tablic wygenerowan losowo w podtablicy A[1..j 1] ±rednio poªowa elementów jest wi ksza ni» A[j], 38 / 65

Sortowanie przez wstawianie Problem: czy przypadek pesymistyczny jest bardzo oddalony od przypadku ±redniego? Przypadek ±redni: A jest tablic wygenerowan losowo w podtablicy A[1..j 1] ±rednio poªowa elementów jest wi ksza ni» A[j], t j j 2, 38 / 65

Sortowanie przez wstawianie Problem: czy przypadek pesymistyczny jest bardzo oddalony od przypadku ±redniego? Przypadek ±redni: A jest tablic wygenerowan losowo w podtablicy A[1..j 1] ±rednio poªowa elementów jest wi ksza ni» A[j], t j j 2, t((n, A)) 5n 4 + 3 n2 +n 2 4 = 3 4 n2 + 23 4 n 11 2 = Θ(n2 ). 38 / 65

Sortowanie przez wstawianie Problem: czy przypadek pesymistyczny jest bardzo oddalony od przypadku ±redniego? Przypadek ±redni: A jest tablic wygenerowan losowo w podtablicy A[1..j 1] ±rednio poªowa elementów jest wi ksza ni» A[j], t j j 2, t((n, A)) 5n 4 + 3 n2 +n 2 4 = 3 4 n2 + 23 4 n 11 2 = Θ(n2 ). Odpowied¹: nie bardzo! 38 / 65

Sortowanie Inne algorytmy sortowania: sortowanie przez wybieranie Θ(n 2 ), 39 / 65

Sortowanie Inne algorytmy sortowania: sortowanie przez wybieranie Θ(n 2 ), sortowanie b belkowe Θ(n 2 ), 39 / 65

Sortowanie Inne algorytmy sortowania: sortowanie przez wybieranie Θ(n 2 ), sortowanie b belkowe Θ(n 2 ), sortowanie szybkie (quicksort) Θ(n 2 ), Θ(n log n), 39 / 65

Sortowanie Inne algorytmy sortowania: sortowanie przez wybieranie Θ(n 2 ), sortowanie b belkowe Θ(n 2 ), sortowanie szybkie (quicksort) Θ(n 2 ), Θ(n log n), sortowanie przez kopcowanie (kopcowe, stogowe, heapsort) Θ(n log n), 39 / 65

Sortowanie Inne algorytmy sortowania: sortowanie przez wybieranie Θ(n 2 ), sortowanie b belkowe Θ(n 2 ), sortowanie szybkie (quicksort) Θ(n 2 ), Θ(n log n), sortowanie przez kopcowanie (kopcowe, stogowe, heapsort) Θ(n log n), sortowanie przez scalanie (mergesort) Θ(n log n), 39 / 65

Sortowanie Inne algorytmy sortowania: sortowanie przez wybieranie Θ(n 2 ), sortowanie b belkowe Θ(n 2 ), sortowanie szybkie (quicksort) Θ(n 2 ), Θ(n log n), sortowanie przez kopcowanie (kopcowe, stogowe, heapsort) Θ(n log n), sortowanie przez scalanie (mergesort) Θ(n log n), sortowanie przez zliczanie (countingsort) Θ(n) (przy pewnych zaªo»eniach). 39 / 65

Wska¹niki Przypomnienie. Wa»niejsze typy danych w Pascalu 40 / 65

Wska¹niki Przypomnienie. Wa»niejsze typy danych w Pascalu proste (jak ShortInt, Byte, Word, Integer, LongInt, Boolean, Char, Real, Double...), 40 / 65

Wska¹niki Przypomnienie. Wa»niejsze typy danych w Pascalu proste (jak ShortInt, Byte, Word, Integer, LongInt, Boolean, Char, Real, Double...), ªa«cuchowe (string), 40 / 65

Wska¹niki Przypomnienie. Wa»niejsze typy danych w Pascalu proste (jak ShortInt, Byte, Word, Integer, LongInt, Boolean, Char, Real, Double...), ªa«cuchowe (string), strukturalne (array, record, set, file,...). 40 / 65

Wska¹niki Przypomnienie. Wa»niejsze typy danych w Pascalu proste (jak ShortInt, Byte, Word, Integer, LongInt, Boolean, Char, Real, Double...), ªa«cuchowe (string), strukturalne (array, record, set, file,...). Zmienne tych typów nazywamy zmiennymi statycznymi, gdy» istniej przez caªy czas wykonywania cz ±ci programu, w której s zadeklarowane. 40 / 65

Wska¹niki Przypomnienie. Rekord = statyczna struktura danych której skªadowe (pola) mog nale»e do ró»nych typów; liczba pól jest ustalona. 41 / 65

Wska¹niki Przypomnienie. Rekord = statyczna struktura danych której skªadowe (pola) mog nale»e do ró»nych typów; liczba pól jest ustalona. Denicja typu rekordowego: type identykator-typu = record lista-deklaracji-pól end; Ka»da z deklaracji pól ma posta lista-nazw-pól : opis-typu; 41 / 65

Przykªad. Wska¹niki type dane = record wiek : Integer; nazwisko : string[30] end; 42 / 65

Przykªad. Wska¹niki type dane = record wiek : Integer; nazwisko : string[30] end; Mo»emy zadeklarowa zmienn zdeniowanego typu dane: var mojedane : dane; 42 / 65

Przykªad. Wska¹niki type dane = record wiek : Integer; nazwisko : string[30] end; Mo»emy zadeklarowa zmienn zdeniowanego typu dane: var mojedane : dane; Do pól zmiennej rekordowej odwoªujemy si za pomoc kropki: mojedane.wiek := 100; 42 / 65

Wska¹niki W Pascalu mamy te» zmienne dynamiczne = reprezentuj ce obiekty, dla których pami jest przydzielana i zwalniana na okre±lone» danie (w trakcie wykonania programu). 43 / 65

Wska¹niki W Pascalu mamy te» zmienne dynamiczne = reprezentuj ce obiekty, dla których pami jest przydzielana i zwalniana na okre±lone» danie (w trakcie wykonania programu). Zmienne dynamiczne nie posiadaj identykatorów, 43 / 65

Wska¹niki W Pascalu mamy te» zmienne dynamiczne = reprezentuj ce obiekty, dla których pami jest przydzielana i zwalniana na okre±lone» danie (w trakcie wykonania programu). Zmienne dynamiczne nie posiadaj identykatorów, odwoªanie do nich za pomoc wska¹nika, 43 / 65

Wska¹niki W Pascalu mamy te» zmienne dynamiczne = reprezentuj ce obiekty, dla których pami jest przydzielana i zwalniana na okre±lone» danie (w trakcie wykonania programu). Zmienne dynamiczne nie posiadaj identykatorów, odwoªanie do nich za pomoc wska¹nika, wska¹nik = adres pami ci zmiennej dynamicznej = element typu wska¹nikowego, 43 / 65

Wska¹niki W Pascalu mamy te» zmienne dynamiczne = reprezentuj ce obiekty, dla których pami jest przydzielana i zwalniana na okre±lone» danie (w trakcie wykonania programu). Zmienne dynamiczne nie posiadaj identykatorów, odwoªanie do nich za pomoc wska¹nika, wska¹nik = adres pami ci zmiennej dynamicznej = element typu wska¹nikowego, zastosowanie zmiennych dynamicznych wymaga zdeniowania odpowiednich typów wska¹nikowych. 43 / 65

Wska¹niki Denicja typu wska¹nikowego: type identykator-typu = ^ identykator-typu-bazowego; identykator-typu-bazowego = typ, którego dane b d wskazywane przez zmienne typu identykator-typu. 44 / 65

Wska¹niki Denicja typu wska¹nikowego: type identykator-typu = ^ identykator-typu-bazowego; identykator-typu-bazowego = typ, którego dane b d wskazywane przez zmienne typu identykator-typu. identykator-typu-bazowego mo»e, ale nie musi by wcze±niej okre±lony, 44 / 65

Wska¹niki Denicja typu wska¹nikowego: type identykator-typu = ^ identykator-typu-bazowego; identykator-typu-bazowego = typ, którego dane b d wskazywane przez zmienne typu identykator-typu. identykator-typu-bazowego mo»e, ale nie musi by wcze±niej okre±lony, je»eli nie jest wcze±niej okre±lony, powinien zosta okre±lony w tej samej klauzuli type. 44 / 65

Wska¹niki Denicja typu wska¹nikowego: type identykator-typu = ^ identykator-typu-bazowego; identykator-typu-bazowego = typ, którego dane b d wskazywane przez zmienne typu identykator-typu. identykator-typu-bazowego mo»e, ale nie musi by wcze±niej okre±lony, je»eli nie jest wcze±niej okre±lony, powinien zosta okre±lony w tej samej klauzuli type. Uwaga. Sªowo kluczowe nil = staªa typu wska¹nikowego nie okre±laj ca»adnego adresu (inaczej: okre±laj ca adres pusty). 44 / 65

Przykªad. Wska¹niki type typ_wskaz = ^moj_typ; moj_typ = record liczba : Integer; napis : string[30] end; 45 / 65

Przykªad. Wska¹niki type typ_wskaz = ^moj_typ; moj_typ = record liczba : Integer; napis : string[30] end; Mo»emy zadeklarowa zmienn zdeniowanego typu: var wskaz : typ_wskaz; Zmiennej wska¹nikowej wskaz b d mogªy by w programie przypisywane adresy pami ci danych typu moj_typ. 45 / 65

Przykªad. Wska¹niki type typ_wskaz = ^moj_typ; moj_typ = record liczba : Integer; napis : string[30] end; Mo»emy zadeklarowa zmienn zdeniowanego typu: var wskaz : typ_wskaz; Zmiennej wska¹nikowej wskaz b d mogªy by w programie przypisywane adresy pami ci danych typu moj_typ. U»ycie: wskaz^ = zmienna wskazywana przez zmienn wska¹nikow wskaz = rekord typu moj_typ (o adresie okre±lonym przez wskaz). 45 / 65

Wska¹niki Dwa sposoby deklaracji zmiennej wska¹nikowej. Sposób 1. type typ_wskaz = ^moj_typ; moj_typ = record liczba : Integer; napis : string[30] end; var wskaz : typ_wskaz; 46 / 65

Wska¹niki Dwa sposoby deklaracji zmiennej wska¹nikowej. Sposób 1. type typ_wskaz = ^moj_typ; moj_typ = record liczba : Integer; napis : string[30] end; var wskaz : typ_wskaz; Sposób 2. type moj_typ = record liczba : Integer; napis : string[30] end; var wskaz : ^moj_typ; 46 / 65

Wska¹niki Dwa sposoby deklaracji zmiennej wska¹nikowej. Sposób 1. type typ_wskaz = ^moj_typ; moj_typ = record liczba : Integer; napis : string[30] end; var wskaz : typ_wskaz; Sposób 2. type moj_typ = record liczba : Integer; napis : string[30] end; var wskaz : ^moj_typ; Uwaga. Zmienna wska¹nikowa ma na pocz tku warto± nil. 46 / 65

Dynamiczny przydziaª pami ci Tworzenie zmiennej dynamicznej (zmiennej wskazywanej) i ustalenie zmiennej wska¹nikowej wskazuj cej na ni : New(zmienna-wskaznikowa); 47 / 65

Dynamiczny przydziaª pami ci Tworzenie zmiennej dynamicznej (zmiennej wskazywanej) i ustalenie zmiennej wska¹nikowej wskazuj cej na ni : New(zmienna-wskaznikowa); utworzonej zmiennej dynamicznej zostanie przydzielony blok pami ci, którego rozmiar = rozmiar typu, z którym zwi zana jest zmienna-wska¹nikowa, 47 / 65

Dynamiczny przydziaª pami ci Tworzenie zmiennej dynamicznej (zmiennej wskazywanej) i ustalenie zmiennej wska¹nikowej wskazuj cej na ni : New(zmienna-wskaznikowa); utworzonej zmiennej dynamicznej zostanie przydzielony blok pami ci, którego rozmiar = rozmiar typu, z którym zwi zana jest zmienna-wska¹nikowa, je»eli brakuje pami ci, wyst pi bª d, 47 / 65

Dynamiczny przydziaª pami ci Tworzenie zmiennej dynamicznej (zmiennej wskazywanej) i ustalenie zmiennej wska¹nikowej wskazuj cej na ni : New(zmienna-wskaznikowa); utworzonej zmiennej dynamicznej zostanie przydzielony blok pami ci, którego rozmiar = rozmiar typu, z którym zwi zana jest zmienna-wska¹nikowa, je»eli brakuje pami ci, wyst pi bª d, przydzielenie bloku o konkretnym rozmiarze: GetMem(zmienna-wskaznikowa,rozmiar); 47 / 65

Dynamiczny przydziaª pami ci Tworzenie zmiennej dynamicznej (zmiennej wskazywanej) i ustalenie zmiennej wska¹nikowej wskazuj cej na ni : New(zmienna-wskaznikowa); utworzonej zmiennej dynamicznej zostanie przydzielony blok pami ci, którego rozmiar = rozmiar typu, z którym zwi zana jest zmienna-wska¹nikowa, je»eli brakuje pami ci, wyst pi bª d, przydzielenie bloku o konkretnym rozmiarze: GetMem(zmienna-wskaznikowa,rozmiar); dla zmiennej dynamicznej typu obiektowego, wywoªanie: New(zmienna-wskaznikowa, konstruktor); 47 / 65