dr inż. Jarosław Forenc
|
|
- Aniela Mazurkiewicz
- 9 lat temu
- Przeglądów:
Transkrypt
1 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2012/2013 Wykład nr 7 ( )
2 Rok akademicki 2012/2013, Wykład nr 7 2/66 Plan wykładu nr 7 Algorytmy komputerowe definicje algorytmu podstawowe cechy algorytmu sposoy opisu algorytmów Rekurencja Złożoność oliczeniowa Sortowanie proste wstawianie proste wyieranie ąelkowe Quick-Sort Mnożenie macierzy
3 Rok akademicki 2012/2013, Wykład nr 7 3/66 Algorytm - definicje Definicja 1 Skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania Definicja 2 Metoda rozwiązania zadania Definicja 3 Ściśle określona procedura oliczeniowa, która dla właściwych danych wejściowych zwraca żądane dane wyjściowe zwane wynikiem działania algorytmu
4 Rok akademicki 2012/2013, Wykład nr 7 4/66 Algorytmy Słowo algorytm pochodzi od nazwiska Muhammada in-musy al-chuwarizmiego (po łacinie pisanego jako Algorismus), matematyka perskiego z IX wieku Badaniem algorytmów zajmuje się algorytmika Algorytm może zostać zaimplementowany w postaci programu komputerowego Przetłumaczenie algorytmu na wyrany język programowania nazywane jest też kodowaniem algorytmu Ten sam algorytm może yć zaimplementowany (zakodowany) w różny sposó przy użyciu różnych języków programowania.
5 Rok akademicki 2012/2013, Wykład nr 7 5/66 Podstawowe cechy algorytmu Posiadanie danych wejściowych (w ilości większej lu równej zeru) pochodzących z dorze zdefiniowanego zioru Zwracanie wyniku Precyzyjne zdefiniowanie (każdy krok algorytmu musi yć jednoznacznie określony) Poprawność (dla każdego z założonego dopuszczalnego zestawu danych wejściowych) Zakończenie działania po skończonej liczie kroków (powinna istnieć poprawnie działająca reguła stopu algorytmu) Efektywność (jak najkrótszy czas wykonania i jak najmniejsze zapotrzeowanie na pamięć).
6 Rok akademicki 2012/2013, Wykład nr 7 6/66 Sposoy opisu algorytmów 1. Opis słowny w języku naturalnym lu w postaci listy kroków (opis w punktach) 2. Schemat lokowy 3. Pseudokod (nieformalna odmiana języka programowania) 4. Wyrany język programowania
7 Rok akademicki 2012/2013, Wykład nr 7 7/66 Opis słowny algorytmu Podanie kolejnych czynności, które należy wykonać, ay otrzymać oczekiwany efekt końcowy Przypomina przepis kulinarny z książki kucharskiej lu instrukcję osługi urządzenia, np. Algorytm: Tortilla ( Podróże kulinarne R. Makłowicza) Dane wejściowe: 0,5 kg ziemniaków, 100 g kiełasy Chorizo, 8 jajek Dane wyjściowe: gotowa Tortilla Opis algorytmu: Ziemniaki orać i pokroić w plasterki. Kiełasę pokroić w plasterki. Ziemniaki wrzucić na gorącą oliwę na patelni i przyrumienić z ou stron. Kiełasę wrzucić na gorącą oliwę na patelni i przyrumienić z ou stron. Uić jajka i dodać do połączonych ziemniaków i kiełasy. Dodać sól i pieprz. Usmażyć z ou stron wielki omlet nadziewany chipsami ziemniaczanymi z kiełaską.
8 Rok akademicki 2012/2013, Wykład nr 7 8/66 Lista kroków Uporządkowany opis wszystkich czynności, jakie należy wykonać podczas realizacji algorytmu Krok jest to pojedyncza czynność realizowana w algorytmie Kroki w algorytmie są numerowane, operacje wykonywane są zgodnie z rosnącą numeracją kroków Jedynym odstępstwem od powyższej reguły są operacje skoku (warunkowe lu ezwarunkowe), w których jawnie określa się numer kolejnego kroku Przykład (instrukcja otwierania wózka-specerówki): Krok 1: Krok 2: Krok 3: Zwolnij element lokujący wózek Rozkładaj wózek w kierunku kółek Naciskając nogą dolny element lokujący aż do zatrzaśnięcia, rozłóż wózek do pozycji przewozowej
9 Rok akademicki 2012/2013, Wykład nr 7 9/66 Schemat lokowy Zawiera plan algorytmu przedstawiony w postaci graficznej struktury elementów zwanych lokami Każdy lok zawiera informację o operacji, która ma yć w nim wykonana Pomiędzy lokami umieszczone są linie przepływu (strzałki) określające kolejność wykonywania loków algorytmu Podstawowe symole stosowane na schematach lokowych: linia przepływu (połączenie) występuje w postaci linii zakończonej strzałką określa kierunek przemieszczania się po schemacie
10 Rok akademicki 2012/2013, Wykład nr 7 10/66 Schemat lokowy Podstawowe symole stosowane na schematach lokowych: lok startowy, początek algorytmu wskazuje miejsce rozpoczęcia algorytmu może występować tylko jeden raz STOP lok końcowy, koniec algorytmu wskazuje miejsce zakończenia algorytmu musi występować przynajmniej jeden raz lok wykonawczy, lok funkcyjny zawiera polecenie (elementarną instrukcję) instrukcją może yć podstawienie, operacja arytmetyczna, wprowadzenie danych lu wyprowadzenie wyników
11 Rok akademicki 2012/2013, Wykład nr 7 11/66 Schemat lokowy Podstawowe symole stosowane na schematach lokowych: lok warunkowy (decyzyjny, porównujący) sprawdza umieszczony w nim warunek i dokonuje wyoru tylko jednej drogi wyjściowej połączenia wychodzące z loku: - T lu TAK - gdy warunek jest prawdziwy - N lu NIE - gdy warunek nie jest prawdziwy Czasami wprowadzanie i wyprowadzanie danych oznacza się dodatkowym lokiem wejścia-wyjścia lok wejścia-wyjścia poprzez ten lok wprowadzane są dane i wyprowadzane wyniki
12 Rok akademicki 2012/2013, Wykład nr 7 12/66 Pseudokod i język programowania Pseudokod: Pseudokod (pseudojęzyk) - uproszczona wersja języka programowania Często zawiera zwroty pochodzące z języków programowania Zapis w pseudokodzie może yć łatwo przetłumaczony na wyrany język programowania Opis w języku programowania: Zapis programu w konkretnym języku programowania Stosowane języki: Pascal, C, Matla (kiedyś - Fortran, Basic)
13 Rok akademicki 2012/2013, Wykład nr 7 13/66 Algorytm Euklidesa - lista kroków Algorytm Euklidesa - największy wspólny dzielnik dwóch licz Dane wejściowe: niezerowe liczy naturalne a i Dane wyjściowe: NWD(a,) Kolejne kroki: 1. Czytaj liczy a i 2. Dopóki a i są większe od zera, powtarzaj krok 3, a następnie przejdź do kroku 4 3. Jeśli a jest większe od, to weź za a resztę z dzielenia a przez, w przeciwnym razie weź za resztę z dzielenia przez a 4. Przyjmij jako największy wspólny dzielnik tę z licz a i, która pozostała większa od zera 5. Drukuj NWD(a,)
14 Rok akademicki 2012/2013, Wykład nr 7 14/66 Algorytm Euklidesa - przykład NWD(1675,3752) =? a Dzielenie większej liczy przez mniejszą Zamiana /a = 3752/1675 = 2 reszta 402 = a/ = 1675/402 = 4 reszta 67 a = /a = 402/67 = 6 reszta 0 = KONIEC NWD(1675,3752) = 67
15 Rok akademicki 2012/2013, Wykład nr 7 15/66 Algorytm Euklidesa - schemat lokowy
16 Rok akademicki 2012/2013, Wykład nr 7 16/66 Algorytm Euklidesa - pseudokod NWD(a,) while a>0 i >0 do if a> then a a mod else mod a if a>0 then return a else return
17 Rok akademicki 2012/2013, Wykład nr 7 17/66 Algorytm Euklidesa - język programowania (C) int NWD(int a, int ) { while (a>0 && >0) if (a>) a = a % ; else = % a; if (a>0) return a; else return ; }
18 Rok akademicki 2012/2013, Wykład nr 7 18/66 Wartość ezwzględna liczy - schemat lokowy x x dla = x dla x 0 x < 0 START START Wczytaj(x) Wczytaj(x) tak x 0 nie tak x 0 nie Drukuj(x) Drukuj(-x) Drukuj(x) Drukuj(-x) STOP STOP STOP
19 Rok akademicki 2012/2013, Wykład nr 7 19/66 Parzystość liczy - schemat lokowy START START Wczytaj(x) Wczytaj(x) x < 0 tak nie x mod 2 = 0 tak nie x = -x x > 1 nie Drukuj (x - nieparzyste) Drukuj (x - parzyste) tak x = x -2 nie x = 0 tak STOP Drukuj (x - nieparzyste) Drukuj (x - parzyste) STOP
20 Rok akademicki 2012/2013, Wykład nr 7 20/66 Równanie kwadratowe - schemat lokowy ax 2 = + x + c 2 4ac = 0 START Wczytaj(a,,c) delta= 2-4ac > 0 : x 1 =, 2a = 0 : x 1 = x 2 = 2 a x 2 = + 2a x tak x1 = 2a 2 + = 2a Drukuj(x 1,x 2 ) STOP delta > 0 nie tak x = x 1 2 = 2a Drukuj(x 1,x 2 ) delta = 0 nie Drukuj(Brak rozwiązania) STOP STOP
21 Rok akademicki 2012/2013, Wykład nr 7 21/66 Silnia - schemat lokowy n! = n 0! = 1 1! = 1 2! = 1 2 3! = START Wczytaj(n) silnia = 1 n > 0 nie tak silnia=n silnia n = n -1 Drukuj(silnia) STOP
22 Rok akademicki 2012/2013, Wykład nr 7 22/66 Rekurencja Rekurencja lu rekursja - jest to odwoływanie się funkcji lu definicji do samej sieie Rozwiązanie danego prolemu wyraża się za pomocą rozwiązań tego samego prolemu, ale dla danych o mniejszych rozmiarach W matematyce mechanizm rekurencji stosowany jest do definiowania lu opisywania algorytmów Silnia: 1 n! = n( n 1)! dla dla n = 0 n 1 int silnia(int n) { return n==0? 1 : n*silnia(n-1); }
23 Rok akademicki 2012/2013, Wykład nr 7 23/66 Rekurencja - ciąg Fionacciego F n = 0 dla n = 0 1 dla n = 1 F n 1 + F n 2 dla n > 1 int F(int n) { if (n==0) return 0; else if (n==1) return 1; else return F(n-1) + F(n-2); }
24 Rok akademicki 2012/2013, Wykład nr 7 24/66 Rekurencja - algorytm Euklidesa NWD( a, ) = a NWD(, a mod ) dla dla = 0 1 int NWD(int a, int ) { if (==0) return a; else return NWD(,a % ); }
25 Rok akademicki 2012/2013, Wykład nr 7 25/66 Złożoność oliczeniowa W celu rozwiązania danego prolemu oliczeniowego szukamy algorytmu najardziej efektywnego czyli: najszyszego o możliwie małym zapotrzeowaniu na pamięć Do oceny efektywności programu służy złożoność oliczeniowa (koszt algorytmu) Złożoność oliczeniowa algorytmu: jest ilością zasoów potrzenych do jego działania (czas, pamięć) jest funkcją rozmiaru danych, na których pracuje algorytm
26 Rok akademicki 2012/2013, Wykład nr 7 26/66 Złożoność oliczeniowa Złożoność czasowa Jej miarą jest licza podstawowych operacji (dominujących) Podstawowe operacje - porównanie, podstawienie, operacja arytmetyczna Złożoność pamięciowa Jest miarą wykorzystania pamięci (licza komórek pamięci) Złożoność pesymistyczna Odpowiada danym najardziej niesprzyjającym dla algorytmu Złożoność średnia Złożoność uśredniona po wszystkich możliwych zestawach danych, występująca dla typowych danych wejściowych
27 Rok akademicki 2012/2013, Wykład nr 7 27/66 Notacja O ( duże O ) Wyraża złożoność matematyczną algorytmu Po literze O występuje wyrażenie w nawiasach zawierające literę n, która oznacza liczę elementów, na której działa algorytm Do wyznaczenia złożoności ierze się pod uwagę liczę wykonywanych w algorytmie podstawowych operacji Przykład: O(n) - złożoność algorytmu jest prostą funkcją liczy elementów (jeśli sortowanie elementów zajmuje 5 s, to sortowanie elementów zajmie 10 s) O(n 2 )- czas konieczny do wykonania algorytmu rośnie wraz z kwadratem liczy elementów (przy podwojeniu liczy elementów ich osługa ędzie trwała cztery razy dłużej)
28 Rok akademicki 2012/2013, Wykład nr 7 28/66 Notacja O ( duże O ) Porównanie najczęściej występujących złożoności: Elementy O(log n) O(n) O(n logn) O(n 2 ) O(2 n ) , , , O(log n) - złożoność logarytmiczna O(n) - złożoność liniowa O(n log n) - złożoność liniowo-logarytmiczna (quasi-liniowa) O(n 2 ) - złożoność kwadratowa O(2 n ) - złożoność wykładnicza
29 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 29/66 Sortowanie sortowanie polega na uporządkowaniu zioru danych względem pewnych cech charakterystycznych każdego elementu tego zioru (wartości każdego elementu) w przypadku licz, sortowanie polega na znalezieniu kolejności licz zgodnej z relacją lu Przykład: talica nieposortowana: talica posortowana zgodnie z relacją (od najmniejszej do największej liczy): talica posortowana zgodnie z relacją (od największej do najmniejszej liczy):
30 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 30/66 Sortowanie w przypadku słów sortowanie polega na ustawieniu ich w porządku alfaetycznym (leksykograficznym) Przykład: talica nieposortowana: talice posortowane:
31 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 31/66 Sortowanie w praktyce sortowanie sprowadza się do porządkowanie danych na podstawie porównania - porównywany element to klucz Przykład: talica nieposortowana (imię, nazwisko, wiek): talica posortowana (klucz - nazwisko): talica posortowana (klucz - wiek):
32 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 32/66 Sortowanie Po co stosować sortowanie? posortowane elementy można szyciej zlokalizować posortowane elementy można przedstawić w czytelniejszy sposó Klasyfikacje algorytmów sortowania złożoność oliczeniowa algorytmu - zależność liczy wykonywanych operacji w stosunku do liczeności sortowanego zioru n złożoność pamięciowa - wielkość zasoów zajmowanych przez algorytm (sortowanie w miejscu - wielkość zioru danych podczas sortowania nie zmienia się lu jest tylko nieco większa) sortowanie wewnętrzne (odywa się w pamięci komputera) i zewnętrzne (nie jest możliwe jednoczesne umieszczenie wszystkich elementów zioru sortowanego w pamięci komputera)
33 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 33/66 Klasyfikacje algorytmów sortowania Stailność algorytmu: algorytm jest stailny, jeśli podczas sortowania zachowuje kolejność występowania elementów o tym samym kluczu, np. talica nieposortowana (imię, nazwisko, wiek): talica posortowana algorytmem stailnym (klucz - wiek): talica posortowana algorytmem niestailnym (klucz - wiek):
34 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 34/66 Proste wstawianie (insertion sort) Przykład: Funkcja w języku C: void InsertionSort(int ta[]) { int i,j,tmp; } for (i=1; i<n; i++) { j=i; tmp=ta[i]; while (ta[j-1]>tmp && j>0) { ta[j]=ta[j-1]; j--; } ta[j]=tmp; }
35 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 35/66 Proste wstawianie (insertion sort) Uwagi: złożoność algorytmu: O(n 2 ) + wydajny dla danych wstępnie posortowanych + wydajny dla ziorów o niewielkiej liczeności + małe zasoy zajmowane podczas pracy (sortowanie w miejscu) + stailny + prosty w implementacji mała efektywność dla normalnej i dużej ilości danych.
36 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 36/66 Proste wyieranie (selection sort) Przykład: Funkcja w języku C: void SelectionSort(int ta[]) { int i,j,k,tmp; } for (i=0;i<n-1;i++) { k=i; for (j=i+1; j<n; j++) if (ta[k]>=ta[j]) k = j; tmp = ta[i]; ta[i] = ta[k]; ta[k] = tmp; }
37 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 37/66 Proste wyieranie (selection sort) Uwagi: złożoność algorytmu: O(n 2 ) + szyki w sortowaniu niewielkich talic + małe zasoy zajmowane podczas pracy (sortowanie w miejscu) + prosty w implementacji licza porównań elementów jest niezależna od początkowego rozmieszczenia elementów w talicy w algorytmie może zdarzyć się, że wykonywana jest zamiana tego samego elementu ze soą.
38 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 38/66 Bąelkowe (ule sort) sortowanie ąelkowe (ang. ule sort), nazywane jest także: sortowaniem pęcherzykowym sortowaniem przez prostą zamianę (ang. straight exchange) metoda ta polega na porównywaniu dwóch kolejnych elementów i zamianie ich kolejności jeśli jest to konieczne nazwa metody wzięła się stąd, że kolejne porównania powodują wypychanie kolejnego największego elementu na koniec ( wypłynięcie największego ąelka )
39 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 39/66 Bąelkowe (ule sort)
40 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 40/66 Bąelkowe (ule sort) Funkcja w języku C: void BuleSort(int ta[]) { int i,j,tmp,koniec; } do { koniec=0; for (i=0;i<n-1;i++) if (ta[i]>ta[i+1]) { tmp=ta[i]; ta[i]=ta[i+1]; ta[i+1]=tmp; koniec=1; } } while (koniec);
41 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 41/66 Bąelkowe (ule sort) Uwagi: złożoność algorytmu: O(n 2 ) + prosta realizacja + wysoka efektywność użycia pamięci (sortowanie w miejscu) + stailny mała efektywność.
42 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 42/66 Sortowanie szykie (Quick-Sort) Faza dzielenia: w fazie dzielenia talica jest dzielona na dwie części wokół pewnego elementu (nazywanego elementem centralnym) wyieramy jeden element (losowo, choć może to yć element środkowy) i nazywamy go x przeglądamy talicę od lewej strony, aż znajdziemy element a i x, a następnie przeglądamy talicę od prawej strony, aż znajdziemy a j x zamieniamy elementy a i i a j miejscami i kontynuujemy proces przeglądania i zamiany, aż nastąpi gdzieś spotkanie w środku talicy w rezultacie otrzymujemy talicę podzieloną na lewą część z wartościami mniejszymi od x i na prawą część z wartościami większymi od x
43 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 43/66 Sortowanie szykie (Quick-Sort) Faza sortowania: zawiera dwa rekurencyjne wywołania tej samej funkcji sortowania: dla lewej i dla prawej części posortowanej talicy rekurencja zatrzymuje się, gdy wielkość talicy wynosi 1 Przykład: sortujemy 6-elementową talicę ta: wywołanie funkcji QuickSort() ma postać: QuickSort(ta,0,5);
44 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 44/66 Sortowanie szykie (Quick-Sort) QuickSort(ta,0,5): element środkowy: (0+5)/2 = 2, x = ta[2] = 5 od lewej szukamy ta[i] x, a od prawej ta[j] x, zamieniamy elementy miejscami poszukiwania kończymy, gdy indeksy mijają się wywołujemy rekurencyjnie funkcję QuickSort() dla elementów z zakresów [l,j] i [i,r]: QuickSort(ta,0,3); QuickSort(ta,4,5);
45 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 45/66 Sortowanie szykie (Quick-Sort) QuickSort(ta,0,3): element środkowy dla zakresu [0,3]: (0+3)/2 = 1, x = ta[1] = 2 od lewej szukamy ta[i] x, a od prawej ta[j] x, zamieniamy elementy miejscami: i j zamiana poszukiwania kończymy, gdy indeksy mijają się: wywołanie QuickSort() tylko dla elementów z zakresu [2,3], gdyż po lewej stronie rozmiar talicy do posortowania wynosi 1: QuickSort(ta,2,3);
46 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 46/66 Sortowanie szykie (Quick-Sort) QuickSort(ta,2,3): element środkowy dla zakresu [2,3]: (2+3)/2 = 2, x = ta[2] = 3 od lewej szukamy ta[i] x, a od prawej ta[j] x, zamieniamy elementy miejscami: poszukiwania kończymy, gdy indeksy mijają się: rozmiar ou talic do posortowania wynosi 1 więc nie ma nowych wywołań
47 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 47/66 Sortowanie szykie (Quick-Sort) QuickSort(ta,4,5): element środkowy dla zakresu [4,5]: (4+5)/2 = 4, x = ta[4] = 6 od lewej szukamy ta[i] x, a od prawej ta[j] x, zamieniamy elementy miejscami: poszukiwania kończymy, gdy indeksy mijają się: rozmiar ou talic do posortowania wynosi 1 więc nie ma nowych wywołań
48 Informatyka 2, studia stacjonarne I stopnia Rok akademicki 2012/2013, Wykład nr 7 48/66 Sortowanie szykie (Quick-Sort) Funkcja w języku C: void QuickSort(int ta[], int l, int r) { int i,j,x,y; } i=l; j=r; x=ta[(l+r)/2]; do { while (ta[i]<x) i++; while (x<ta[j]) j--; if (i<=j) { y=ta[i]; ta[i]=ta[j]; ta[j]=y; i++; j--; } } while (i<=j); if (l<j) QuickSort(ta,l,j); if (i<r) QuickSort(ta,i,r);
49 Rok akademicki 2012/2013, Wykład nr 7 49/66 Funkcja qsort() w języku C algorytm Quick-Sort został zaimplementowany w języku C w funkcji: QSORT stdli.h void qsort(void *aza, size_t n, size_t size, (*funkcja)(const void *element1, const void *element2)); funkcja qsort() sortuje metodą Quick-Sort talicę wskazywaną przez argument aza i zawierającą n elementów o rozmiarze size funkcja qsort() posługuje się funkcją porównującą funkcja(), której argumentami są wskazania do elementów talicy aza funkcja() powinna zwracać wartości: < 0, gdy *element1 < *element2 == 0, gdy *element1 == *element2 > 0, gdy *element1 > *element2
50 Rok akademicki 2012/2013, Wykład nr 7 50/66 Funkcja qsort() w języku C - przykład (1/2) #include <stdio.h> #include <stdli.h> #include <time.h> #define N 10 void generuj(int ta[]) { int i; srand(time(null)); for (i=0;i<n;i++) ta[i]=rand()%100; } void drukuj(int ta[]) { int i; for (i=0;i<n;i++) printf("%2d ",ta[i]); printf("\n"); }
51 Rok akademicki 2012/2013, Wykład nr 7 51/66 Funkcja qsort() w języku C - przykład (2/2) int funkcja(const void *element1, const void *element2) { if (*(int*)element1 < *(int*)element2) return -1; if (*(int*)element1 == *(int*)element2) return 0; if (*(int*)element1 > *(int*)element2) return 1; } int main() { int ta[n]; generuj(ta); drukuj(ta); printf("\nqsort:\n"); qsort((void*)ta,(size_t)n,sizeof(int),funkcja); drukuj(ta); } system("pause"); return (0);
52 Rok akademicki 2012/2013, Wykład nr 7 52/66 Funkcja qsort() w języku C - przykład (2/2) int funkcja(const void *element1, const void *element2) { if (*(int*)element1 < qsort: *(int*)element2) return -1; if (*(int*)element1 == 6 *(int*)element2) return 27 0; 31 if (*(int*)element1 > *(int*)element2) return 1; } int main() { int ta[n]; generuj(ta); drukuj(ta); printf("\nqsort:\n"); qsort((void*)ta,(size_t)n,sizeof(int),funkcja); drukuj(ta); } system("pause"); return (0);
53 Rok akademicki 2012/2013, Wykład nr 7 53/66 Mnożenie macierzy przez macierz Operacja: C = A B A[N][M] - macierz N M - elementowa B[M][K] - macierz M K - elementowa C[N][K] - macierz N K - elementowa N c c c c c c c c c = N a a a a a a a a a M K M K c c c = a = a = a a + a + a a 13 + a + a c c c = a = a = a a + a + a a 13 + a + a c c c = a = a = a a + a + a a 13 + a + a
54 Rok akademicki 2012/2013, Wykład nr 7 54/66 Mnożenie macierzy przez macierz Operacja: C = A B (A[N][M],B[M][K],C[N][K]) N (i) c c c 11 c c 12 c c 13 = N (i) a a a c 32 c a 32 a a a 12 a a M (j) K (k) M (j) K (k) Program w języku C: for (i=0; i<n; i++) for (k=0; k<k; k++) { C[i][k] = 0.0; for (j=0; j<m; j++) C[i][k] += A[i][j] * B[j][k]; } c ik M = j= i = 1,2, K, N aij jk, 1 k = 1,2, K, K Koszt algorytmu: O( n 3 )
55 Rok akademicki 2012/2013, Wykład nr 7 55/66 Mnożenie macierzy przez macierz na szykość wykonywania oliczeń wpływa nie tylko licza operacji zmiennoprzecinkowych, ale także sposó poierania danych z pamięci komputera oecne systemy komputerowe mają hierarchiczną udowę pamięci: rejestry procesora pamięć podręczna (cache) pamięć operacyjna pamięć zewnętrzna oliczenia są efektywnie wykonywane, gdy odywają się na zmiennych znajdujących się w jak najszyszej pamięci
56 Rok akademicki 2012/2013, Wykład nr 7 56/66 Mnożenie macierzy przez macierz rozpatrzmy dwa algorytmy mnożenia macierzy: Algorytm nr 1 for (i=0; i<n; i++) for (k=0; k<n; k++) for (j=0; j<n; j++) C[i][k] += A[i][j]*B[j][k]; Algorytm nr 2 for (i=0; i<n; i++) for (j=0; j<n; j++) for (k=0; k<n; k++) C[i][k] += A[i][j]*B[j][k]; macierze: procesor: Intel Core i5-2410m 2,30 GHz kompilator: Microsoft Visual C Standard Edition Algorytm nr 1: ez optymalizacji: 268,021 [s] z optymalizacją: 92,053 [s] Algorytm nr 2: ez optymalizacji: 49,409 [s] z optymalizacją: 6,270 [s]
57 Rok akademicki 2012/2013, Wykład nr 7 57/66 Mnożenie macierzy przez macierz Metoda przechowywania macierzy w pamięci liniowej M [0][0] [0][1] [0][2] [0][3] N [1][0] [1][1] [1][2] [1][3] [2][0] [2][1] [2][2] [2][3] macierz macierz w pamięci liniowej (wektor) Pamięć podręczna (cache memory)
58 Rok akademicki 2012/2013, Wykład nr 7 58/66 Mnożenie macierzy przez macierz Algorytm nr 1 for (i=0; i<n; i++) for (k=0; k<k; k++) for (j=0; j<m; j++) C[i][k] += A[i][j] * B[j][k]; C A B Algorytm nr 2 for (i=0; i<n; i++) for (j=0; j<m; j++) for (k=0; k<k; k++) C[i][k] += A[i][j] * B[j][k]; C A B [0][0] [0][1] [0][2] [0][3] [1][0] [1][1] [1][2] [1][3] [2][0] [2][1] [2][2] [2][3]
59 Rok akademicki 2012/2013, Wykład nr 7 59/66 Bilioteka numeryczna BLAS BLAS - Basic Linear Algera Suprograms Ziór procedur służących do wykonywania operacji na podstawowych oiektach algery liniowej: skalarach wektorach macierzach Strona główna: Rok pulikacji: 1979 Oryginalnie napisana w języku Fortran 77 Osługuje liczy: rzeczywiste pojedynczej i podwójnej precyzji zespolone pojedynczej i podwójnej precyzji
60 Rok akademicki 2012/2013, Wykład nr 7 60/66 Bilioteka numeryczna BLAS Wyróżnia się 3 poziomy astrakcji algorytmów BLAS BLAS Level 1 operacje typu wektor-wektor (dodawanie wektorów, normy wektora, iloczyn skalarny wektorów) y α x + y BLAS Level 2 operacje typu macierz-wektor (mnożenie macierzy przez wektor) BLAS Level 3 y αax + y operacje typu macierz-macierz (mnożenie macierzy przez macierz) C αa B + C
61 Rok akademicki 2012/2013, Wykład nr 7 61/66 BLAS - Nazwy procedur DGEMV - mnożenie macierzy przez wektor, macierz i wektor zawierają liczy rzeczywiste podwójnej precyzji y α A x + β y lu y α A x + β y SGEMM - mnożenie macierzy przez macierz, macierze zawierają liczy rzeczywiste pojedynczej precyzji T y α op( A) op( B) + β C op( X) = X, op( X) = X T, op( X) = conjg( X T ) SSWAP - zamiana wektorów zawierających liczy rzeczywiste pojedynczej precyzji x y
62 Rok akademicki 2012/2013, Wykład nr 7 62/66 BLAS - Implementacje Strona główna: Strona główna zawiera niezoptymalizowaną iliotekę BLAS MKL (Intel) Intel Math Kernel Lirary (Intel MKL) v11 ACML (AMD) AMD Core Math Lirary ATLAS (open source) Automatically Tuned Linear Algera Software
63 Rok akademicki 2012/2013, Wykład nr 7 63/66 GPGPU i CUDA GPGPU - General Purpose computing on Graphics Processing Units CUDA (Compute Unified Device Architecture) hardware - równoległa architektura oliczeniowa GPU software - kompilator nvcc, ilioteki i inne narrzędzia NVIDIA Corporation (USA) Pierwsza wersja: luty 2007 Strona WWW: Licencja: freeware
64 Rok akademicki 2012/2013, Wykład nr 7 64/66 CUDA - Jak używać? Sprawdzić czy karta graficzna w komputerze osługuje CUDA wszystkie nowe karty graficzne NVIDIA są kompatyilne z CUDA Ściągnąć oprogramowanie CUDA The CUDA Driver - zintegrowany ze sterownikiem karty graficznej The CUDA Toolkit - zawiera narzędzia potrzene do kompilowania aplikacji z wykorzystaniem Microsoft Visual Studio (narzędzia, ilioteki, pliki nagłówkowe, inne zasoy) The GPU Computing SDK - przykładowe programy Zainstalować CUDA driver (jeśli jest to konieczne) Zainstalować oprogramowanie CUDA - Toolkit, SDK Użyć szalonu (template project) do stworzenia własnego programu wykorzystującego CUDA
65 Rok akademicki 2012/2013, Wykład nr 7 65/66 CUBLAS Bilioteka CUBLAS - implementacja BLAS (Basic Linear Algera Suprograms) dla kart graficznych NVIDIA i środowiska CUDA Zastosowanie CUBLAS w programie wymaga: inicjalizacji ilioteki CUBLAS: culasinit() przydzielenia pamięci GPU na macierze i wektory: culasalloc() przesłania macierzy i wektorów do pamięci GPU: culassetmatrix() wywołania odpowiednich funkcji CUBLAS: culassgemm() przesłania wyników oliczeń z pamięci GPU do pamięci RAM komputera: culasgetmatrix() zwolnienia pamięci GPU: culasfree() zakończenia pracy ilioteki CUBLAS: culasshutdown()
66 Rok akademicki 2012/2013, Wykład nr 7 66/66 Koniec wykładu nr 7 Dziękuję za uwagę!
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ółowoAlgorytm. 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ółowoAlgorytmy komputerowe. dr inż. Jarosław Forenc
Rok akademicki 2010/2011, Wykład nr 9/10 2/38 Plan wykładu nr 9/10 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki
Bardziej szczegółowodr inż. Jarosław Forenc
Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2014/2015 Wykład nr 6 (25.05.2015) Rok akademicki 2014/2015, Wykład
Bardziej szczegółowoDefinicje. 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ółowo1 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ółowoTechnologie 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ółowoMATERIAŁY POMOCNICZE NR 1 DO PRACOWNI Z PRZEMIOTU INFORMATYKA 1. Informacje podstawowe:
Informacje podstawowe: MATERIAŁY POMOCNICZE NR 1 DO PRACOWNI Z PRZEMIOTU INFORMATYKA 1 INFORMATYKA 1 - Pracownia specjalistyczna 30h Kod przedmiotu: ES1A200 009, ECTS: 4 pkt. Kierunek: Elektrotechnika,
Bardziej szczegółowoAlgorytmy. 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ółowoAlgorytm 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ółowoTechnologie 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ółowoProgramowanie 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ółowoModel protokołu TCP/IP. Algorytmy komputerowe. Rekurencja, złożoność obliczeniowa. Sortowanie. dr inż. Jarosław Forenc. Model ISO/OSI a model TCP/IP
Rok akademicki 2012/2013, Wykład nr 9 2/79 Plan wykładu nr 9 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2012/2013
Bardziej szczegółowoStrategia "dziel i zwyciężaj"
Strategia "dziel i zwyciężaj" W tej metodzie problem dzielony jest na kilka mniejszych podproblemów podobnych do początkowego problemu. Problemy te rozwiązywane są rekurencyjnie, a następnie rozwiązania
Bardziej szczegółowoPodstawy programowania. Podstawy C# Przykłady algorytmów
Podstawy programowania Podstawy C# Przykłady algorytmów Proces tworzenia programu Sformułowanie problemu funkcje programu zakres i postać danych postać i dokładność wyników Wybór / opracowanie metody rozwiązania
Bardziej szczegółowoDefinicja. 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ółowoInformatyka wprowadzenie do algorytmów (I) dr hab. inż. Mikołaj Morzy
Informatyka wprowadzenie do algorytmów (I) dr ha. inż. Mikołaj Morzy jak zagotować wodę na heratę? Muḥammad in Mūsā al-khwārizmī urodzony w Chorezmie, żył w latach ok. 780 - ok. 850 pracował w Domu Nauk
Bardziej szczegółowoAlgorytmy 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ółowoInformatyka 1. Wykład nr 7 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc
Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2008/2009 Wykład nr 7 (24.05.2009) Rok akademicki 2008/2009, Wykład
Bardziej szczegółowoAlgorytmy. 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ółowoZa 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ółowofunkcje rekurencyjne Wykład 12. Podstawy programowania (język C) Funkcje rekurencyjne (1) Funkcje rekurencyjne (2)
Podstawy programowania (język C) funkcje rekurencyjne Wykład 12. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Funkcje rekurencyjne (1) W języku C funkcja moŝe wywoływać samą siebie.
Bardziej szczegółowoPodstawowe 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ółowoAlgorytm. 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ółowo1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.
Temat: Technologia informacyjna a informatyka 1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji. Technologia informacyjna (ang.) Information Technology, IT jedna
Bardziej szczegółowoALGORYTMY 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ółowoPodstawy Informatyki. Algorytmy i ich poprawność
Podstawy Informatyki Algorytmy i ich poprawność Błędy Błędy: językowe logiczne Błędy językowe Związane ze składnią języka Wykrywane automatycznie przez kompilator lub interpreter Prosty sposób usuwania
Bardziej szczegółowoProgramowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++
Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu
Bardziej szczegółowoMATERIAŁY POMOCNICZE NR 1 DO PRACOWNI Z PRZEMIOTU INFORMATYKA 1. Informacje podstawowe:
Informacje podstawowe: MATERIAŁY POMOCNICZE NR 1 DO PRACOWNI Z PRZEMIOTU INFORMATYKA 1 INFORMATYKA 1 - Pracownia specjalistyczna 30h Kod przedmiotu: ES1A200 009, ECTS: 4 pkt. Kierunek: Elektrotechnika,
Bardziej szczegółowoWykł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ółowoAnaliza 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ółowoAlgorytm 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ółowoMATERIAŁY POMOCNICZE NR 1 DO PRACOWNII Z PRZEMIOTU INFORMATYKA 1
Informacje podstawowe: MATERIAŁY POMOCNICZE NR 1 DO PRACOWNII Z PRZEMIOTU INFORMATYKA 1 INFORMATYKA 1 - Pracownia specjalistyczna 30h Kod przedmiotu: EZ1A200 010, ECTS: 6 pkt. Kierunek: Elektrotechnika,
Bardziej szczegółowoProgramowanie 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ółowoMETODY OPISU ALGORYTMÓW KOMPUTEROWYCH
Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni z przedmiotu Podstawy Informatyki Kod przedmiotu: TS1C 100 003 Ćwiczenie pt. METODY OPISU ALGORYTMÓW KOMPUTEROWYCH
Bardziej szczegółowoAlgorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie
Algorytmika i programowanie Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie Tablice Tablica jest zbiorem elementów tego samego typu. Każdy element jest identyfikowany (numer
Bardziej szczegółowoMatematyczne 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ółowoPodstawy Programowania
Podstawy Programowania Monika Wrzosek Instytut Matematyki Uniwersytet Gdański Matematyka 2017/18 Monika Wrzosek (IM UG) Podstawy Programowania 1 / 119 Sprawy organizacyjne E-mail: mwrzosek@mat.ug.edu.pl
Bardziej szczegółowoDynamiczny przydział pamięci (język C) Dynamiczne struktury danych. Sortowanie. Klasyfikacja algorytmów sortowania. Algorytmy sortowania
Rok akademicki 2010/2011, Wykład nr 4 2/50 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2010/2011
Bardziej szczegółowoAlgorytm. Algorytmy Marek Pudełko
Algorytm Algorytmy Marek Pudełko Definicja Algorytm to skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. Algorytm ma przeprowadzić system z pewnego
Bardziej szczegółowoInformatyka 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ółowoWstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro
Bardziej szczegółowoWstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro
Bardziej szczegółowoWstęp do Informatyki
Wstęp do Informatyki dr hab. Bożena Woźna-Szcześniak, prof. AJD bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 1 / 32 Instrukcje iteracyjne
Bardziej szczegółowoPodstawy 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ółowoJeszcze 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ółowoPrzykładowe sprawozdanie. Jan Pustelnik
Przykładowe sprawozdanie Jan Pustelnik 30 marca 2007 Rozdział 1 Sformułowanie problemu Tematem pracy jest porównanie wydajności trzech tradycyjnych metod sortowania: InsertionSort, SelectionSort i BubbleSort.
Bardziej szczegółowoWstę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ółowoPOLITECHNIKA 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ółowoPodstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Bardziej szczegółowoWYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński
WYKŁAD 8 Funkcje i algorytmy rekurencyjne Proste przykłady Programy: c3_1.c..., c3_6.c Tomasz Zieliński METODY REKURENCYJNE (1) - program c3_1 ======================================================================================================
Bardziej szczegółowoAlgorytm. 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ółowoZadanie 1. Potęgi (14 pkt)
2 Egzamin maturalny z informatyki Zadanie 1. otęgi (14 pkt) W poniższej tabelce podane są wartości kolejnych potęg liczby 2: k 0 1 2 3 4 5 6 7 8 9 10 2 k 1 2 4 8 16 32 64 128 256 512 1024 Ciąg a=(a 0,
Bardziej szczegółowoWprowadzenie 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ółowoZadanie 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ółowoJę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ółowoWykł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ółowoInformatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009
Informatyka 1 zajęcia nr 1 Elektrotechnika, semestr II rok akademicki 2008/2009 mgr inż.. Paweł Myszkowski Plan dzisiejszych zajęć 1. Organizacja laboratorium przedmiotu 2. Algorytmy i sposoby ich opisu
Bardziej szczegółowo2.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ółowo11. Blok ten jest blokiem: a. decyzyjnym b. końcowym c. operacyjnym
1. Instrukcja warunkowa a. słuŝy do wprowadzania danych oraz wprowadzania wyników b. to instrukcja decyzyjna c. to sposób przedstawienia algorytmu 2. Instrukcja, która opisuje wykonanie róŝnych czynności
Bardziej szczegółowoMetodyki i techniki programowania
Metodyki i techniki programowania dr inż. Maciej Kusy Katedra Podstaw Elektroniki Wydział Elektrotechniki i Informatyki Politechnika Rzeszowska Elektronika i Telekomunikacja, sem. 2 Plan wykładu Sprawy
Bardziej szczegółowoPodstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno
Instrukcja laboratoryjna 6 Podstawy programowania 2 Temat: Funkcje i procedury rekurencyjne Przygotował: mgr inż. Tomasz Michno Wstęp teoretyczny Rekurencja (inaczej nazywana rekursją, ang. recursion)
Bardziej szczegółowoMetodyki i techniki programowania
Metodyki i techniki programowania dr inż. Maciej Kusy Katedra Podstaw Elektroniki Wydział Elektrotechniki i Informatyki Politechnika Rzeszowska Elektronika i Telekomunikacja, sem. 2 Plan wykładu Sprawy
Bardziej szczegółowoMETODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Bardziej szczegółowoPodstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
Podstawy programowania Wykład: 13 Rekurencja 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Rekurencja - pojęcie 2 Rekurencja - pojęcie Rekurencja (rekursja) wywołanie
Bardziej szczegółowoRekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!
Rekurencja Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)! Pseudokod: silnia(n): jeżeli n == 0 silnia = 1 w przeciwnym
Bardziej szczegółowo5. Rekurencja. Przykłady
5. Rekurencja Uwaga! W tym rozdziale nie są omówione żadne nowe konstrukcje języka C++. Omówiona jest za to technika wykorzystująca funkcje, która pozwala na rozwiązanie pewnych nowych rodzajów zadań.
Bardziej szczegółowoWstęp do informatyki
Wstęp do informatyki Algorytmy i struktury danych Piotr Fulmański Wydział Matematyki i Informatyki, Uniwersytet Łódzki, Polska 30 października 2009 Spis treści 1 Algorytm 2 Przetwarzane informacje 3 Struktury
Bardziej szczegółowoProgramowanie komputerów
Programowanie komputerów Wykład 1-2. Podstawowe pojęcia Plan wykładu Omówienie programu wykładów, laboratoriów oraz egzaminu Etapy rozwiązywania problemów dr Helena Dudycz Katedra Technologii Informacyjnych
Bardziej szczegółowoINFORMATYKA 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ółowoPodstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy
1 Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy 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
Bardziej szczegółowoAlgorytmy 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ółowoPodstawy 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ółowoAlgorytmy 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ółowoLaboratorium nr 7 Sortowanie
Laboratorium nr 7 Sortowanie 1. Sortowanie bąbelkowe (BbS) 2. Sortowanie przez wstawianie (IS) 3. Sortowanie przez wybieranie (SS) Materiały Wyróżniamy następujące metody sortowania: 1. Przez prostą zamianę
Bardziej szczegółowoTechnologie Informatyczne Wykład VII
Technologie Informatyczne Wykład VII A. Matuszak (1) 22 listopada 2007 A. Matuszak (1) Technologie Informatyczne Wykład VII A. Matuszak (2) Technologie Informatyczne Wykład VII (Rekursja) albo rekursja
Bardziej szczegółowo1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania
1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca
Bardziej szczegółowoPorównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego
Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego Mariusz Uchroński 3 grudnia 2010 Plan prezentacji 1. Wprowadzenie 2.
Bardziej szczegółowoPOLITECHNIKA 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ółowoPodstawy i języki programowania
Podstawy i języki programowania Laboratorium 1 - wprowadzenie do przedmiotu mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 16 października 2017 1 / 25 mgr inż. Krzysztof Szwarc Podstawy i
Bardziej szczegółowoDefinicja algorytmu brzmi:
1.1. Definicja algorytmu Często w życiu stajesz przed koniecznością rozwiązania jakiegoś zadania. Na lekcji matematyki musisz na przykład rozwiązać równanie i w tym celu wykonujesz szereg czynności: od
Bardziej szczegółowoPodstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Bardziej szczegółowoAlgorytm i złożoność obliczeniowa algorytmu
Algorytm i złożoność obliczeniowa algorytmu Algorytm - przepis postępowania, którego wykonanie prowadzi do rozwiązania określonego problemu określa czynności, jakie należy wykonać wyszczególnia wszystkie
Bardziej szczegółowoSortowanie przez scalanie
Sortowanie przez scalanie Wykład 2 12 marca 2019 (Wykład 2) Sortowanie przez scalanie 12 marca 2019 1 / 17 Outline 1 Metoda dziel i zwyciężaj 2 Scalanie Niezmiennik pętli - poprawność algorytmu 3 Sortowanie
Bardziej szczegółowoInformatyka 1. Wykład nr 7 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc
Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2007/2008 Wykład nr 7 (09.06.2008) Rok akademicki 2007/2008, Wykład
Bardziej szczegółowoEfektywność 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ółowoAlgorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.
Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji. Maria Górska 9 stycznia 2010 1 Spis treści 1 Pojęcie algorytmu 3 2 Sposób
Bardziej szczegółowoWprowadzenie do złożoności obliczeniowej
problemów Katedra Informatyki Politechniki Świętokrzyskiej Kielce, 16 stycznia 2007 problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów
Bardziej szczegółowoPodstawy programowania funkcjonalnego
Podstawy programowania funkcjonalnego haskell.mariuszrozycki.pl Mariusz Różycki Churchill College, University of Cambridge rev. 2014.03.27.1 Wprowadzenie Materiały haskell.mariuszrozycki.pl Slajdy (w tym
Bardziej szczegółowoPoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.
PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj
Bardziej szczegółowoStruktury 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ółowoINFORMATYKA 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ółowoInformatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Bardziej szczegółowoSpis treści JĘZYK C - PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI, REKURENCJA. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu
Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 1 Kod przedmiotu: EZ1C200 010 (studia niestacjonarne)
Bardziej szczegółowoRekurencja. Przygotowała: Agnieszka Reiter
Rekurencja Przygotowała: Agnieszka Reiter Definicja Charakterystyczną cechą funkcji (procedury) rekurencyjnej jest to, że wywołuje ona samą siebie. Drugą cechą rekursji jest jej dziedzina, którą mogą być
Bardziej szczegółowoSortowanie. LABORKA Piotr Ciskowski
Sortowanie LABORKA Piotr Ciskowski main Zaimplementuj metody sortowania przedstawione w następnych zadaniach Dla każdej metody osobna funkcja Nagłówek funkcji wg uznania ale wszystkie razem powinny być
Bardziej szczegółowoRekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.
Rekurencja Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów. Zgodnie ze znaczeniem informatycznym algorytm rekurencyjny to taki który korzysta z samego
Bardziej szczegółowoZadanie projektowe 1: Struktury danych i złożoność obliczeniowa
Łukasz Przywarty 171018 Data utworzenia: 24.03.2010r. Mariusz Kacała 171058 Prowadzący: prof. dr hab. inż. Adam Janiak oraz dr inż. Tomiasz Krysiak Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa
Bardziej szczegółowowykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis
i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje
Bardziej szczegółowoAlgorytmy 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