informatyka - techniki algorytmiczne...informatyka + 12 proces komputerowej realizacji algorytmu:...

37

Upload: others

Post on 03-Jul-2020

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie
Page 2: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

TECHNIKI ALGORYTMICZNE – przybliżone i dokładne

WPROWADZENIE DO ALGORYTMIKI

Maciej M. SysłoUniwersytet Wrocławski

Uniwersytet UMK w [email protected]

2informatyka +

Page 3: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Algorytm, algorytmika

Algorytm – opis rozwiązania krok po kroku postawionego problemu lub sposobu osiągnięcia jakiegoś celu

Pierwszy algorytm – algorytm Euklidesa300 p.n.e

algorytm od Muhammad ibn Musa al-Chorezmi IX w.

Algorytmika – dziedzina zajmująca się algorytmami i ich własnościami

informatyka + 3

Page 4: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Algorytmy a informatyka

Informatyka – jedna z definicji: dziedzina wiedzy i działalności zajmująca się algorytmamiCzy zajmuje się też algorytmami kulinarnymi?

Donald E. Knuth: Mówi się często, że człowiek dotąd nie zrozumie czegoś,

zanim nie nauczy tego – kogoś innego.W rzeczywistości,

człowiek nie zrozumie czegoś (algorytmu) naprawdę,zanim nie zdoła nauczyć tego – komputera.

Ralf Gomory (IBM):Najlepszym sposobem przyspieszania komputerów jest obarczanie ich mniejszą liczbą działań (szybszymi algorytmami)

informatyka + 4

Będziemy uczyć komputery, czyli

programować je !

Page 5: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Algorytmiczne rozwiązywanie problemu

Dla problemu – chcemy otrzymać rozwiązanie komputerowe, które jest:

• zrozumiałe dla każdego, kto zna problemu • poprawne, czyli spełnia specyfikację (opis) problemu• efektywne, czyli nie marnuje czasu i pamięci komputera

Metoda rozwiązywania: • analiza sytuacji problemowej• sporządzenie specyfikacji: wykaz danych, wyników i relacji• projekt rozwiązania• komputerowa realizacja rozwiązania – implementacja• testowanie poprawności rozwiązania• dokumentacja i prezentacja rozwiązania

informatyka + 5

Page 6: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Rozwiązywanie problemów z pomocą komputerów

Objaśnienie dwóch terminów:Problem:

• problem, gdy nie podano nam, jak należy go rozwiązać, ale wiemy wystarczająco, by poradzić sobie z nim

• a więc, problem jest dla każdego nie tylko dla orłów

Programowanie: • komputery wykonują tylko programy• cokolwiek uruchamiamy na komputerze: Google, dokument w Word,

arkusz w Excel, naciśnięcie klawisza – jest programem• każdy widoczny i niewidoczny efekt działania komputera to wynik

działania jakiegoś programuKonkluzja: powinniśmy lepiej poznać programowanie komputerów

informatyka + 6

Page 7: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Myślenie algorytmiczneMyślenie komputacyjne (ang. computational thinking)

informatyka + 7

Reklama firmy IBM z 1924 roku

Komputer to maszyna do myślenia !!!

Page 8: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Techniki algorytmiczne – przybliżone i dokładne – idee

• W wielu sytuacjach postępujemy intuicyjnie, podejmując decyzje, które wydają się nam najlepsze, chociaż nie potrafimy tego uzasadnić – podejście zachłanne

• Jednak czasem musimy przejrzeć wszystkie możliwości –dobrze jest mieć pewność, że przeglądamy (pośrednio lub bezpośrednio) wszystkie, ale bez powtórzeń – metoda przeszukiwania z nawrotami

• Stara zasada – korzystać z tego, co już znamy – strategia dziel i zwyciężaj

• Komputery staramy się używać wtedy, gdy bez niech nie potrafimy sobie poradzić. A najlepiej, gdyby komputery wykonywały za nas dużą część roboty. Rekurencja – czyli jak zwalić robotę na komputer

informatyka + 8

Page 9: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Techniki algorytmiczne – przybliżone i dokładne – Plan zajęć

• Podejście zachłanne: – wydawanie reszty– zmartwienie napalonego kinomana– pakowanie najcenniejszego plecaka – najdłuższa droga w piramidzie

• Przeszukiwanie z nawrotami– poszukiwanie wyjścia z labiryntu– rozmieszczanie hetmanów na szachownicy

• Strategia dziel i zwyciężaj– poszukiwanie elementów w zbiorze uporządkowanym

• Rekurencja– wyprowadzanie liczb od początku– szybkie potęgowanie– algorytm Euklidesa

informatyka + 9

Page 10: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Metoda zachłanna: wydawanie reszty – problem

Problem Reszty. Dane: nominały, np. 1 gr, 2 gr, 5 gr, … K – kwota do wydaniaWynik: Utworzyć K z najmniejszej liczby banknotów i monet

Dyskusja: • jak wydają sprzedawcy?• jaki mamy pomysł?• czy potrafimy uzasadnić, że nasz pomysł da najlepsze

rozwiązanie?

Konkluzja – algorytm zachłanny: Wydawaj sukcesywnie, zawsze możliwie największy nominał banknotu lub monety

informatyka + 10

Dla sprzedawcy to także dobre kryterium – ma mniej okazji, by się pomylić

Page 11: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Metoda zachłanna: wydawanie reszty – w arkuszu

Rozwiązanie w arkuszu –w arkuszu można również wykonywać algorytmy

informatyka + 11

Ćwiczenie na warsztatach: utworzyć taki arkusz

Page 12: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

WarsztatyAlgorytm, język programowania, komputer

informatyka + 12

Proces komputerowej realizacji algorytmu:• Opis algorytmu• Zapis w języku

programowania (Pascal, C++)

• Przetłumaczenie na język zrozumiały przez komputer

• Wykonanie• Testowanie• Prezentacja

rozwiązania

Page 13: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Metoda zachłanna: wydawanie reszty – program

Program Zachlanna_reszta_PL;var i,ile,kwota_int:integer;

kwota :real;nominal:array[1..14] of integer=(20000,10000,5000,2000,1000,500,200,100,50,20,10,5,2,1);reszta :array[1..14] of integer;

beginwrite('kwota'); read(kwota);kwota_int:=round(kwota*100);for i:=1 to 14 do beginile:=kwota_int div nominal[i];reszta[i]:=ile;kwota_int:=kwota_int-ile*nominal[i]

end;for i:=1 to 8 dowriteln(nominal[i] div 100,' zl.: ',reszta[i]);for i:=9 to 14 dowriteln(nominal[i],' gr.: ',reszta[i])

end.

informatyka + 13

Deklaracje zmiennych

Czytanie kwoty

Nominały w groszach

Zamiana kwoty na grosze

Obliczanie wielkości kolejnych nominałów

Wyprowadzenie wyników

Page 14: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Metoda zachłanna: wydawanie reszty – jak dobrze?

Pytanie: jak dobry jest algorytm zachłanny? Czy zawsze tworzy resztę z najmniejszejliczby banknotów i monet?

Sytuacje: • brakuje niektórych nominałów w kasie, np. 5 gr. i 10 gr. • pojawia się nowa moneta, np. 21 gr.

Fakt:Istniejące w świecie nominały, gdy tylko jest ich dostatecznie dużo w kasie, gwarantują, że algorytm zachłanny daje zawsze najmniejszą liczbę banknotów i monet

informatyka + 14

Page 15: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Metoda zachłanna: zmartwienie kinomana

Sytuacja: Dane: program filmów w Multikinie na dany dzieńWynik: Kinoman chce jednego dnia zobaczyć jak najwięcej filmów w Multikinie

Strategia: Wybieraj filmy, które kończą się możliwie jak najwcześniej Uzasadnienie: Pozostaje więcej czasu na następne filmy

Konkluzja: Jest to optymalny algorytm.

informatyka + 15

1 2 3 4X XX X X X X

Page 16: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Metoda zachłanna: pakowanie plecaka

Ogólny problem plecakowyDane: n rzeczy (towarów, produktów itp.), w nieograniczonej ilości:

i-ta rzecz waży wi jednostek i ma wartość pi: W – maksymalna pojemność plecaka.

Wynik: ilości poszczególnych rzeczy (mogą być zerowe), których całkowita waga nie przekracza W i których sumaryczna wartość jest największa wśród wypełnień plecaka rzeczami o wadze nie przekraczającej W.

Decyzyjny problem plecakowy – 0-1 (zero-jedynkowy)Rzeczy są tylko w pojedynczych ilościach – decyzja: bierzemy albo nie

informatyka + 16

Page 17: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Metoda zachłanna: pakowanie plecaka

Przykład: wartość towaru:waga towaru:

Zachłanne kryteria wyboru rzeczy do plecaka: 1. Najcenniejsze najpierw: 7 x nr 5 + 1 x nr 4 = 7x10 + 1x7 = 772. Najlżejsze najpierw: 23 x nr 6 = 23x2 = 463. Najcenniejsze w stosunku do swojej wagi najpierw, czyli w

kolejności nierosnących wartości ilorazu pi / wi

Kolejność: 7/2, 10/3, 4/2, 2/1, 5/3, 6/611 x nr 4 + 1 x nr 6 = 11x7 + 1x2 = 79 NAJLEPSZE

OPTYMALNE: 10 x nr 4 + 1 x nr 5 = 10x7 + 1x10 = 80

Żadne zachłanne nie jest optymalne – na ogół tak jestinformatyka + 17

Pojemność plecaka

Page 18: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Metoda zachłanna: najdłuższa droga z piramidy

Dane: Piramida liczb:

Wynik: Znaleźć najdłuższą drogę z korzenia

Algorytm zachłanny. 1. Zacznij w korzeniu2. Wybieraj większą liczbę poniżej.

informatyka + 18

3

5 7

8 2 5

4 5 7 5

3 6 3 4 2

Droga z korzenia

Długość drogi zachłannej: niebieska: 3+7+5+7+4 = 26

Długość drogi najdłuższej: różowa: 3+5+8+5+6 = 27

Page 19: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Przeszukiwanie z nawrotami

Opis sytuacji:• Duża przestrzeń możliwych rozwiązań. • Nie znamy innej metody znalezienia rozwiązania niż

przeszukanie tej przestrzeni• Decydujemy się przeszukać całą przestrzeń, ale

– chcemy to zrobić systematycznie – każde rozwiązanie powinno się pojawić, bezpośrednio lub

pośrednio, ale żadne nie więcej niż raz

• Może nas interesować znalezienie wszystkich rozwiązań

Przykłady: • Wychodzenie z labiryntu – duża liczba możliwych dróg• Ustawianie figur na szachownicy – duża liczba

możliwych układów

informatyka + 19

Page 20: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Przeszukiwanie z nawrotami: wychodzenie z labiryntu

Opis sytuacji:Labirynt: pola = kwadraty, brak zamkniętych komnatCel: znaleźć wyjście z dowolnego polaAlgorytm:1. Wybieraj kierunki w kolejności: G (do góry), L (w lewo),

P (w prawo), D (do dołu) – patrzymy zawsze przed siebie2. Jeśli nie ma przejścia – cofnij się na pole, z którego

przyszedłeś.

informatyka + 20

Nawrót

Page 21: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Przeszukiwanie z nawrotami: wychodzenie z labiryntu

Droga z pola 4a:G-3a, G-2a, G-1a – do Góry już nie można iść, ale

można iść w PrawoP-1b – z tego pola nie ma już przejść G, L, P –

cofamy się B-1a – także nie ma innego przejścia – cofamy sięB-2a – podobnie, cofamy sięB-3a – podobnie, cofamy się – z 3a można iść

jeszcze w PrawoP-3b – istnieje przejście w LewoL-2b – istnieje przejście w PrawoP-2c – istnieje przejście w LewoWYJŚCIE z labiryntu

informatyka + 21

Page 22: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Przeszukiwanie z nawrotami: rozmieszczanie hetmanów na szachownicy

Opis sytuacji:Szachownica: n x n, hetman – atakuje po

wszystkich liniachCel: ustawić jak największą liczbę nie

atakujących się hetmanówAlgorytm:Poruszamy się kolumnami, od lewej do prawej, a w kolumnach od góry. 1. Ustaw hetmana w danej kolumnie na

nie atakowanym polu. 2. Jeśli nie można, to cofnij się do

poprzedniej kolumny i wybierz następne pole

informatyka + 22

Nawrót

Page 23: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Przeszukiwanie z nawrotami: rozmieszczanie hetmanów na szachownicy

informatyka + 23

a4 b2: brak pola w c

d2 !!!c4b1nawrót a: a3

c3: brak pola w dnawrót do b: b1

Page 24: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Przeszukiwanie z nawrotami: rozmieszczanie hetmanów na szachownicy

informatyka + 24

Drzewo poszukiwania ustawień:

Ustawienie 4 hetmanów

Oś symetrii drzewa

Odbicie symetryczne

Page 25: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

informatyka + 25

Zgadywana liczba: 17 w przedziale [1 : 20]Metoda: połowienia przedziału Kolejne kroki: strzałka wskazuje wybór;

kolor czerwony – ciąg do przeszukania:

Strategia dziel i zwyciężaj – przykład – poszukiwanie elem. w zbiorze uporządkowanym

Page 26: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Techniki algorytmiczne – rekurencja

Myślenie rekurencyjne: – przykłady z życia: jedzenie, tańczenie– wyprowadzanie liczb od początku– Wieże Hanoi– liczby Fibonacciego– szybkie potęgowanie– algorytm Euklidesa

Rekurencyjny algorytm: Rozwiązując problem … odwołuje się do siebie

Korzyści: Część pracy … zwalamy na komputer!

informatyka + 26

Page 27: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

• Jedzenie kaszki z talerza – A. JerszowJedz kaszkę;

jeśli talerz jest pusty to koniec jedzeniaw przeciwnym razie

weź łyżkę kaszki;Jedz kaszkę

• TaniecTańcz;

jeśli nie gra muzyka to koniec tańczeniaw przeciwnym razie

zrób krok;Tańcz

Procedura rekurencyjna wywołuje siebie

Warunek początkowy –zatrzymuje wywołania

Rekurencja – przykłady z życia

informatyka + 27

Page 28: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Algorytm – drukowania cyfr liczby 30451. Najpierw drukuj cyfry liczby 3042. Później drukuj cyfrę 5

Potrzebne są dwie operacje:reszta z dzielenia mod: np. 3045 mod 10 = 5dzielenie całkowite div: np. 3045 div 10 = 304

Liczbę 3045 drukuj w kolejności cyfr: 54 03

Rekurencja – wyprowadzanie kolejnych cyfr liczby

Liczba 304 to: 3045 div 10 = 304

Cyfra 5 to reszta: 3045 mod 10 = 5Zauważmy: możemy

zastosować ten sam algorytm ale do liczby 304 – REKURENCJA

informatyka + 28

Page 29: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

KolejnaCyfra (m)if m < 10 then write (m)else begin

KolejnaCyfra (m div 10);write (m mod 10)

end

Uwagi: 1. Można zastąpić 10 przez 2 i otrzymamy kolejne cyfry

binarne, od najbardziej znaczącej 2. Po zmianie kolejności poleceń – drukowanie cyfr od końca

Warunek początkowy –gdy liczba ma jedną cyfrę.

Rekurencja – wyprowadzanie kolejnych cyfr liczby

Wywołanie rekurencyjne dla liczby bez ostatniej cyfry

Drukowanie ostatniej cyfry

informatyka + 29

Page 30: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

KolejnaCyfra (3045)

KolejnaCyfra (304)

KolejnaCyfra (30)

KolejnaCyfra (3)

write (3045 mod 10) = 5

write (304 mod 10) = 4

write (30 mod 10) = 0

write (3) = 3

Kolejno drukowane cyfry

Powrót z wywołań rekurencyjnych

Wywołania rekurencyjne

304 = 3045 div 10

Rekurencja – wyprowadzanie kolejnych cyfr liczby

informatyka + 30

Page 31: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Hanoi (n, A, B, C) {z A na B za pomocą C}if n = 0 then nic nie róbelse begin

Hanoi (n – 1, A, C, B);Największy krążek z A na B;Hanoi (n – 1, C, B, A)

end

Procedura rekurencyjna wywołuje siebie

Warunek początkowy –zatrzymuje wywołania

Rekurencja – inny przykład – Wieże Hanoi

informatyka + 31

Page 32: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

F(n) – liczba par królików po n miesiącach

nn–1n–2 1 2

F(n) = + F(n-2)F(n-1)

F(1)=1 F(2)=1

dla n > 2:

• • • •••3

Króliki, które przeżywają

Króliki, urodzone przez pary żyjące ponad miesiąc

Liczby Fibonacciego: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

Warunki początkowe

Rekurencja:

Rekurencja – inny przykład – króliki Fibonacciego

informatyka + 32

Page 33: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

• Podnoszenie do potęgi

Potega (x, n) { xn }if n = 1 then Potega := xelse if n – parzyste then

Potega := Potega (x, n/2)^2 {xn = (xn/2)2}else Potega := Potega (x, n – 1)*x {xn = (xn–1)x}

• Algorytmy sortowania – demo w programie SortowanieSortowanie przez scalanieSortowanie szybkie

Uwaga. Obliczenia przebiegają tak, jakby n było liczbą binarną zapisaną w postaci schematu Hornera

Rekurencja – inne przykłady

informatyka + 33

Page 34: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

• Algorytm Euklidesa

NWD(m,n) {zakładamy m≤n}if m = 0 then NWD := nelse NWD := NWD(n mod m, m)

• Wartość wielomianu stopnia n w punkcie x

w(n,x)if n = 0 then w := a0

else w := w(n – 1, x) *x + an

Rekurencja – inne przykłady

Reszta z zdzielenia n przez m.

informatyka + 34

Page 35: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Pokrewne zajęcia w Projekcie Informatyka +

Wykład+Warsztaty (Wszechnica Poranna):• Wprowadzenie do algorytmiki i programowania – wyszukiwanie i

porządkowanie informacji • Proste rachunki wykonywane za pomocą komputera.• Techniki algorytmiczne – przybliżone (heurystyczne) i dokładne. Wykłady (Wszechnica Popołudniowa): • Czy wszystko można policzyć na komputerze? • Porządek wśród informacji kluczem do szybkiego wyszukiwania. • Dlaczego możemy się czuć bezpieczni w sieci, czyli o szyfrowaniu

informacji. • Znajdowanie najkrótszych dróg, najniższych drzew, najlepszych

małżeństw

informatyka + 35

Page 36: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie

Pokrewne zajęcia w Projekcie Informatyka +

Kursy (24 godz.) – Wszechnica na Kołach:• Algorytmy poszukiwania i porządkowania. Elementy języka

programowania• Różnorodne algorytmy obliczeń i ich komputerowe realizacje• Grafy, algorytmy grafowe i ich komputerowe realizacjeKursy (24 godz.) – Kuźnia Informatycznych Talentów – KIT dla Orłów:• Przegląd podstawowych algorytmów• Struktury danych i ich wykorzystanie• Zaawansowane algorytmyTendencje – Wykłady• Algorytmy w Internecie, K. Diks• Czy P = NP, czyli jak wygrać milion dolarów w Sudoku, J. Grytczuk• Między przeszłością a przyszłość informatyki, M.M Sysło

informatyka + 36

Page 37: Informatyka - TECHNIKI ALGORYTMICZNE...informatyka + 12 Proces komputerowej realizacji algorytmu: • Opis algorytmu • Zapis w języku programowania (Pascal, C++) • Przetłumaczenie