Zaawansowane metody programowania. Algorytmy

Podobne dokumenty
Język programowania PASCAL

Wstęp do informatyki- wykład 2

Weronika Mysliwiec, klasa 8W, rok szkolny 2018/2019

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Helena Boguta, klasa 8W, rok szkolny 2018/2019

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

POLITECHNIKA OPOLSKA

Podstawy i języki programowania

POLITECHNIKA OPOLSKA

1 Wprowadzenie do algorytmiki

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;

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

Modulacja i kodowanie. Labolatorium. Kodowanie źródłowe Kod Huffman a

Wstęp do informatyki Ćwiczenia. Piotr Fulmański

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Algorytmy i Struktury Danych.

Znajdowanie największego i najmniejszego elementu w zbiorze n liczb całkowitych

PAKIETY STATYSTYCZNE

Programowanie w VB Proste algorytmy sortowania

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Wprowadzenie do programowania

Algorytmy i struktury danych

Algorytmy. Programowanie Proceduralne 1

Metody Kompilacji Wykład 7 Analiza Syntaktyczna

Wprowadzenie do Sztucznej Inteligencji

Wstęp do Programowania potok funkcyjny

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

Informatyka I. Wyk lad I. Wprowadzenie. Robert Muszyński Instytut Cybernetyki Technicznej Politechnika Wroc lawska

Procedury i funkcje składowane

Wprowadzenie do Sztucznej Inteligencji

Programowanie, algorytmy i struktury danych

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

EGZAMIN MATURALNY OD ROKU SZKOLNEGO

Wstęp do informatyki

Schematy blokowe. Algorytmy Marek Pudełko

Algorytmy. Programowanie Proceduralne 1

TTIC 31210: Advanced Natural Language Processing. Kevin Gimpel Spring Lecture 9: Inference in Structured Prediction

Programowanie. wer. 7 z drobnymi modyfikacjami! Wojciech Myszka :39:

Linear Classification and Logistic Regression. Pascal Fua IC-CVLab

Dydaktyka matematyki III-IV etap edukacyjny (wykłady) Wykład nr 6: Nauczanie algorytmów w szkole Semestr zimowy 2018/2019

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Rekurencja. Przygotowała: Agnieszka Reiter

Algorytm. a programowanie -

Algorytmy i struktury danych. wykład 2

Wstęp do Programowania potok funkcyjny

Wyszukiwanie największej spośród czterech liczb. Przykładowe rozwiązanie

Cele. Definiowanie wyzwalaczy

Struktury danych (I): kolejka, stos itp.

Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu,

Algorytmy i Struktury Danych

OpenPoland.net API Documentation

11. Blok ten jest blokiem: a. decyzyjnym b. końcowym c. operacyjnym

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Few-fermion thermometry

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

Język ludzki kod maszynowy

Teoretyczne podstawy informatyki

PODSTAWY ALGORYTMIKI

Programowanie obiektowe i C++ dla matematyków

Metody Kompilacji Wykład 3

Definicje. Algorytm to:

Programowanie w języku Python. Grażyna Koba

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

Modelowanie procesów współbieżnych

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Szacowanie ryzyka z wykorzystaniem zmiennej losowej o pramatkach rozmytych w oparciu o język BPFPRAL

Podstawy Informatyki. Algorytmy i ich poprawność

Algorytmy od problemu do wyniku

Wstęp do Programowania potok funkcyjny

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

Języki programowania zasady ich tworzenia

DUAL SIMILARITY OF VOLTAGE TO CURRENT AND CURRENT TO VOLTAGE TRANSFER FUNCTION OF HYBRID ACTIVE TWO- PORTS WITH CONVERSION

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Risk-Aware Project Scheduling. SimpleUCT

Podstawy programowania

Wykład z Technologii Informacyjnych. Piotr Mika

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ

Wykład 6. Wyszukiwanie wzorca w tekście

Spis treści. Optymalizacja jednowymiarowa

Opis problemu i przedstawienie sposobu jego rozwiązania w postaci graficznej. Gimnazjum nr 3 im. Jana Pawła II w Hrubieszowie 1

Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40

Camspot 4.4 Camspot 4.5

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Zapis algorytmów: schematy blokowe i pseudokod 1

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.

Pomoc do programu konfiguracyjnego RFID-CS27-Reader User Guide of setup software RFID-CS27-Reader

General Certificate of Education Ordinary Level ADDITIONAL MATHEMATICS 4037/12

Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje.

Administracja i programowanie pod Microsoft SQL Server 2000

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Ilość cyfr liczby naturalnej

Podstawy Programowania

Transkrypt:

Zaawansowane metody programowania Dr Zbigniew Kozioł - wykład Mgr Mariusz Woźny - laboratorium Wykład IV Algorytmy

Drzewa, grafy, etc... Najpierw o algorytmach General Feldmarschall Albrecht Theodor Emil Graf von Roon

Algorytmy In mathematics and computer science, an algorithm is a self contained step by step set of operations to be performed. Algorithms exist that perform calculation, data processing, and automated reasoning. An algorithm is an effective method that can be expressed within a finite amount of space and time and in a well defined formal language for calculating a function. Starting from an initial state and initial input (perhaps empty), the instructions describe a computation that, when executed, proceeds through a finite number of well defined successive states, eventually producing "output" Algorytm skończony ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego rodzaju zadań.

Schematy blokowe Poszczególne elementy schematu łączy się za pomocą strzałek. W większości przypadków blok ma jedną strzałkę wchodzącą i jedną wychodzącą, lecz są także wyjątki Początek lub koniec algorytmu. Symbol procesu. W jej obrębie umieszczamy wszelkie obliczenia lub podstawienia. Proces ma dokładnie jedną strzałkę wchodzącą i dokładnie jedną strzałkę wychodzącą. Blok decyzyjny. Umieszcza się w nim jakiś warunek (np. "x>2"). Każdy romb ma dokładnie jedną strzałkę wchodzącą oraz dokładnie dwie strzałki wychodzące. Odczyt lub zapis danych Proces, który został już kiedyś zdefiniowany. Można ją porównać do procedury, którą definiuje się raz w programie, by następnie móc ją wielokrotnie wywoływać. Warunkiem użycia jest więc wcześniejsze zdefiniowanie procesu. Podobnie jak w przypadku zwykłego procesu i tu mamy jedno wejście i jedno wyjście.

Schematy blokowe Przykładowy algorytm za pomocą schematu blokowego. Zdefiniujmy iteracyjną wersję silni. Dla przypomnienia: rekurencyjna definicja silni: 0!=1 n!=n*((n 1)!)

Najważniejsze techniki implementacji algorytmów komputerowych proceduralność algorytm dzielimy na szereg podstawowych procedur, wiele algorytmów współdzieli wspólne biblioteki standardowych procedur, z których są one wywoływane w razie potrzeby; praca sekwencyjna wykonywanie poszczególnych procedur algorytmu, według kolejności ich wywołań, naraz pracuje tylko jedna procedura; praca wielowątkowa procedury wykonywane są sekwencyjnie, lecz kolejność ich wykonania jest trudna do przewidzenia dla programisty; praca równoległa wiele procedur wykonywanych jest w tym samym czasie, wymieniają się one danymi; rekurencja procedura lub funkcja wywołuje sama siebie, aż do uzyskania wyniku lub błędu; algorytm probabilistyczny działa poprawnie z bardzo wysokim prawdopodobieństwem, ale wynik nie jest pewny.

Przykład rekurencji (Pascal, recurrent.pas Function Factorial(n : Integer) : Integer; Var my_string: String; Begin STR(n:3,my_string); writeln('in='+my_string); If n = 1 then Factorial := 1 Else Factorial := n*factorial(n 1); STR(Factorial:3,my_string); writeln('out='+my_string); End; BEGIN Factorial(7); END. link)

Przykład algorytmu. Znajdywanie największej liczby w zbiorze danych. One of the simplest algorithms is to find the largest number in a list of numbers of random order. Finding solution requires looking at every number in the list. Algorithm: 1. If there are no numbers in the set then there is no highest number. 2. Assume the first number in the set is the largest number in the set. 3. For each remaining number in the set: if this number is larger than the current largest number, consider this number to be the largest number in the set. 4. When there are no numbers left in the set to iterate over, consider the current largest number to be the largest number of the set.

Przykład implementacji algorytmu znajdywania największej liczby w zbiorze danych, w języku perl. my $maxa # Inicjowanie $maxa my $index = 0; # $index będzie trzymać numer linii danych wejściowych while(my $a=<>) { $index++; # zwiększamy index o 1 $a =~ s/\n//; # usuwamy znak końca linii if ($index == 1) { $maxa = $a; } if ($a > $maxa) { $maxa = $a; } } print $maxa\n ;

Przykład implementacji algorytmu znajdywania największej liczby w zbiorze danych, w języku perl. Program maximum.pl ( link) z danymi w pliku maximum.dat ( link) uruchamiamy z okna terminala komendą: perl./maximum.pl < maximum.dat

Przykład implementacji algorytmu probabilistycznego, w języku perl. Poszukujemy minimum funkcji y=x^2 my my my my $miny, $minx; # Inicjowanie $miny, $minx; Wynik, którego szukamy $Xmin = 1.5; my $Xmax = 0.5; # Przedział X $DX = $Xmax $Xmin; $No = 10; # liczba przypadkowych liczb generowanych for (my $i=0; $i<$no; $i++) { my $randomx = rand(); # a random number between 0 and 1 my $x = $Xmin + $DX * $randomx; my $y = $x*$x; # funkcja, której minimum szukamy if ($i==0) { $minx = $x; $miny = $y; } else { if ($y < $miny) { $minx = $x; $miny = $y; } } print "X: $minx\ty:$miny\n"; }

Algorytm probabilistyczny. Własności. 1. Wynik za każdym razem inny. 2. Wynik tym dokładniejszy im więcej prób. Ale... niekoniecznie zawsze! 3. Wbrew pozorom, metoda jest bardzo użyteczna. W większości symulacji / modelowania komputerowego wcale bowiem nie musimy poznać dokłądnego wyniku! Algorytm probabilistyczny, w szczególnej odmianie, znany jest jako metoda Monte Carlo.

Monte Carlo, Monaco

Algorytm probabilistyczny, w przykładzie opisanym, nadaje się także świetnie do implementacji w formie algorytmu wielowątkowego, lub równoległego. In computer science, a parallel algorithm, as opposed to a traditional serial algorithm, is an algorithm which can be executed a piece at a time on many different processing devices, and then combined together again at the end to get the correct result.

Algorytmy wielowątkowe lub równoległe. Algorytmy rozprzestrzenione (distributed). GPU (NVidia), threads, Google (maps and searching), CETI

Przykład innego algorytmu znajdywania największej liczby w zbiorze liczb przypadkowych. Algorytm dokonuje również sortowania liczb. An animation of the quicksort algorithm sorting an array of randomized values. The red bars mark the pivot element; at the start of the animation, the element farthest to the right hand side is chosen as the pivot. Quicksort - Wikipedia link (ANG)

Literatura / Źródła - Handbook of Algorithms and Data Structures link (ANG) - Dictionary of Algorithms and Data Structures link (ANG) - Archiwum gotowych rozwiązań zadań algorytmicznych link (PL) - Algorytmy i struktury danych link (PL) - Algorytm - Wikipedia link (PL) - Algorithm - Wikipedia link (ANG) - Pascal Programming link (ANG) -