Katedra Elektrotechniki Teoretycznej i Informatyki. sem. II - Elementy algorytmów. Dr hab. inż. M. Czyżak

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

Download "Katedra Elektrotechniki Teoretycznej i Informatyki. sem. II - Elementy algorytmów. Dr hab. inż. M. Czyżak"

Transkrypt

1 Katedra Elektrotechniki Teoretycznej i Informatyki sem. II - Elementy algorytmów Dr hab. inż. M. Czyżak

2 REGULAMIN zaliczeń i wystawiania ocen z przedmiotu Informatyka II realizowanych w Katedrze Elektrotechniki Teoretycznej i Informatyki na studiach stacjonarnych I stopnia na kierunku Elektrotechnika w sem. III, 2016/ Obecność studentów na wykładach i laboratorium jest obowiązkowa. 2. Na wykładzie i laboratorium obecność jest kontrolowana. W przypadku stwierdzenia 3 krotnej nieusprawiedliwionej nieobecności na laboratorium, student jest skreślany z listy uczestniczących w laboratorium i nie jest klasyfikowany. 3. Podczas semestru 2 krotnie przeprowadzane jest kolokwium na laboratorium (90 min) zgodnie z podanym harmonogramem laboratorium.

3 4. W przypadku usprawiedliwionej nieobecności na kolokwium, potwierdzonej zwolnieniem lekarskim, student jest zobowiązany w terminie 2 tygodni od daty zakończenia zwolnienia odrobić kolokwium w godzinach konsultacji. W przypadku nieobecności nieusprawiedliwionej lub nie odrobienia w podanym terminie usprawiedliwionej nieobecności na kolokwium, student otrzymuje 0 punktów z kolokwium. 5. Zaliczenie laboratorium następuje w oparciu o ilość punktów uzyskanych przez studenta. Podział punktów dla laboratorium na poszczególne elementy jest następujący: - kolokwia 60 pkt ( 2 x 30 pkt) - wejściówki 20 pkt - zadania domowe 20 pkt Zaliczenie laboratorium wymaga 60 pkt, konieczne jest też uzyskanie przynajmniej 30 pkt łącznie z kolokwiów. Zadania domowe należy oddać w terminie dwóch tygodni. Prowadzący zajęcia laboratoryjne wystawia oceny punktowe.

4 6. Zaliczenie części wykładowej następuje w oparciu o kolokwium organizowane na koniec semestru, prace domowe oraz obecność na wykładzie (80 pkt kolokwium, 20 pkt prace domowe). Student może dodatkowo uzyskać 10 pkt za zadania wykonywane na wykładzie (1 pkt za jedno zadanie, w przypadku niepoprawnego wykonania zadania 0.5 pkt). Zaliczenie części wykładowej wymaga uzyskania 60 pkt w tym przynajmniej 41 pkt z kolokwium wykładowego) 7. Na zakończenie zajęć w semestrze oblicza się końcową punktową ocenę każdego studenta, wg wzoru: Z 0.66* L 0.34* W gdzie: L ocena punktowa uzyskana z części laboratoryjnej, W ocena punktowa uzyskana z części wykładowej.

5 8. Ocenę końcową wystawia się wg progów punktowych przedstawionych w tabeli: Progi punktowe poniżej 60 Ocena niedostateczna dostateczna dość dobra dobra ponad dobra powyżej 88 bardzo dobra

6 9. Prowadzący laboratorium organizuje dodatkowe kolokwium zaliczające laboratorium bezpośrednio przed sesją podstawową oraz kolokwium zaliczające w sesji poprawkowej. W wyniku każdego z tych kolokwiów student może otrzymać połowę maksymalnej ilości punktów z kolokwiów czyli 30 pkt. 10. Dla studentów, którzy nie uzyskali wymaganego minimum punktów z kolokwium zaliczającego wykład, organizowane jest kolokwium poprawkowe z części wykładowej w sesji poprawkowej. 11. W wyniku kolokwium poprawkowego z części wykładowej można uzyskać tylko połowę maksymalnej liczby punktów, czyli 40 pkt. 12. Obliczanie ocen po sesji poprawkowej odbywa się z uwzględnieniem wyniku kolokwium poprawkowego oraz pozostałych elementów składających się na część laboratoryjną i wykładową.

7 Algorytm jest jednym z zasadniczych pojęć w informatyce. Dział nauki zajmujący się algorytmami jest określany jako "Teoria algorytmów", "Analiza algorytmów" czy też "Algorytmika". Algorytm ( nieformalne określenie) 1. Algorytm jest przepisem określającym krok po kroku rozwiązanie jakiegoś problemu lub też osiągnięcie pewnego celu.

8 2. Algorytm jest pewną ściśle określoną procedurą obliczeniową, która dla właściwych danych wejściowych, wytwarza dane wyjściowe zwane wynikiem działania algorytmu. Algorytm można też traktować jako sposób rozwiązania konkretnego problemu obliczeniowego. Postawienie takiego problemu polega na ustaleniu wymagań, co do relacji między danymi wejściowymi algorytmu, a danymi wyjściowymi, a algorytm opisuje procedurę obliczeniową, która zapewni, że relacja ta będzie osiągnięta.

9 Problemy, które można rozpatrywać w aspekcie ich rozwiązywania z użyciem algorytmów, można podzielić na następujące grupy: a) problemy niealgorytmiczne - wykazano, że nie mogą być rozwiązane za pomocą algorytmów w skończonym czasie Przykład 1. Pokrywanie powierzchni wielokątami o dowolnym kształcie. Wykazano, że to zadanie jest obliczeniowo nierozwiązywalne. Przykład 2. Rozwiązywanie równań diofantycznych x n y n z n Dla n=2 nieskończenie wiele rozwiązań w liczbach całkowitych, brak rozwiązań dla n>2.

10 b) problemy przypuszczalnie niealgorytmiczne - zadania dla których nie udało się znaleźć algorytmu o skończonym czasie działania, ale też nie udowodniono, że taki algorytm nie istnieje (nie mogą być rozwiązane za pomocą algorytmów w skończonym czasie) c) problemy wykładnicze - nie mają algorytmów ograniczonych przez wielomian zmiennej problemu ( np. n!)

11 d) problemy przypuszczalnie wykładnicze - nie udało się podać algorytmu wielomianowego, ale też nie udowodniono że nie ma takiego algorytmu. d) problemy wielomianowe - dla problemów tych istnieją algorytmy rozwiązujące je w czasie ograniczonym wielomianem zmiennej problemu. Kubale, M. Łagodne wprowadzenie do analizy algorytmów, Wyd. PG, 1999.

12 Słowo algorytm pochodzi od nazwiska matematyka arabskiego żyjącego w IX wieku Abu Ja'far Mohammed ibn Müsâ al Khowârizmî ( al Khorezmi, (ar.) z Chorezmu), nazwisko jego pisano w Europie jako Algorismus. Podał on w IX wieku reguły dodawania, odejmowania, mnożenia i dzielenia liczb dziesiętnych znane wcześniej w Indiach i Chinach.

13 Jednak za autora pierwszego algorytmu uważa się greckiego matematyka Euklidesa ( 365 p.n.e- 300 p.n.e), stworzył on słynny przepis na obliczanie największego wspólnego dzielnika dwóch liczb całkowitych a i b ( NWD, gcd - ang. greatest common divisor)

14 Algorytm Euklidesa - obliczanie gcd (a,b) gcd(a,0)=0 Dopóki b>0 wykonuj 1. c=a modulo b 2. a=b 3. b=c 4. gcd=a Operacja = oznacza, podobnie jak w języku C, podstawienie do zmiennej po lewej stronie, wartości wyrażenia po prawej stronie.

15 Przykład. Zastosowanie algorytmu Euklidesa dla a=30, b=21. I. II. III. 1. c=9 1. c=3 1. c=0 2. a=21 2. a=9 2. a=3 3. b=9 3. b=3 3. b=0 4. gcd=21 4. gcd=9 4. gcd=3 b>0 b>0 b=0, stop

16 1. Opis słowny Sposoby opisu (zapisu algorytmów) cz.1 2. Opis w postaci listy kolejnych kroków 3. Opis w języku programowania ( Pascal, C/C++) 4. Opis w postaci schematu blokowego Przykład. Opis słowny Algorytmy Cel działania algorytmu: algorytm sprawdza czy dana liczba naturalna N jest liczbą pierwszą. Realizacja algorytmu (algorytm): algorytm oblicza całkowitą resztę z dzielenia N przez kolejne liczby nieparzyste mniejsze lub równe N. Jeśli jakaś reszta jest równa zeru, algorytm przerywa działanie.

17 Sposoby opisu (zapisu algorytmów) cz.2 2. Opis w postaci listy kolejnych kroków Przykład. Zapis algorytmu Euklidesa w postaci listy kroków. Dane: Liczby całkowite a i b. Wynik: Największy wspólny dzielnik a i b, gcd(a,b). 1. Wczytaj a. 2. Wczytaj b. 3. Jeśli b=0, idź do kroku Oblicz c=a modulo b. 5. Wykonaj a=b. 6. Wykonaj b=c.

18 Sposoby opisu (zapisu algorytmów) cz.3 Przykład. Zapis algorytmu Euklidesa w postaci listy kroków ( cz. II). 7. Wykonaj gcd=a. 8. Jeśli b=0, idź do kroku Idź do kroku gcd= Drukuj a, b, gcd. 12. STOP.

19 Sposoby opisu (zapisu algorytmów) cz.4 Przykład. Zapis algorytmu Euklidesa w postaci programu int main() { int a=30,b=21,c,gcd; do { c=a%b; a=b; b=c; gcd=a; } while ( b>0); printf("\n a=%d b=%d gcd=%d ",a,b,gcd); }

20 Sposoby opisu (zapisu algorytmów) cz.5 Sieci działań ( schematy blokowe) Autorem tej koncepcji jest John von Neumann. Zaproponował on w latach 50-tych formalizację algorytmów przy użyciu sieci działań. Sieci działań są geometrycznym sposobem zapisu algorytmów. Podstawą tej koncepcji jest podzielenie procesu rozwiązania na odrębne etapy, które w sieci działań przedstawia się w postaci bloków. Bloki są prostymi figurami geometrycznymi.

21 Sposoby opisu (zapisu algorytmów) cz.6 Sieci działań ( schematy blokowe) Wewnątrz bloków umieszcza się rodzaj czynności, którą symbolizuje dany blok. Bloki łączy się liniami, które ukazują ich powiązania logiczne, a strzałki wskazują na kolejność wykonywania poszczególnych w algorytmie. Algorytm przedstawiony w postaci sieci działań jest niezależny od języka programowania, w którym będzie napisany program.

22 Sposoby opisu (zapisu algorytmów) cz.7 Sieci działań ( schematy blokowe) Sieci działań mogą być pisane na różnym poziomie szczegółowości, lecz zwykle przyjmuje się, że każdy blok odpowiada jednej instrukcji programu realizującej pewne obliczenie lub instrukcji, która umożliwia podjęcie decyzji w algorytmie odnośnie dalszej jego realizacji.

23 Sposoby opisu (zapisu algorytmów) cz.8 Sieci działań ( schematy blokowe) Wewnątrz bloków sieci działań można stosować następujące symbole: - litery alfabetu łacińskiego i greckiego - cyfry systemu dziesiętnego - symbole działań arytmetycznych - dodawanie + - odejmowanie -,

24 Sposoby opisu (zapisu algorytmów) cz.9 Sieci działań ( schematy blokowe) - symbole działań arytmetycznych (c.d.) - mnożenie lub - dzielenie / - dzielenie całkowite - potęgowanie - pierwiastkowanie

25 Sposoby opisu (zapisu algorytmów) cz.10 Sieci działań ( schematy blokowe) - symbole działań logicznych - negacja ~ - koniunkcja - alternatywa

26 Sposoby opisu (zapisu algorytmów) cz.11 Sieci działań ( schematy blokowe) - symbole relacji - symbol podstawienia, : = - znaki interpunkcyjne,,,,, Wewnątrz bloków sieci działań można ponadto stosować liczby całkowite, rzeczywiste, zespolone jednak o wielkości odpowiadającej wielkości typów dla komputera, na którym będzie realizowany algorytm.

27 Sposoby opisu (zapisu algorytmów) cz.12 Sieci działań ( schematy blokowe) - stałe logiczne - stałe tekstowe - zmienne i wskaźniki do zmiennych (użycie zmiennej wskazuje, że będzie istniała komórka pamięci, o nazwie takiej, jak nazwa zmiennej)

28 Sposoby opisu (zapisu algorytmów) cz.13 Sieci działań ( schematy blokowe) - wyrażenia arytmetyczne i logiczne - funkcje ( wykładnicze, logarytmiczne, trygonometryczne, cyklometryczne, hiperboliczne i odwrotne do nich) - wartość bezwzględna - część całkowita

29 Sposoby opisu (zapisu algorytmów) cz.14 Sieci działań ( schematy blokowe) Symbole geometryczne - początek algorytmu START - koniec algorytmu STOP

30 Sposoby opisu (zapisu algorytmów) cz.15 Sieci działań ( schematy blokowe) Operator - działanie (operacja do wykonania) Operator wejścia/wyjścia wprowadzanie lub wyprowadzanie danych Operator - element decyzyjny- wybór jednej z dróg działania

31 Sposoby opisu (zapisu algorytmów) cz.16 Sieci działań ( schematy blokowe) Łącznik - łączy dwie części algorytmu Linia - łącząca poszczególne symbole sieci działań

32 Struktura algorytmów (cz.1) Opis algorytmu w postaci sieci działań wymaga zwykle niewielu podstawowych elementów takich jak - sekwencja operacji - przełącznik - pętla

33 Struktura algorytmów (cz.2) Sekwencja operacji Sekwencja operacji stanowi zbiór operacji realizowanych w określonej kolejności na określonych danych. Przykład. Realizacja obliczenia y ( c ( a b) 2 ) d

34 Struktura algorytmów (cz.3) wyznacz a+b wyznacz (a+b) 2 dane a,b,c,d y <- a+b y <-y*y dane a,b,c,d wyznacz c+(a+b) 2 y <-y+c wyznacz (c+(a+b) 2 )d y <-y*c

35 Struktura algorytmów (cz.4) Przełącznik Przełącznik jest elementem sprawdzającym spełnienie określonego warunku i wybierającego jedną z dwóch alternatywnych sekwencji operacji w zależności od tego czy warunek jest spełniony czy też nie. Przykład. TAK a>0 NIE Sekwencja 1 Sekwencja 2

36 Struktura algorytmów (cz.4) Pętla Pętla jest elementem umożliwiającą kolejną, wielokrotną realizację określonej operacji lub sekwencji operacji.

37 Ogólna struktura pętli Część inicjacyjna Część główna Część aktualizująca warunek Część decyzyjna Część wyjściowa

38 Przykład. Sieć działań dla obliczania sumy (cz. 1) S n 1 i 1 1 i

39 Przykład. Sieć działań dla obliczania sumy (cz. 2) START s<-0 s<-s+1/i i<-i+1 TAK i<n Drukuj s NIE STOP

40 Nauka o algorytmach to teoria algorytmów zwana też analizą algorytmów. Zajmuje się ona szukaniem najlepszych algorytmów dla rozwiązywania określonych zadań na komputerach, badaniem możliwości rozwiązania pewnych zadań jak również określaniem złożoności rozwiązań, o ile one istnieją.

41 Przykłady algorytmów (1) I. Algorytmy numeryczne 1. Interpolacja Lagrange a. 2. Interpolacja Aitkena-Lagrange a. 3. Aproksymacja wielomianowa. 4. Aproksymacja trygonometryczna. 5. Kwadratura Newtona-Cotesa. 6. Metoda całkowania Romberga. 7. Metoda rozwiązywania równań nieliniowych (bisekcja, metoda siecznych, metoda Newtona).

42 8. Rozwiązywanie układu równań z macierzą trójkątną. 9. Metoda eliminacji Gaussa. 10. Rozkład LU. Przykłady algorytmów (2) 11. Metoda Gaussa-Crouta. 12. Metoda eliminacji Jordana. 13. Obliczanie wyznacznika metodą rozkładu LU. 14. Odwracanie macierzy przy użyciu rozkładu LU. 15. Metoda Jacobiego rozwiązywania układu równań liniowych.

43 Przykłady algorytmów (3) 16. Metoda Gaussa-Seidela. 17. Rozkład QR macierzy metodą Grama-Schmidta. 18. Rozkład QR macierzy metodą Givensa. 19. Schemat Hornera obliczania wartości wielomianu. 20. Metoda relaksacyjna rozwiązywania układu równań liniowych. 21. Metoda Eulera rozwiązywania równań różniczkowych zwyczajnych. 22. Metoda Runge-Kutty rozwiązywania równań różniczkowych zwyczajnych. 23. Szybka transformacja Fouriera.

44 Przykłady algorytmów (4) II. Algorytmy przeszukiwania zbiorów danych 1. Przeszukiwanie binarne. 2. Przeszukiwanie z funkcją mieszającą. III.Algorytmy przeszukiwania tekstów. 1. Algorytm typu brute-force. 2. Algorytm K-M-P (Knutha, Morrisa, Pratta). 3. Algorytm Boyera-Moore a. 4. Algorytm Rabina-Karpa.

45 Przykłady algorytmów (5) IV. Algorytmy grafowe 1. Algorytm Floyda-Warshalla ( domknięcie przechodnie grafu, algorytm pozwala stwierdzić, czy istnieje droga między dwoma wierzchołkami grafu). 2. Algorytm Dijkstry (poszukiwanie najkrótszej drogi w grafie). 3. Algorytmy przeszukiwania grafów ( wszerz, w głąb) V. Algorytmy kompresji danych 1. Kompresja przez modelowanie matematyczne. 2. Kompresja metodą RLE. 3. Kompresja danych metodą Huffmana. 4. Kompresja LZW. Algorytmy

46 Przykłady algorytmów (6) VI. Algorytmy szyfrowania 1. Algorytm wymiany klucza Diffiego-Hellmana. 2. Algorytm RSA 3.Algorytm Rijndael. VII. Algorytmy teorioliczbowe (przykłady) 1. Obliczanie iloczynu Mongomery ego 2. Potęgowanie modulo n (n nieparzyste) z użyciem iloczynu Mongomery ego. 3. Chińskie twierdzenie o resztach.

47 Przykłady algorytmów (7) VIII. Algorytmy sortowania. 1. Sortowanie przez zamianę ( ang. exchange sort) ( przykład: sortowanie przez prostą zamianę). 2. Sortowanie przez wybieranie (ang. selection sort) (przykład sortowanie przez proste wybieranie) 3. Sortowanie przez proste wstawianie. 4. Sortowanie szybkie (ang. quicksort). 5. Sortowanie przez kopcowanie (ang. heapsort). 6. Sortowanie przez scalanie( ang. mergesort).

48 Sortowanie Sortowanie jest procesem ustawiania zbioru obiektów w określonym porządku. Sortowanie stosuje się w celu ułatwienia późniejszego wyszukiwania elementów sortowanego zbioru. Problem sortowania można sformułować następująco: Dane są obiekty a 1, a,..., 2 a n

49 Sortowanie (niemalejąco) polega na przestawianiu tych obiektów aż do chwili osiągnięcia uporządkowania a k a,..., 1 k2, a k 3 takiego, że dla danej funkcji porządkującej f zachodzi związek: f ( a ) f ( a )... f ( a k1 k2 k 3 )

50 Zwykle nie oblicza się wartości funkcji porządkującej, lecz przechowuje się je w jawnej postaci jako składowe każdego obiektu. Wartość tej funkcji nazywana jest kluczem obiektu. Dla tablic kluczem obiektu jest wartość elementu.

51 Przykłady algorytmów (5) IV. Algorytmy sortowania. 1. Sortowanie przez zamianę ( ang. exchange sort) ( przykład: sortowanie przez prostą zamianę). 2. Sortowanie przez wybieranie (ang. selection sort) ( przykład sortowanie przez proste wybieranie) 3. Sortowanie przez proste wstawianie. 4. Sortowanie szybkie (ang. quicksort). 5. Sortowanie przez kopcowanie (ang. heapsort) 6. Sortowanie przez scalanie ( ang. merge sort)

52 Sortowanie przez prostą zamianę ( sortowanie bąbelkowe) Metoda ta polega na porównywaniu w kolejnych przebiegach kluczy kolejnych sąsiadujących elementów (dla tablic wartości elementów tablicy) i ewentualnej zamianie miejscami tych elementów, jeżeli nie spełniają zadanej relacji. Po zakończeniu danego przebiegu następuje sprawdzenie czy nastąpiły w nim zamiany. Jeśli tak, realizowany jest kolejny przebieg, jeśli nie, to sortowanie zostało zakończone.

53 Sortowanie przez prostą zamianę (sortowanie bąbelkowe) Przykład. Posortować niemalejąco tablicę 5-elementową zawierającą elementy 8,6,10,2,1. Pokazane zostaną poniżej stany tablicy w kolejnych przebiegach. I. przebieg II. przebieg III. przebieg IV. przebieg V. przebieg 8,6,10,2,1 6,8,2,1,10 6,2,1,8,10 2,1,6,8,10 1,2,6,8,10 6,8,10,2,1 6,8,2,1,10 2,6,1,8,10 1,2,6,8,10 1,2,6,8,10 6,8,10,2,1 6,2,8,1,10 2,1,6,8,10 1,2,6,8,10 1,2,6,8,10 6,8,2,10,1 6,2,1,8,10 2,1,6,8,10 1,2,6,8,10 1,2,6,8,10 6,8,2,1,10 6,2,1,8,10 2,1,6,8,10 1,2,6,8,10 1,2,6,8,10

54 Sortowanie przez prostą zamianę (bąbelkowe) #define N 5 // sortowanie niemalejąco #include <stdio.h> #include <conio.h> int main(int argc, char **argv) { int i, nr=1,p, zam; int a[5]={8,6,10,2,1}; do { zam=0; printf("\n przebieg nr=%d",nr++); for (i=0;i<n -1;i++) if (a[i+1]<a[i]) { p=a[i]; a[i]=a[i+1]; a[i+1]=p; zam=1; } } while (zam); printf("\n Stan tablicy po sortowaniu"); for (i=0;i<n;i++) printf("\n % d ",a[i]); getchar(); return 0;}

55 Sortowanie przez proste wybieranie Metodę tę można opisać następująco:( sortowanie niemalejąco) - wybrać element o najmniejszym kluczu ( dla tablic element o najmniejszej wartości) - wymienić go z pierwszym elementem. Operacje te powtarza się z pozostałymi n-1 obiektami, następnie z n-2 obiektami, aż pozostanie jeden obiekt - największy.

56 Przykład. Posortować niemalejąco przy użyciu algorytmu prostego wybierania tablicę 5- elementową przy użyciu zawierającą elementy 8,6,10,2,1. Pokazane zostaną poniżej kolejne stany tablicy w trakcie sortowania zamieniane elementy 8 i 1 stan po pierwszej zamianie zamieniane elementy 6 i stan po drugiej zamianie zamieniane elementy 10 i stan po trzeciej zamianie zamieniane elementy 8 i tablica posortowana

57 // Sortowanie przez proste wybieranie #define N 5 #include <stdio.h> #include <conio.h> int main(int argc, char **argv) { int i,j,k,p,amin; int a[5]={8,6,10,2,1}; for (i=0;i<n;i++) { amin=a[i]; k=i; for (j=i+1;j<n-1;j++) if (a[j]<amin) { amin=a[j]; k=j; } if (k!=i) { p=a[i]; a[i]=a[k]; a[k]=p; } } printf("\n Stan tablicy po sortowaniu"); for (i=0;i<n;i++) printf("\n % d ",a[i]); getchar(); return 0;}

58 Podstawowe własności algorytmów a) własność stopu b) poprawność Def. (poprawność algorytmu) Algorytm jest poprawny, gdy dla każdego egzemplarza problemu zatrzymuje się i daje poprawny wynik. c) stabilność numeryczna d) złożoność obliczeniowa

59 Elementy analizy algorytmów Analiza algorytmu (analiza złożoności obliczeniowej) polega na określeniu zasobów, jakie są potrzebne do jego wykonania. Zasobami zasadniczymi są czas obliczeń i wielkość potrzebnej pamięci. Obecnie ważniejszym parametrem jest czas obliczeń. Zwykle rozpatruje się przypadek pesymistyczny dla czasu działania algorytmu.

60 Pesymistyczny czas działania jest górną granicą możliwego czasu działania algorytmu dla każdych danych wejściowych. Znając ten czas, mamy gwarancję, że algorytm nie będzie działał dłużej (taki czas może często występować w praktyce, np. przy poszukiwaniu w bazie danych informacji, której tam nie ma).

61 Czas działania algorytmu może być opisany pewną funkcją np. t = f(n)=an 2 +bn +c, gdzie n reprezentuje rozmiar danych wejściowych. Można zauważyć, że dla dużych n znaczenie ma głównie pierwszy składnik. Przyjmując przykładowo a=1, b=1, c=1 n an 2 bn c t

62 Pojawia się tutaj pojęcie rzędu wielkości funkcji. Rząd wielkości funkcji określa jak zmienia się składnik najbardziej istotny. Uważa się, że dany algorytm jest lepszy, jeśli jego pesymistyczny czas działania jest funkcją niższego rzędu.

63 Przykład. Dla funkcji f(n) i czasu z poniższej tabeli wyznaczyć największy rozmiar problemu, który może być rozwiązany w czasie t, zakładając, że algorytm działa w ciągu f(n) mikrosekund. f(n) n 1 sek 1 min 1 dzień 1 miesiąc log n n n n log n n 2 n 3 2 n n!

64 Symbol Algorytmy Notacje asymptotyczne (1) Niech g:r * R * będzie funkcją rzeczywistą zmiennej n. Mówimy, że funkcja jest (g(n)), gdy istnieją stałe c 1,, c 2 R * i x 0 R * takie, że c 1 g(n) f(n)) c 2 g(n) dla wszystkich n n 0. Mówimy wówczas,że funkcje są tego samego rzędu. (log n) - logarytmiczna (n) - liniowa c 1 g(n) f(n) (n log n) - logarytmiczno-liniowa c 2 g(n) (n 2 ) - kwadratowa (2 n ) - wykładnicza n 0 n

65 Symbol O( ) Algorytmy Notacje asymptotyczne (2) Niech g:r * R * będzie funkcją rzeczywistą zmiennej n. Przez O(g) oznaczymy zbiór funkcji f:r * R *, takich, że dla pewnego c R * i x 0 R * mamy f(n)) c g(n) dla wszystkich n n. } Symbol O(g) 0 czytamy " O duże od n", zaś o funkcji f mówimy, "że jest duże O od g" c 1 g(n) f(n) n

66 Rząd złożoności obliczeniowej Klasa funkcji Typ funkcji Przykłady subliniowa stała (e -n sin 2 n), (1/n) polilogarytmiczna (log log n), (log 2 n) liniowa (n), (n(1+n) n ) wielomianowa quasi-liniowa (n log n), (n loglog n) kwadratowa superwielomianowa (n 2 ), (n/2) (n log n ), () niewielomianowa wykładnicza (2 n ), (n 2 3 n ) n n superwykładnicza ( 2 ), (n n )

67 Złożoność obliczeniowa a programowanie algorytmów Generalnie powinno się stosować algorytmy o możliwie najmniejszej złożoności obliczeniowej, lecz w praktyce powinno się też uwzględnić dodatkowe czynniki: 1. Gdy program będzie używany niewiele razy, to koszt napisania i uruchomienia programu jest większy od pozostałych kosztów. 2. Jeśli program będzie wykonywany na małych danych, istotna jest wielkość stałej proporcjonalności c. 3. Program nie powinien być skomplikowany ( o ile to możliwe), gdyż utrudnia to wprowadzanie zmian 4. Istnieją algorytmy o dużej złożoności dla najgorszego przypadku, a działające szybko dla przypadku przeciętnego. 5. Dla algorytmów działających na liczbach rzeczywistych są ważne dokładność, a także wrażliwość numeryczna. Żródło Kubale M. Łagodne wprowadzenie do algorytmów.

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Co to jest algorytm? Zapis algorytmów Algorytmy

Bardziej szczegółowo

Zaawansowane algorytmy i struktury danych

Zaawansowane algorytmy i struktury danych Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań teoretycznych z egzaminów. Strona 1 z 12 Pytania teoretyczne z egzaminu pisemnego z 25 czerwca 2014 (studia dzienne)

Bardziej szczegółowo

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Metody numeryczne Wykład 4

Metody numeryczne Wykład 4 Metody numeryczne Wykład 4 Dr inż. Michał Łanczont Instytut Elektrotechniki i Elektrotechnologii E419, tel. 4293, m.lanczont@pollub.pl, http://m.lanczont.pollub.pl Zakres wykładu Metody skończone rozwiązywania

Bardziej szczegółowo

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

Podstawowe algorytmy i ich implementacje w C. Wykład 9 Wstęp do programowania 1 Podstawowe algorytmy i ich implementacje w C Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Element minimalny i maksymalny zbioru Element minimalny

Bardziej szczegółowo

dr inż. Damian Słota Gliwice r. Instytut Matematyki Politechnika Śląska

dr inż. Damian Słota Gliwice r. Instytut Matematyki Politechnika Śląska Program wykładów z metod numerycznych na semestrze V stacjonarnych studiów stopnia I Podstawowe pojęcia metod numerycznych: zadanie numeryczne, algorytm. Analiza błędów: błąd bezwzględny i względny, przenoszenie

Bardziej szczegółowo

Algorytm. Krótka historia algorytmów

Algorytm. Krótka historia algorytmów Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

1 Wprowadzenie do algorytmiki

1 Wprowadzenie do algorytmiki Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności

Bardziej szczegółowo

Zasady analizy algorytmów

Zasady analizy algorytmów Zasady analizy algorytmów A więc dziś w programie: - Kilka ważnych definicji i opisów formalnych - Złożoność: czasowa i pamięciowa - Kategorie problemów - Jakieś przykłady Problem: Zadanie możliwe do rozwiązania

Bardziej szczegółowo

Podstawy Programowania Algorytmy i programowanie

Podstawy Programowania Algorytmy i programowanie Podstawy Programowania Algorytmy i programowanie Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Algorytm Algorytm w matematyce, informatyce, fizyce, itp. lub innej dziedzinie życia,

Bardziej szczegółowo

Wykład 2. Poprawność algorytmów

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

Bardziej szczegółowo

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n ) SORTOWANIE 1 SORTOWANIE Proces ustawiania zbioru elementów w określonym porządku. Stosuje się w celu ułatwienia późniejszego wyszukiwania elementów sortowanego zbioru. 2 Definicja Ciąg wejściowy: a 1,

Bardziej szczegółowo

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

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 1 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan wykładów (1) Algorytmy i programy Proste typy danych Rozgałęzienia

Bardziej szczegółowo

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Algorytmy komputerowe. dr inŝ. Jarosław Forenc Rok akademicki 2009/2010, Wykład nr 8 2/24 Plan wykładu nr 8 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2009/2010

Bardziej szczegółowo

Technologie Informacyjne

Technologie Informacyjne POLITECHNIKA KRAKOWSKA - WIEiK - KATEDRA AUTOMATYKI Technologie Informacyjne www.pk.edu.pl/~zk/ti_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 3: Wprowadzenie do algorytmów i ich

Bardziej szczegółowo

Wykład z Technologii Informacyjnych. Piotr Mika

Wykład z Technologii Informacyjnych. Piotr Mika Wykład z Technologii Informacyjnych Piotr Mika Uniwersalna forma graficznego zapisu algorytmów Schemat blokowy zbiór bloków, powiązanych ze sobą liniami zorientowanymi. Jest to rodzaj grafu, którego węzły

Bardziej szczegółowo

Podstawy Informatyki. Sprawność algorytmów

Podstawy Informatyki. Sprawność algorytmów Podstawy Informatyki Sprawność algorytmów Sprawność algorytmów Kryteria oceny oszczędności Miara złożoności rozmiaru pamięci (złożoność pamięciowa): Liczba zmiennych + liczba i rozmiar struktur danych

Bardziej szczegółowo

Metody numeryczne Numerical methods. Elektrotechnika I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

Metody numeryczne Numerical methods. Elektrotechnika I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) Załącznik nr 7 do Zarządzenia Rektora nr 10/12 z dnia 21 lutego 2012r. KARTA MODUŁU / KARTA PRZEDMIOTU Kod modułu Nazwa modułu Nazwa modułu w języku angielskim Obowiązuje od roku akademickiego 2012/13

Bardziej szczegółowo

Metody numeryczne Numerical methods. Elektrotechnika I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

Metody numeryczne Numerical methods. Elektrotechnika I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) KARTA MODUŁU / KARTA PRZEDMIOTU Załącznik nr 7 do Zarządzenia Rektora nr 10/12 z dnia 21 lutego 2012r. Kod modułu Nazwa modułu Nazwa modułu w języku angielskim Obowiązuje od roku akademickiego 2012/2013

Bardziej szczegółowo

Analiza algorytmów zadania podstawowe

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

Bardziej szczegółowo

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski Algorytmy i złożoność obliczeniowa Wojciech Horzelski 1 Tematyka wykładu Ø Ø Ø Ø Ø Wprowadzenie Poprawność algorytmów (elementy analizy algorytmów) Wyszukiwanie Sortowanie Elementarne i abstrakcyjne struktury

Bardziej szczegółowo

Algorytmy i struktury danych

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

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

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

Bardziej szczegółowo

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne 2 Algorytmy Nazwa algorytm wywodzi się od nazwiska perskiego matematyka Muhamed ibn

Bardziej szczegółowo

Katedra Elektrotechniki Teoretycznej i Informatyki. sem. III. Dr inż. M. Czyżak

Katedra Elektrotechniki Teoretycznej i Informatyki. sem. III. Dr inż. M. Czyżak Katedra Elektrotechniki Teoretycznej i Informatyki sem. III Dr inż. M. Czyżak REGULAMIN zaliczeń i wystawiania ocen z przedmiotu Informatyka realizowanych w Katedrze Elektrotechniki Teoretycznej i Informatyki

Bardziej szczegółowo

Algorytm selekcji Hoare a. Łukasz Miemus

Algorytm selekcji Hoare a. Łukasz Miemus Algorytm selekcji Hoare a Łukasz Miemus 1 lutego 2006 Rozdział 1 O algorytmie 1.1 Problem Mamy tablicę A[N] różnych elementów i zmienną int K, takie że 1 K N. Oczekiwane rozwiązanie to określenie K-tego

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Mariusz Różycki University of Cambridge Zajęcia będą mieć formę wykładową. Slajdy można znaleźć na stronie kursu: http://lw.mi.edu.pl/informatyka/algorytmy.

Bardziej szczegółowo

Algorytm. Krótka historia algorytmów

Algorytm. Krótka historia algorytmów Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

Wstęp do informatyki- wykład 2

Wstęp do informatyki- wykład 2 MATEMATYKA 1 Wstęp do informatyki- wykład 2 Systemy liczbowe Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy

Bardziej szczegółowo

5. Rozwiązywanie układów równań liniowych

5. Rozwiązywanie układów równań liniowych 5. Rozwiązywanie układów równań liniowych Wprowadzenie (5.1) Układ n równań z n niewiadomymi: a 11 +a 12 x 2 +...+a 1n x n =a 10, a 21 +a 22 x 2 +...+a 2n x n =a 20,..., a n1 +a n2 x 2 +...+a nn x n =a

Bardziej szczegółowo

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

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa). Algorytmy definicja, cechy, złożoność. Algorytmy napotykamy wszędzie, gdziekolwiek się zwrócimy. Rządzą one wieloma codziennymi czynnościami, jak np. wymiana przedziurawionej dętki, montowanie szafy z

Bardziej szczegółowo

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne. Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

Przykładowy program ćwiczeń

Przykładowy program ćwiczeń Przykładowy program ćwiczeń Ćwiczenie 1. Obliczenie funkcji elementarnych za pomocą szeregów. Opracowanie wyrażeń rekurencyjnych. 3 4 Realizacja w Ecelu funkcji e 1. 1!! 3! 4! Przykład 1: Obliczenie wartości

Bardziej szczegółowo

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

Dr inż. Robert Wójcik, p. 313, C-3, tel Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska Dr inż. Robert Wójcik, p. 313, C-3, tel. 320-27-40 Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska E-mail: Strona internetowa: robert.wojcik@pwr.edu.pl google: Wójcik

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

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

Bardziej szczegółowo

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

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott Struktury danych i złozoność obliczeniowa Prof. dr hab. inż. Jan Magott Formy zajęć: Wykład 1 godz., Ćwiczenia 1 godz., Projekt 2 godz.. Adres strony z materiałami do wykładu: http://www.zio.iiar.pwr.wroc.pl/sdizo.html

Bardziej szczegółowo

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Egzamin, AISDI, I termin, 18 czerwca 2015 r. Egzamin, AISDI, I termin, 18 czerwca 2015 r. 1 W czasie niezależnym do danych wejściowych działają algorytmy A. sortowanie bąbelkowego i Shella B. sortowanie szybkiego i przez prosty wybór C. przez podział

Bardziej szczegółowo

Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami.

Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami. Wykład 1 Wprowadzenie do algorytmów Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami Wykaz literatury 1. N. Wirth - Algorytmy+Struktury Danych = Programy, WNT Warszawa

Bardziej szczegółowo

Projektowanie i Analiza Algorytmów

Projektowanie i Analiza Algorytmów POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI I TECHNIK INFORMACYJNYCH Projektowanie i Analiza Algorytmów www.pk.edu.pl/~zk/piaa_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład

Bardziej szczegółowo

automatyka i robotyka II stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

automatyka i robotyka II stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny) Załącznik nr 7 do Zarządzenia Rektora nr 10/12 z dnia 21 lutego 2012r. KARTA MODUŁU / KARTA PRZEDMIOTU Kod modułu Nazwa modułu Nazwa modułu w języku angielskim Obowiązuje od roku akademickiego 2013/2014

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Organizacja wykładu. Problem Sortowania. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury

Bardziej szczegółowo

Algorytmy i schematy blokowe

Algorytmy i schematy blokowe Algorytmy i schematy blokowe Algorytm dokładny przepis podający sposób rozwiązania określonego zadania w skończonej liczbie kroków; zbiór poleceń odnoszących się do pewnych obiektów, ze wskazaniem porządku,

Bardziej szczegółowo

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char Programowanie C++ Informacje wstępne #include - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char = -128 do 127, unsigned char = od

Bardziej szczegółowo

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności

Bardziej szczegółowo

Wprowadzenie do algorytmiki

Wprowadzenie do algorytmiki Wprowadzenie do algorytmiki Pojecie algorytmu Powszechnie przyjmuje się, że algorytm jest opisem krok po kroku rozwiązania postawionego problemu lub sposób osiągnięcia jakiegoś celu. Wywodzi się z matematyki

Bardziej szczegółowo

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe I. Struktury sterujące.bezpośrednie następstwo (A,B-czynności) Wykład _2 Algorytmy sortowania tablic Sortowanie bąbelkowe Elementy języka stosowanego do opisu algorytmu Elementy Poziom koncepcji Poziom

Bardziej szczegółowo

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy Podstawy Informatyki Inżynieria Ciepła, I rok Wykład 7 Algorytmy Programowanie Sformułowanie problemu. Opracowanie metodyki rozwiązania. Opracowanie algorytmu. Napisanie kodu źródłowego (zakodowanie) w

Bardziej szczegółowo

Informatyka 1. Złożoność obliczeniowa

Informatyka 1. Złożoność obliczeniowa Informatyka 1 Wykład XI Złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada 80 20, ocena efektywności

Bardziej szczegółowo

Zał nr 4 do ZW. Dla grupy kursów zaznaczyć kurs końcowy. Liczba punktów ECTS charakterze praktycznym (P)

Zał nr 4 do ZW. Dla grupy kursów zaznaczyć kurs końcowy. Liczba punktów ECTS charakterze praktycznym (P) Zał nr 4 do ZW WYDZIAŁ PODSTAWOWYCH PROBLEMÓW TECHNIKI KARTA PRZEDMIOTU Nazwa w języku polskim : Obliczenia Naukowe Nazwa w języku angielskim : Scientific Computing. Kierunek studiów : Informatyka Specjalność

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Podstawowe informacje Prowadzący: Jan Tuziemski Email: jan.tuziemski@pg.edu.pl Konsultacje: pokój 412 GB (do ustalenia 412 GB) Podstawowe informacje literatura K. Goczyła Struktury

Bardziej szczegółowo

Schematy blokowe. Algorytmy Marek Pudełko

Schematy blokowe. Algorytmy Marek Pudełko Schematy blokowe Algorytmy Marek Pudełko Metody zapisu algorytmów Algorytmy można zapisywać w postaci słownej, listy kroków lub symbolicznej - używając metajęzyków. Metajęzyk to język bardzo ogólny - opisujący

Bardziej szczegółowo

Rozdział 4. Algorytmy sortowania 73 Rozdział 5. Typy i struktury danych 89 Rozdział 6. Derekursywacja i optymalizacja algorytmów 147

Rozdział 4. Algorytmy sortowania 73 Rozdział 5. Typy i struktury danych 89 Rozdział 6. Derekursywacja i optymalizacja algorytmów 147 Spis treści Przedmowa 9 Rozdział 1. Zanim wystartujemy 17 Jak to wcześniej bywało, czyli wyjątki z historii maszyn algorytmicznych 18 Jak to się niedawno odbyło, czyli o tym, kto wymyślił" metodologię

Bardziej szczegółowo

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne. Algorytm znaczenie informatyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Metoda Dziel i zwyciężaj. Problem Sortowania, cd. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 2 Bożena Woźna-Szcześniak (AJD) Algorytmy

Bardziej szczegółowo

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy Informatyka wprowadze do algorytmów (II) dr hab. inż. Mikołaj Morzy plan wykładu cechy algorytmów sposoby zapisu algorytmów klasyfikacja algorytmów przykłady algorytmów sumowa przeszukiwa ciągu liczb sortowa

Bardziej szczegółowo

x y

x y Przykłady pytań na egzamin końcowy: (Uwaga! Skreślone pytania nie obowiązują w tym roku.). Oblicz wartość interpolacji funkcjami sklejanymi (przypadek (case) a), dla danych i =[- 4 5], y i =[0 4 -]. Jaka

Bardziej szczegółowo

INFORMATYKA SORTOWANIE DANYCH.

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

Bardziej szczegółowo

Algorytmy sortujące i wyszukujące

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

Bardziej szczegółowo

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL Studia Podyplomowe INFORMATYKA Podstawy Informatyki Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL 1 Część 1 Pojęcie algorytmu 2 I. Pojęcie algorytmu Trochę historii Pierwsze

Bardziej szczegółowo

Efektywność algorytmów

Efektywność algorytmów Efektywność algorytmów Algorytmika Algorytmika to dział informatyki zajmujący się poszukiwaniem, konstruowaniem i badaniem własności algorytmów, w kontekście ich przydatności do rozwiązywania problemów

Bardziej szczegółowo

Egzamin z Metod Numerycznych ZSI, Egzamin, Gr. A

Egzamin z Metod Numerycznych ZSI, Egzamin, Gr. A Egzamin z Metod Numerycznych ZSI, 06.2007. Egzamin, Gr. A Imię i nazwisko: Nr indeksu: Section 1. Test wyboru, max 33 pkt Zaznacz prawidziwe odpowiedzi literą T, a fałszywe N. Każda prawidłowa odpowiedź

Bardziej szczegółowo

Metody numeryczne. materiały do wykładu dla studentów

Metody numeryczne. materiały do wykładu dla studentów Metody numeryczne materiały do wykładu dla studentów Autorzy: Maria Kosiorowska Marta Kornafel Grzegorz Kosiorowski Grzegorz Szulik Sebastian Baran Jakub Bielawski Materiały przygotowane w ramach projektu

Bardziej szczegółowo

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

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny Algorytm to przepis; zestawienie kolejnych kroków prowadzących do wykonania określonego zadania; to uporządkowany sposób postępowania przy rozwiązywaniu zadania, problemu, z uwzględnieniem opisu danych

Bardziej szczegółowo

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

Wykład 4. Określimy teraz pewną ważną klasę pierścieni. Wykład 4 Określimy teraz pewną ważną klasę pierścieni. Twierdzenie 1 Niech m, n Z. Jeśli n > 0 to istnieje dokładnie jedna para licz q, r, że: m = qn + r, 0 r < n. Liczbę r nazywamy resztą z dzielenia

Bardziej szczegółowo

Algorytmy i struktury danych. Wykład 4

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

Bardziej szczegółowo

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5. Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5. Schemat Hornera. Wyjaśnienie: Zadanie 1. Pozycyjne reprezentacje

Bardziej szczegółowo

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie. Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy

Bardziej szczegółowo

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015 Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015 1 Metody numeryczne Dział matematyki Metody rozwiązywania problemów matematycznych za pomocą operacji na liczbach. Otrzymywane

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Złożoność obliczeniowa, poprawność programów Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 1 / 20 Złożoność obliczeniowa Problem Ile czasu

Bardziej szczegółowo

Technologie informacyjne Wykład VII-IX

Technologie informacyjne Wykład VII-IX Technologie informacyjne -IX A. Matuszak 19 marca 2013 A. Matuszak Technologie informacyjne -IX Rekurencja A. Matuszak (2) Technologie informacyjne -IX Gotowanie jajek na miękko weż czysty garnek włóż

Bardziej szczegółowo

ECTS (Część 2. Metody numeryczne) Nazwa w języku angielskim: Algorithms and data structures.

ECTS (Część 2. Metody numeryczne) Nazwa w języku angielskim: Algorithms and data structures. Algorytmy i struktury danych. Metody numeryczne ECTS (Część 2. Metody numeryczne) Nazwa w języku angielskim: Algorithms and data structures. dzienne magisterskie Numerical methods. (Part 2. Numerical methods)

Bardziej szczegółowo

2.8. Algorytmy, schematy, programy

2.8. Algorytmy, schematy, programy https://app.wsipnet.pl/podreczniki/strona/38766 2.8. Algorytmy, schematy, programy DOWIESZ SIĘ co oznaczają pojęcia: algorytm, schemat blokowy, język programowania, jakie są sposoby obliczania największego

Bardziej szczegółowo

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Więcej o sprawności algorytmów Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Załóżmy, że możemy wykonać dane zadanie przy użyciu dwóch algorytmów: jednego o złożoności czasowej

Bardziej szczegółowo

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] 3-2 5 8 12-4 -26 12 45-76

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] 3-2 5 8 12-4 -26 12 45-76 . p. 1 Algorytmem nazywa się poddający się interpretacji skończony zbiór instrukcji wykonania zadania mającego określony stan końcowy dla każdego zestawu danych wejściowych W algorytmach mogą występować

Bardziej szczegółowo

Jeszcze o algorytmach

Jeszcze o algorytmach Jeszcze o algorytmach Przykłady różnych, podstawowych algorytmów 11.01.2018 M. Rad Plan Powtórka Znajdowanie najmniejszego elementu Segregowanie Poszukiwanie przez połowienie Wstawianie Inne algorytmy

Bardziej szczegółowo

POLITECHNIKA OPOLSKA

POLITECHNIKA OPOLSKA POLITECHNIKA OPOLSKA WYDZIAŁ MECHANICZNY Katedra Technologii Maszyn i Automatyzacji Produkcji Laboratorium Podstaw Inżynierii Jakości Ćwiczenie nr 2 Temat: Schemat blokowy (algorytm) procesu selekcji wymiarowej

Bardziej szczegółowo

koordynator modułu dr hab. Michał Baczyński rok akademicki 2012/2013

koordynator modułu dr hab. Michał Baczyński rok akademicki 2012/2013 Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Matematyka, studia II stopnia, rok 1 Sylabus modułu: Matematyczne podstawy informatyki (03-MO2S-12-MPIn) 1. Informacje ogólne koordynator

Bardziej szczegółowo

Informatyka A. Algorytmy

Informatyka A. Algorytmy Informatyka A Algorytmy Spis algorytmów 1 Algorytm Euklidesa....................................... 2 2 Rozszerzony algorytm Euklidesa................................ 2 3 Wyszukiwanie min w tablicy..................................

Bardziej szczegółowo

Metody numeryczne I Równania nieliniowe

Metody numeryczne I Równania nieliniowe Metody numeryczne I Równania nieliniowe Janusz Szwabiński szwabin@ift.uni.wroc.pl Metody numeryczne I (C) 2004 Janusz Szwabiński p.1/66 Równania nieliniowe 1. Równania nieliniowe z pojedynczym pierwiastkiem

Bardziej szczegółowo

ROZKŁAD MATERIAŁU DLA KLASY I LICEUM I TECHNIKUM (ZAKRES PODSTAWOWY I ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ

ROZKŁAD MATERIAŁU DLA KLASY I LICEUM I TECHNIKUM (ZAKRES PODSTAWOWY I ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ ROZKŁAD MATERIAŁU DLA KLASY I LICEUM I TECHNIKUM (ZAKRES PODSTAWOWY I ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ ZBIORY TEMAT LICZBA GODZIN LEKCYJNYCH WYMAGANIA SZCZEGÓŁOWE Z PODSTAWY PROGRAMOWEJ Z

Bardziej szczegółowo

Algorytmy. Programowanie Proceduralne 1

Algorytmy. Programowanie Proceduralne 1 Algorytmy Programowanie Proceduralne 1 Przepis Warzenie piwa Brunświckiego Programowanie Proceduralne 2 Przepis Warzenie piwa Brunświckiego składniki (dane wejściowe): woda, słód, itd. wynik: beczka piwa

Bardziej szczegółowo

Wprowadzenie do algorytmów / Thomas H. Cormen [et al.]. - wyd. 7. Warszawa, Spis treści. Wprowadzenie 2

Wprowadzenie do algorytmów / Thomas H. Cormen [et al.]. - wyd. 7. Warszawa, Spis treści. Wprowadzenie 2 Wprowadzenie do algorytmów / Thomas H. Cormen [et al.]. - wyd. 7. Warszawa, 2012 Spis treści Przedmowa XIII Część I Podstawy Wprowadzenie 2 1. Rola algorytmów w obliczeniach 4 1.1. Algorytmy 4 1.2. Algorytmy

Bardziej szczegółowo

Zaawansowane algorytmy i struktury danych

Zaawansowane algorytmy i struktury danych Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań praktycznych z egzaminów. Strona 1 z 12 Pytania praktyczne z kolokwium zaliczeniowego z 19 czerwca 2014 (studia dzienne)

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Programowanie w VB Proste algorytmy sortowania

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

Bardziej szczegółowo

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

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska, Teoria liczb Magdalena Lemańska Literatura Matematyka Dyskretna Andrzej Szepietowski http://wazniak.mimuw.edu.pl/ Discrete Mathematics Seymour Lipschutz, Marc Lipson Wstęp Teoria liczb jest dziedziną matematyki,

Bardziej szczegółowo

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

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny ALGORYMY Algorytm to przepis; zestawienie kolejnych kroków prowadzących do wykonania określonego zadania; to uporządkowany sposób postępowania przy rozwiązywaniu zadania, problemu, z uwzględnieniem opisu

Bardziej szczegółowo

LICZBY PIERWSZE. Jan Ciurej Radosław Żak

LICZBY PIERWSZE. Jan Ciurej Radosław Żak LICZBY PIERWSZE Jan Ciurej Radosław Żak klasa IV a Katolicka Szkoła Podstawowa im. Świętej Rodziny z Nazaretu w Krakowie ul. Pędzichów 13, 31-152 Kraków opiekun - mgr Urszula Zacharska konsultacja informatyczna

Bardziej szczegółowo

Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln)

Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln) Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Matematyka, studia II stopnia, rok 1 Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln) 1. Informacje ogólne

Bardziej szczegółowo

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łanc Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łanc Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn Metody numeryczne Wykład 3 Dr inż. Michał Łanczont Instytut Elektrotechniki i Elektrotechnologii E419, tel. 4293, m.lanczont@pollub.pl, http://m.lanczont.pollub.pl Zakres wykładu Pojęcia podstawowe Algebra

Bardziej szczegółowo

Zaawansowane algorytmy. Wojciech Horzelski

Zaawansowane algorytmy. Wojciech Horzelski Zaawansowane algorytmy Wojciech Horzelski 1 Organizacja Wykład: poniedziałek 8 15-10 Aula Ćwiczenia: Każdy student musi realizować projekty (treść podawana na wykładzie) : Ilość projektów : 5-7 Na realizację

Bardziej szczegółowo

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności

Bardziej szczegółowo

Technologie informacyjne - wykład 12 -

Technologie informacyjne - wykład 12 - Zakład Fizyki Budowli i Komputerowych Metod Projektowania Instytut Budownictwa Wydział Budownictwa Lądowego i Wodnego Politechnika Wrocławska Technologie informacyjne - wykład 12 - Prowadzący: Dmochowski

Bardziej szczegółowo

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

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa. 2 Egzamin maturalny z informatyki Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie lub, która odpowiedź jest prawdziwa, a która fałszywa. a) rzeanalizuj poniższy algorytm (:= oznacza instrukcję

Bardziej szczegółowo

Wymagania na poszczególne oceny szkolne Klasa 7

Wymagania na poszczególne oceny szkolne Klasa 7 1 Wymagania na poszczególne oceny szkolne Klasa 7 Ocena postępów ucznia jest wynikiem oceny stopnia opanowania jego umiejętności podstawowych i ponadpodstawowych. W poniższej tabeli umiejętności te przypisane

Bardziej szczegółowo

Wymagania dla klasy siódmej. Treści na 2 na 3 na 4 na 5 na 6 Uczeń: Uczeń: Uczeń: Uczeń: Uczeń: DZIAŁ 1. LICZBY

Wymagania dla klasy siódmej. Treści na 2 na 3 na 4 na 5 na 6 Uczeń: Uczeń: Uczeń: Uczeń: Uczeń: DZIAŁ 1. LICZBY Wymagania dla klasy siódmej Treści na 2 na 3 na 4 na 5 na 6 Uczeń: Uczeń: Uczeń: Uczeń: Uczeń: DZIAŁ 1. LICZBY Rzymski sposób zapisu liczb Liczby pierwsze i złożone. Dzielenie z resztą Rozwinięcia dziesiętne

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Metody numeryczne Numerical methods. Energetyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólnoakademicki / praktyczny)

Metody numeryczne Numerical methods. Energetyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólnoakademicki / praktyczny) KARTA MODUŁU / KARTA PRZEDMIOTU Załącznik nr 7 do Zarządzenia Rektora nr 10/12 z dnia 21 lutego 2012r. Kod modułu Nazwa modułu Nazwa modułu w języku angielskim uje od roku akademickiego 2012/13 2013/14

Bardziej szczegółowo

Wybrane zagadnienia teorii liczb

Wybrane zagadnienia teorii liczb Wybrane zagadnienia teorii liczb Podzielność liczb NWW, NWD, Algorytm Euklidesa Arytmetyka modularna Potęgowanie modularne Małe twierdzenie Fermata Liczby pierwsze Kryptosystem RSA Podzielność liczb Relacja

Bardziej szczegółowo