Programowanie. Dariusz Wardecki, wyk. II. wtorek, 26 lutego 13

Podobne dokumenty
Wstęp do programowania. Dariusz Wardecki, wyk. I

Wstęp do programowania. Dariusz Wardecki, wyk. V

Wstęp do programowania, część I

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 5. Karol Tarnowski A-1 p.

Pracownia komputerowa. Dariusz Wardecki, wyk. V

Algorytmy i struktury danych. Wykład 4

Algorytm. a programowanie -

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Pracownia komputerowa. Dariusz Wardecki, wyk. VI

Dr inż. Robert Wójcik, p. 313, C-3, tel Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska

ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu:

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska,

Największy wspólny dzielnik Algorytm Euklidesa (także rozszerzony) WZAiP1: Chińskie twierdzenie o resztach

Algorytmy w teorii liczb

Przykładowe zadania z teorii liczb

Pracownia komputerowa. Dariusz Wardecki, wyk. VIII

Pracownia komputerowa

im = (P )={b 2 R : 9a 2 P [b = (a)]} nazywamy obrazem homomorfizmu.

Metoda CPM/PERT. dr inø. Mariusz Makuchowski

Wstęp do programowania. Dariusz Wardecki, wyk. VI

1. Liczby wymierne. x dla x 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba)

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Treść wykładu. Pierścienie wielomianów. Dzielenie wielomianów i algorytm Euklidesa Pierścienie ilorazowe wielomianów

Wybrane zagadnienia teorii liczb

Technologie informacyjne Wykład VII-IX

Algorytm i złożoność obliczeniowa algorytmu

Pracownia komputerowa. Dariusz Wardecki, wyk. IV

Wieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa

Egzamin z GAL-u (Informatyka) 2. termin 19/02/2019 CzÍúÊ teoretyczna I

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.

2. Liczby pierwsze i złożone, jednoznaczność rozkładu na czynniki pierwsze, największy wspólny dzielnik, najmniejsza wspólna wielokrotność.

Egzamin z Metod Numerycznych ZSI, Egzamin, Gr. A

Zadania do samodzielnego rozwiązania

Matematyka dyskretna

WHILE (wyrażenie) instrukcja;

KONSPEKT FUNKCJE cz. 1.

Wstęp do programowania. Dariusz Wardecki, wyk. III

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa.

TEORETYCZNE PODSTAWY INFORMATYKI

Matematyka dyskretna

Podstawy Informatyki. Algorytmy i ich poprawność

Proste programy w C++ zadania

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

B.B. 2. Sumowanie rozpoczynamy od ostatniej kolumny. Sumujemy cyfry w kolumnie zgodnie z podaną tabelką zapisując wynik pod kreską:

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

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

ZADANIE 1. Ważenie (14 pkt)

Rekurencja (rekursja)

WHILE (wyrażenie) instrukcja;

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Matematyka dyskretna

Arytmetyka. Działania na liczbach, potęga, pierwiastek, logarytm

Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

Matematyka dyskretna

Podstawy programowania. Podstawy C# Przykłady algorytmów

Wstęp do programowania. Dariusz Wardecki, wyk. X

5. Rekurencja. Przykłady

Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych

Matematyka dyskretna

Liczby całkowite. Zadania do pierwszych dwóch lekcji

h pg fq ph gq f. IdentycznoúÊ:: dla kaødego obiektu B P C istnieje morfizm B 1 B

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Jarosław Wróblewski Matematyka Elementarna, lato 2012/13. W dniu 21 lutego 2013 r. omawiamy test kwalifikacyjny.

Lista 0. Kamil Matuszewski 1 marca 2016

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

I V X L C D M. Przykłady liczb niewymiernych: 3; 2

Luty 2001 Algorytmy (8) 2000/2001

Haszowanie. dr inż. Urszula Gałązka

Podstawy nauk przyrodniczych Matematyka Wstęp

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

Piotr Chrząstowski-Wachtel Uniwersytet Warszawski. Al Chwarizmi i trzy algorytmy Euklidesa

EGZAMIN MATURALNY Z INFORMATYKI

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

1. Liczby naturalne, podzielność, silnie, reszty z dzielenia

Program zajęć pozalekcyjnych z matematyki poziom rozszerzony- realizowanych w ramach projektu Przez naukę i praktykę na Politechnikę

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Pracownia Komputerowa wyk ad V

EGZAMIN MATURALNY Z INFORMATYKI. 10 maja 2017 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I

Algorytmy i struktury danych

Wstęp do informatyki- wykład 1 Systemy liczbowe

ALGORYTMY I STRUKTURY DANYCH

Ciała i wielomiany 1. przez 1, i nazywamy jedynką, zaś element odwrotny do a 0 względem działania oznaczamy przez a 1, i nazywamy odwrotnością a);

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Efektywność Procedur Obliczeniowych. wykład 5

1. Równania i nierówności liniowe

do instrukcja while (wyrażenie);

Informatyka 1. Złożoność obliczeniowa

1. Wykład NWD, NWW i algorytm Euklidesa.

Praca domowa nr 1. a a b a b ; b c. c a bc d ef gh. 2) Napisz kod sprawdzający poniższe warunki sformułowane w języku naturalnym:

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Luty 2001 Algorytmy (7) 2000/2001

Zadanie 1. Suma silni (11 pkt)

Systemy liczbowe używane w technice komputerowej

Wymagania edukacyjne z matematyki na poszczególne do klasy VII szkoły podstawowej na rok szkolny 2018/2019

Transkrypt:

Programowanie Dariusz Wardecki, wyk. II

Powtórzenie Co wypisze program? char x, y, z; x = '1'; y = '3'; z = x + y; cout << z << endl;

Powtórzenie Znajdź błąd w poniższym fragmencie kodu? short int x, y; x = 65535; y = x + 1; cout << y << endl;

Algorytmy Algorytm SkoÒczony zbiór dobrze zdefiniowanych instrukcji przeznaczony do wykonania okreúlonego zadania, który przy ustalonym stanie poczπtkowym pozwala na uzyskanie odpowiedniego, rozpoznawalnego stanu koòcowego w skoòczonym czasie. W uproszczeniu Metoda poszukiwania (lub tworzenia) rozwiπzania zadanego problemu.

Algorytmy Stan poczπtkowy dla algorytmu Dane wejúciowe (ang. input data). Stan koòcowy dla algorytmu Wynik (ang. result). Definicja poprawnoúci algorytmu Algorytm jest poprawny (ang. correct), gdy dla kaødych dopuszczalnych danych wejúciowych jednoczeúnie spe nione sπ dwa nastípujπce warunki: 1 Wynik jest otrzymywany w skoòczonej liczbie kroków problem zatrzymania (stopu). 2 Wynik stanowi rozwiπzanie problemu, dla którego algorytm zosta stworzony.

Algorytmy Przykłady: Oblicznie reszty z dzielenia (operacja modulo) Algorytm Euklidesa Sito Eratostenesa Uniwersalny algorytm mnożenia (russian peasant algorithm) Przeszukiwanie binarne (ang. binary search) lub bisekcja (ang. bisection)

Algorytmy Obliczanie reszty z dzielenia niech n i m będą liczbami naturalnymi, n > m 1.Niech k = n 2.Jeśli k < m, to k jest resztą z dzielenia, k = n%m 3.Niech k = k - m 4.Przejdź do kroku 2

Algorytm Euklidesa Algorytmy Niech n i m będą liczbami nauralnymi, n > m. Wyznaczamy największy wspólny dzielnik n i m, czyli NWD(n, m) Obserwacja Jeśli r jest resztą z dzielenia n przez m, to n = km + r (dla pewnego całkowitego k), więc NWD(n, m) = NWD(m, r)

Algorytm Euklidesa Algorytmy Niech a, b i r będą miejscami do przechowywania wyników 1.Niech a = n i b = m. 2.Niech r = a%b (resztę z dzielenia a/b zapisujemy w r). 3.Jeśli r = 0, to NWD(n, m) = b. 4.Niech a = b i b = r. 5.Przejdź do kroku 2.

Algorytmy Sito Eratostenesa - chcemy ustalić, które z liczb naturalnych nie większych od zadanego N są liczbami pierwszymi. A = {2,3,, N}, k i m - miejsca do przechowywania pośrednich wyników 1) Niech k = 2 2) Jeśli k² > N, zbiór A zawiera tylko liczby pierwsze 3) Usuwamy z A wszystkie wielokrotności k, począwszy od k² 4) W m zapisz najmniejszą liczbę ze zbioru A większą od k. 5) Niech k = m. 6) Przejdź do kroku 2).

Algorytmy Sito Eratostenesa - chcemy ustalić, które z liczb naturalnych nie większych od zadanego N są liczbami pierwszymi. A = {2,3,, N}, k i m - miejsca do przechowywania pośrednich wyników 1) Niech k = 2 2) Jeśli k² > N, zbiór A zawiera tylko liczby pierwsze 3) Usuwamy z A wszystkie wielokrotności k, począwszy od k² 4) W m zapisz najmniejszą liczbę ze zbioru A większą od k. 5) Niech k = m. 6) Przejdź do kroku 2).

Algorytmy Uniwersalny algorytm mnożenia Russian peasant algorithm Obliczamy wynik mnoøenia dwóch nieujemnych liczb ca kowitych a i b: 1 Niech a 0 = a, b 0 = b i k = 0. 2 Niech k = k + 1. 3 Niech a k = a k 1 /2 (dzielenie bez reszty) i b k = 2b k 1. 4 Jeúli a k > 1, to przejdü do kroku 2. 5 Wynik mnoøenia jest sumπ wszystkich b k (k = 0, 1, 2,...), dla których odpowiadajπce im a k sπ nieparzyste.

Algorytmy Uniwersalny algorytm mnożenia Obliczamy iloczyn 156 18 1 Wyznaczamy ciπgi a k i b k : k a k b k 0 156 18 1 78 36 2 39 72 3 19 144 4 9 288 5 4 576 6 2 1152 7 1 2304 2 156 18 = 2304 + 288 + 144 + 72 = 2808

Algorytmy Uniwersalny algorytm mnożenia Obliczamy iloczyn 156 18 1 Moøna sumowaê na bieøπco k a k b k s k 0 156 18 0 1 78 36 0 2 39 72 72 3 19 144 216 4 9 288 504 5 4 576 504 6 2 1152 504 7 1 2304 2808 2 156 18 = s 7 = 2808

Algorytmy Uniwersalny algorytm mnożenia Obliczamy iloczyn dwóch nieujemnych liczb ca kowitych a i b Niech A, B i S bídπ miejscami s uøπcymi do przechowywania poúrednich wyników. 1 Niech A = a, B = b i S = 0. 2 Jeúli A % 2 = 1 (wartoúê w A jest nieparzysta), to S = S + B. 3 Jeúli A = 1, przejdü do kroku 6. 4 Niech A = A/2 (dzielenie bez reszty) i B = 2B. 5 Przejdü do kroku 2. 6 Wynik mnoøenia jest zapisany w S.

Algorytmy Przeszukiwanie binarne (bisekcja) Poszukiwanie elementu r w skoòczonym i uporzπdkowanym zbiorze B 1 Niech B 0 = B i k = 0. 2 Jeúli wszystkie elementy zbioru B k sπ jednakowe lub B k jest zbiorem pustym, przejdü do kroku 6. 3 Niech m k oznacza medianí zbioru B k. 4 Jeúli r m k,toniechb k+1 = {b œ B k : b m k },awprzeciwnym wypadku niech B k+1 = {b œ B k : b > m k }. 5 Niech k = k + 1 i przejdü do kroku 2. 6 Jeúli r œ B k,tor œ B.

Algorytmy Przeszukiwanie binarne (bisekcja) - przykład Weümy B = {3, 7, 21, 48, 56, 122, 141, 218, 225, 248} i r = 225 k B k m k 0 {3, 7, 21, 48, 56, 122, 141, 218, 225, 248} 56 1 {122, 141, 218, 225, 248} 218 2 {225, 248} 225 3 {225} 225

Złożoność obliczeniowa algorytmu

Złożoność obliczeniowa algorytmu Z oøonoúê obliczeniowa algorytmu Miara liczby operacji przeprowadzanych podczas wykonywania programu stanowiπcego realizacjí (zapis) danego algorytmu.

Złożoność obliczeniowa algorytmu Z oøonoúê obliczeniowa algorytmu Miara liczby operacji przeprowadzanych podczas wykonywania programu stanowiπcego realizacjí (zapis) danego algorytmu. Obserwacje 1 Z oøonoúê obliczeniowa algorytmu jest funkcjπ rozmiarów jego danych wejúciowych, czyli rozmiaru zadania. 2 Zwykle jest ona szacowana (w przybliøeniu) dla rozmiaru zadania dπøπcego do nieskoòczonoúci. 3 Czas przeprowadzania obliczeò jest úciúle zaleøny od z oøonoúci obliczeniowej algorytmu.

Złożoność obliczeniowa algorytmu Dla rozmiaru zadania reprezentowanego przez jednπ liczbí N Sta a liczba operacji nie zaleøy odn. Logarytmiczna liczba operacji jest proporcjonalna do log N. Liniowa liczba operacji jest wprost proporcjonalna do N. Wielomianowa liczba operacji jest proporcjonalna N k, gdzie k > 1. NP weryfikacja rozwiπzania jest problemem o wielomianowej

Złożoność obliczeniowa algorytmu Dla rozmiaru zadania reprezentowanego przez jednπ liczbí N Sta a liczba operacji nie zaleøy odn. Logarytmiczna liczba operacji jest proporcjonalna do log N. Liniowa liczba operacji jest wprost proporcjonalna do N. Wielomianowa liczba operacji jest proporcjonalna N k, gdzie k > 1. NP weryfikacja rozwiπzania jest problemem o wielomianowej CzÍsto czas dzia ania programu wyraøa sií poprzez jego z oøonoúê obliczeniowπ, takøe na przyk ad jeúli algorytm ma wielomianowπ z oøonoúê obliczeniowπ mówi sií, øe jest on wykonywany w czasie wielomianowym.

Złożoność obliczeniowa Przykłady:

Złożoność obliczeniowa Przykłady: Dla wyznaczania reszty z dzielenia Liniowa wzglídem ilorazu n/m.

Algorytm Euklidesa: Złożoność obliczeniowa W najgorszym wypadku logarytmiczna wzglídem n (zak adajπc, øe obliczanie reszty z dzielenia ma sta π z oøonoúê). 1 W najgorszym wypadku w kaødym kroku mamy b r a 2

Algorytm Euklidesa: Złożoność obliczeniowa W najgorszym wypadku logarytmiczna wzglídem n (zak adajπc, øe obliczanie reszty z dzielenia ma sta π z oøonoúê). 1 W najgorszym wypadku w kaødym kroku mamy b r a 2 2 Zatem (w najgorszym wypadku) w kroku k b r n 2 k

Algorytm Euklidesa: Złożoność obliczeniowa W najgorszym wypadku logarytmiczna wzglídem n (zak adajπc, øe obliczanie reszty z dzielenia ma sta π z oøonoúê). 1 W najgorszym wypadku w kaødym kroku mamy b r a 2 2 Zatem (w najgorszym wypadku) w kroku k b r n 2 k 3 Zatem (w najgorszym wypadku) w ostatnim kroku, czyli dla k = s, gdzie s jest ca kowitπ liczbπ wykonanych kroków 1 r n 2 s = s log 2 n

Złożoność obliczeniowa Sito Eratostenesa: Kwadratowa wzglídem N. 1 Liczba powtórzeò usuwania wielokrotnoúci jest rzídu N.

Złożoność obliczeniowa Sito Eratostenesa: Kwadratowa wzglídem N. 1 Liczba powtórzeò usuwania wielokrotnoúci jest rzídu N. 2 Wkaødym powtórzeniu przeprowadzamy (N k 2 )/k operacji.

Złożoność obliczeniowa Sito Eratostenesa: Kwadratowa wzglídem N. 1 Liczba powtórzeò usuwania wielokrotnoúci jest rzídu N. 2 Wkaødym powtórzeniu przeprowadzamy (N k 2 )/k operacji. 3 πczna liczba przeprowadzanych operacji s jest proporcjonalna do N! N ÈkÍ 2" ÈkÍ = N2 ÈkÍ ÈkÍN gdzie ÈkÍ jest úredniπ wartoúciπ k.

Złożoność obliczeniowa Sito Eratostenesa: Kwadratowa wzglídem N. 1 Liczba powtórzeò usuwania wielokrotnoúci jest rzídu N. 2 Wkaødym powtórzeniu przeprowadzamy (N k 2 )/k operacji. 3 πczna liczba przeprowadzanych operacji s jest proporcjonalna do! " N! N ÈkÍ 2" ÈkÍ = N2 ÈkÍ ÈkÍN gdzie ÈÈkÍ Í jest úredniπ wartoúciπ k. 4 Przy N dπøπcym do nieskoòczonoúci pierwszy cz on jest dominujπcy, wiíc mamy s N 2

Złożoność obliczeniowa Mnożenie uniwersalne: Logarytmiczna wzglídem a przy za oøeniu, øe dodawanie ma sta π z oøonoúê. 1 Mamy a k = a/2 k.

Złożoność obliczeniowa Mnożenie uniwersalne: Logarytmiczna wzglídem a przy za oøeniu, øe dodawanie ma sta π z oøonoúê. 1 Mamy a k = a/2 k. 2 Zatem, dla k równego liczbie kroków s dostajemy 1 = a s = a/2 s. Stπd wynika,øe s log a.

Złożoność obliczeniowa Mnożenie uniwersalne: Logarytmiczna wzglídem a przy za oøeniu, øe dodawanie ma sta π z oøonoúê. 1 Mamy a k = a/2 k. 2 Zatem, dla k równego liczbie kroków s dostajemy 1 = a s = a/2 s. Stπd wynika,øe s log a. 3 Stπd wynika,øe s log 2 a.

Złożoność obliczeniowa Bisekcja: Logarytmiczna wzglídem liczby elementów B. 1 Dla kaødego k moc (liczba elementów) zbioru B k+1 jest úrednio o po owí mniejsza od mocy (liczby elementów) zbioru B k.

Złożoność obliczeniowa Bisekcja: Logarytmiczna wzglídem liczby elementów B. 1 Dla kaødego k moc (liczba elementów) zbioru B k+1 jest úrednio o po owí mniejsza od mocy (liczby elementów) zbioru B k. 2 Zatem dla k = s (liczba kroków) moc zbioru B s jest rzídu mocy zbioru B podzielonej przez 2 s.

Złożoność obliczeniowa Bisekcja: Logarytmiczna wzglídem liczby elementów B. 1 Dla kaødego k moc (liczba elementów) zbioru B k+1 jest úrednio o po owí mniejsza od mocy (liczby elementów) zbioru B k. 2 Zatem dla k = s (liczba kroków) moc zbioru B s jest rzídu mocy zbioru B podzielonej przez 2 s. 3 Stπd wynika,øe s log 2 B.

Równoważność algorytmów

Równoważność algorytmów Definicja równowaønoúci algorytmów Dwa algorytmy moøna uznaê za równowaøne (ang. equivalent), gdy: 1 Kaødy z nich pozwala wyznaczyê rozwiπzanie tego samego problemu. 2 Majπ one jednakowπ z oøonoúê obliczeniowπ (z dok adnoúciπ do sta ego czynnika).