Transcript min

Slide 1


Slide 2

ALGORYTMY POSZUKIWANIA I PORZĄDKOWANIA
ELEMENTY JĘZYKA PROGRAMOWANIA
Maciej M. Sysło
Uniwersytet Wrocławski
Uniwersytet UMK w Toruniu
[email protected]

informatyka +

2


Slide 3

Algorytm, algorytmika

Na str. 3-7 są zamieszczone uwagi
wstępne na temat algorytmiki.
Można je pominąć i wrócić później.

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

Pierwszy algorytm – algorytm Euklidesa
300 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


Slide 4

Algorytmy a informatyka
Informatyka – jedna z definicji: dziedzina wiedzy i działalności
zajmująca się algorytmami
Czy 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


Slide 5

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

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


Slide 6

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ś programu

Konkluzja: powinniśmy lepiej poznać programowanie komputerów

informatyka +

6


Slide 7

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

Reklama firmy IBM
z 1924 roku

Komputer to maszyna
do myślenia !!!

informatyka +

7


Slide 8

Poszukiwanie, porządkowanie,
elementy programowania

PLAN

• Rozgrzewka (warm-up) – kilka krótkich programów
• Przeszukiwanie zbioru – Min i Max: schematy blokowe,
pierwsze programy, złożoność algorytmu,
• Kompletowanie podium zwycięzców turnieju
• Jednoczesne znajdowanie najmniejszego i największego
elementu
• Porządkowanie przez wybór – iteracja algorytmu
• Porządkowanie przez zliczanie
• Poszukiwanie informacji w zbiorach nieuporządkowanych
i uporządkowanych
• Dziel i zwyciężaj, rekurencja: sortowanie przez scalanie i
sortowanie szybkie

informatyka +

8


Slide 9

Rozgrzewka przy komputerach
Rozgrzewka (warm-up) – kilka krótkich programów:
• obliczanie pole trójkąta
• dodatkowo sprawdzanie, czy dane są dobre – warunek
• obliczanie pola trójkąta dla ciągu danych – iteracja i tablice
Ciekawe zadanie dotyczące trójkątów:
Dane:
ciąg (bardzo długi) liczb
Odpowiedź: czy z każdej trójki liczb z tego ciągu można
zbudować trójkąt?
Wskazówka: istnieje rozwiązanie, w którym nie trzeba
sprawdzać warunku trójkąta dla każdej trójki liczb

informatyka +

9


Slide 10

Warsztaty
Algorytm, język programowania, komputer
Proces komputerowej realizacji
algorytmu:
• Opis algorytmu – słowny
• Zapis w języku programowania
(Pascal, C++)
• Kompilacja – przetłumaczenie
na język zrozumiały przez
komputer
• Wykonanie
• Testowanie
• Dokumentacja

informatyka +

10


Slide 11

Znajdowanie elementu w zbiorze
Znajdź element w zbiorze:
• najwyższego ucznia w swojej klasie – metoda spaghetti
• jak zmieni się Twój algorytm, jeśli chciałbyś znaleźć w klasie
najniższego ucznia
• znajdź w swojej klasie ucznia, któremu droga do szkoły zabiera
najwięcej czasu
• znajdź najstarszego (lub najmłodszego) ucznia w swojej szkole
• znajdź największą kartę w potasowanej talii kart
• znajdź najlepszego tenisistę w swojej klasie – nie ma remisów
• znajdź najlepszego gracza w warcaby w swojej klasie – możliwe
są remisy

Podstawowa operacja – porównanie:
• dwóch liczb lub kombinacji liczb (data, karty):
• dwóch zawodników:

informatyka +

czy x < y ?
rozegranie meczu

11


Slide 12

Specyfikacja problemu
Specyfikacja problemu – dokładne opisanie problemu
Problem Min – Znajdowanie najmniejszego elementu w zbiorze
Dane: Liczba naturalna n i zbiór n liczb dany w ciągu x1, x2, ..., xn
Wynik: Najmniejsza wśród liczb x1, x2, ..., xn – oznaczmy ją min

Metoda rozwiązania: przeszukiwanie liniowe – od lewej do prawej

Algorytm Min – Znajdowanie najmniejszego elementu w zbiorze
Krok 1. Przyjmij za min pierwszy element w zbiorze (w ciągu),
imin := 1
czyli przypisz min := x1.
Krok 2. Dla kolejnych elementów xi, gdzie i = 2, 3, ..., n,
imin := i
jeśli min > xi, to przypisz min := xi.

Algorytm Max – prosta modyfikacja: zamiana > na <
Wyznaczanie imin – indeksu elementu o wartości min

informatyka +

12


Slide 13

Algorytm Min – demo
Demonstracja przeszukiwania od lewej do prawej:

informatyka +

13


Slide 14

(Zgrubny) schemat blokowy algorytmu Min
Krok 1:

Krok 2:

Instrukcje warunkowe:
rozgałęzienia algorytmu

min ← pierwszy element
ze zbioru A

Czy porównano wszystkie
elementy ze zbioru A ?
Tak
Koniec
algorytmu

Instrukcja iteracyjna

Nie
x ← kolejny element
ze zbioru A

Nie
min > x ?
Tak
min ← x

Ada Augusta, córka Byrona, uznawana
powszechnie za pierwszą programistkę
komputerów, przełomowe znaczenie
maszyny analitycznej Ch. Babbage’a,
pierwowzoru dzisiejszych komputerów,
upatrywała właśnie „w możliwości
wielokrotnego wykonywania przez nią
danego ciągu instrukcji, z liczbą powtórzeń
z góry zadaną lub zależną od wyników
obliczeń”, a więc w iteracji.

informatyka +

14


Slide 15

Pełny
schemat
blokowy
algorytmu
Min

informatyka +

15


Slide 16

Skomputeryzowany schemat blokowy
Schemat blokowy wykonany
w programie ELI

Iteracja

Wprowadzanie danych
Ciąg (tablica) z danymi

Bloki
warunkowe

informatyka +

16


Slide 17

Algorytm Min w postaci programu
Program w języku Pascal
program Min;
var i,imin,min,n,x:integer;
begin
read(n);
read(x); min:=x; imin:=1;
for i:=2 to n do begin
read(x);
if min > x then begin
min:=x; imin:=i
end
end;
write(imin,min)
end.

informatyka +

nazwa programu
deklaracje, typy zmiennych
blok programu – początek
czytaj n
czytaj pierwszy element
iteracja od 2 do n
czytaj kolejny element
instrukcja warunkowa
popraw min
instrukcja war. – koniec
iteracja – koniec
pisz wynik
blok programu – koniec

17


Slide 18

Pracochłonność algorytmu Min
• Porównanie – podstawowa operacja w algorytmie Min.
• Pracochłonność (złożoność obliczeniowa) algorytmu –
liczba podstawowych operacji wykonywanych przez
algorytm.
• Pytanie: Ile porównań wykonuje algorytm Min?
• Odpowiedź: o jedno mniej niż jest elementów, czyli n – 1
Pytania:

• Czy można szybciej?
• Czy istnieje szybszy algorytm znajdowania min?
• A może metoda pucharowa wyłaniania zwycięzcy w turnieju jest
szybsza?

informatyka +

18


Slide 19

Wyłanianie najlepszego zawodnika w turnieju
czyli inny sposób znajdowania max (lub min)
Porównania – mecze

Ośmiu zawodników: 7 meczy
n zawodników: n – 1 meczy
a więc nie jest szybsza

Tomek

Tomek

Bartek

Bartek

Bartek

Romek

Witek

Bolek

Witek

Tomek

Tomek

Zenek

informatyka +

Tolek

Tolek

Felek

19


Slide 20

A może mamy algorytm najlepszy?
Podsumowanie:
Mamy dwa algorytmy znajdowania min lub max:
• przeszukiwanie liniowe
• rozegranie turnieju

które na zbiorze n elementów wykonują n – 1 porównań
Może nie ma szybszego algorytmu?
TAK!

Hugo Steinhaus tak to uzasadnił:

Jeśli Tomek jest zwycięzcą turnieju, w którym startuje n zawodników,
to każdy inny spośród n – 1 zawodników musiał przegrać
przynajmniej raz, a zatem rozegrano przynajmniej n – 1 meczy.
Zatem każdy algorytm musi wykonać przynajmniej n – 1 porównań,
czyli nasze algorytmy są najszybsze – są optymalne.

informatyka +

20


Slide 21

A jak znaleźć drugiego najlepszego zawodnika
w turnieju?
Tomek

Ale Bartek nie grał
z drugą połową!

Czy jest nim Bartek?
Bo przegrał z Tomkiem?

Tomek
???

Bartek

Bartek

Bartek

Romek

Witek

Bolek

Witek

???
Tomek

Tomek

Zenek

informatyka +

Tylko dwa
dodatkowe mecze!

Tolek

Tolek

Felek

21


Slide 22

Jednoczesne znajdowanie min i max
Obserwacja:

jeśli x  y, to x kandydatem na min, a y kandydatem na max

Algorytm „dziel i zwyciężaj”:
Krok 1. Podział na kandydatów na min i kandydatów na max
Kandydaci na max
Porównania parami

Kandydaci na min

3

2

5

8

5











3 ? 1

2 ? 2

5 ? 3

4 ? 8

2 ? 5











1

2

3

4

2

max = 8

min = 1

Krok 2. Znajdź min i max

Liczba porównań:
• algorytm naiwny: n – 1 (min) + n – 2 (max) = 2n – 3
• algorytm dziel i zwyciężaj: n/2(podział)+ (n/2–1)(min) + (n/2–1)(max)
ok. 3n/2 – 2
– jest to algorytm optymalny

informatyka +

22


Slide 23

Problem porządkowania (sortowania)
Problem porządkowania (sortowania)
Dane: Liczba naturalna n i ciąg n liczb x1, x2, ..., xn
Wynik: Uporządkowanie tego ciągu liczb od najmniejszej do
największej

Algorytm: porządkowanie przez wybór – Selection Sort
Idea: najmniejszy wśród nieuporządkowanych daj na początek
Krok 1. Dla i = 1, 2, ..., n – 1 wykonaj kroki 2 i 3, a następnie
zakończ algorytm
Krok 2. Znajdź k takie, że xk jest najmniejszym elementem w ciągu
xi, ..., xn
Krok 3. Zamień miejscami elementy xi oraz xk

informatyka +

23


Slide 24

Porządkowanie przez wybór – demo (1)

Żółte – podciąg
już uporządkowany

Zielone i czerwone –
podciąg porządkowany

informatyka +

24


Slide 25

Porządkowanie przez wybór – demo (2)

Podciąg już
uporządkowany

Podciąg porządkowany

informatyka +

25


Slide 26

Złożoność porządkowania przez wybór
Liczba zamian elementów w kolejnych krokach:
1+1+1+…+1=n–1
Liczba porównań w kolejnych krokach:
(n – 1) + (n – 2) + (n – 3) + … + 3 + 2 + 1 = ?

Przykład
n=6

Pole prostokąta: 5 x 6
Suma = pole czarnych diamentów:

5













5x6

4













2

3













2













1











5=n–1



Ogólnie suma:

(n – 1) x n
2

Liczby trójkątne

6=n

informatyka +

26


Slide 27

Porządkowanie przez zliczanie
Problem porządkowania niewielkich liczb
Dane: Liczba naturalna n i ciąg n liczb całkowitych x1, x2, ..., xn,
należących do przedziału [1..M] – na ogół n < M.
Wynik: Uporządkowanie tego ciągu liczb od najmniejszej do największej

Algorytm. Porządkowanie przez zliczanie – CountingSort
Idea: Liczymy, ile jest konkretnych liczb w ciągu
Krok 1. Dla i = 1, 2, ..., M: ci = 0 zerowanie liczników.
Krok 2. Dla i = 1, 2, ..., n: zwiększ ck o 1, gdzie k = xi.
Krok 3. Dla i = 1, 2, ..., M: na kolejnych ci pozycjach w ciągu x umieść
element i.
Liczba operacji – proporcjonalna do n + M.

informatyka +

27


Slide 28

Poszukiwanie elementu w zbiorze
Problem poszukiwania elementu w zbiorze
Dane: Zbiór elementów w postaci ciągu n liczb x1, x2, ..., xn.
Wyróżniony element y
Wynik: Jeśli y należy do tego zbioru, to podaj jego miejsce (indeks) w
ciągu, a w przeciwnym razie – sygnalizuj brak takiego
elementu w zbiorze – wstaw y do ciągu

Dwa przypadki:
• Nieuporządkowany ciąg liczb x1, x2, ..., xn
• Uporządkowany ciąg liczb x1, x2, ..., xn

Nasz cel:
Jakie są korzyści z uporządkowania?
Jak utrzymywać porządek wśród informacji?

informatyka +

28


Slide 29

Poszukiwania w zbiorze nieuporządkowanym
Algorytm – Poszukiwanie liniowe
Krok 1. Dla i = 1, 2, ..., n, jeśli xi = y, to przejdź do kroku 3.
Krok 2. Komunikat: W ciągu danych nie ma elementu równego y.
Zakończ algorytm: – wynik: –1
Krok 3. Element równy y znajduje się na miejscu i w ciągu danych.
Zakończ algorytm: wynik: i

Pewna niedogodność
– sprawdzanie, czy
koniec ciągu.

begin
i:=1;
while (x[i]<>y) and (iif x[i]=y then PrzeszukiwanieLiniowe:=i
else PrzeszukiwanieLiniowe:=-1
end

informatyka +

29


Slide 30

Poszukiwania w zbiorze nieuporządkowanym
z wartownikiem
Algorytm – Poszukiwanie liniowe z wartownikiem
Takie same kroki algorytmu inna implementacja, czyli komputerowa
realizacja:
na końcu ciągu:

x1 x2 x3 x4 … xn xn+1

wstawiamy wartownika
– pilnuje końca ciągu

begin
i:=1;
Nie ma sprawdzania, czy koniec
ciągu, bo przeszukiwanie zawsze
x[n+1]:=y;
zatrzyma się na elemencie y.
while x[i]<>y do i:=i+1;
if i<=n then PrzeszukiwanieLinioweWartownik:=i
else PrzeszukiwanieLinioweWartownik:=-1
end

informatyka +

30


Slide 31

Poszukiwanie w zbiorze uporządkowanym
Zabawa w zgadywanie liczby
Zgadywana liczba:
Metoda:
Kolejne kroki:

17 w przedziale [1 : 20]

połowienia przedziału
strzałka wskazuje wybór;
kolor czerwony – ciąg do przeszukania:

informatyka +

31


Slide 32

Poszukiwanie przez połowienie
w ciągu uporządkowanym
function PrzeszukiwanieBinarne(x:tablicax; k,l:integer;
y:integer):integer;
{Przeszukiwanie binarne ciagu x[k..l] w poszukiwaniu
elementu y.}
var Lewy,Prawy,Srodek:integer;
Początkowe końce przedziału
begin
Lewy:=k; Prawy:=l;
while Lewy<=Prawy do begin
Połowienie przedziału
Srodek:=(Lewy+Prawy) div 2;
if x[Srodek]=y then begin
y należy do przedziału
PrzeszukiwanieBinarne:=Srodek; exit
end; {element y nalezy do przeszukiwanego ciagu}
if x[Srodek]else Prawy:=Srodek-1
Zmiana końców przedziału
end;
PrzeszukiwanieBinarne:=-1
y nie należy do
end
przeszukiwanego przedziału

informatyka +

32


Slide 33

Umieszczanie przez połowienie
w ciągu uporządkowanym
Dane: Uporządkowany ciąg liczb w tablicy x[k..l] oraz
element y
Wynik: Miejsce dla y w ciągu x[k..l] takie, aby po
wstawieniu y ciąg nadal był uporządkowany
Algorytm: y wstawiamy do przeszukiwanego ciągu w to miejsce,
gdzie algorytm poszukiwania kończy działanie, a więc tam,
gdzie jest y (jeśli y jest już w ciągu), albo gdzie powinien być.

informatyka +

33


Slide 34

Poszukiwanie przez połowienie – złożoność
Liczba kroków w algorytmie połowienia:
Ile razy należy przepołowić ciąg o danej długości, aby znaleźć
element lub miejsce dla niego?
Przykład dla n = 1200
Kolejne długości ciągu:
1200, 600, 300, 150, 75, 38, 19, 10, 5, 3, 2, 1
11 razy dzielono ciąg o długości 1200, by pozostał 1 element

Liczba porównań w algorytmach poszukiwania dla n = 1200:
• przez połowienie
• liniowy

11
1200

informatyka +

Porównaj, jaka jest potęga
uporządkowania !!!

34


Slide 35

Poszukiwanie przez połowienie
złożoność – dla orłów
Dla n = 1200 liczba porównań w algorytmie połowienia wyniosła 11
Pytania:
• Jak liczba porównań zależy od n?
• Jak dobry jest to algorytm?

Liczba porównań dla różnych n:
n
100
1000
10000
100000
1000000
10000000

liczba porównań
7
10
14
17
20
24

Algorytm poszukiwania przez
połowienie jest optymalny,
czyli najszybciej przeszukuje
zbiory uporządkowane.

Funkcja logarytm, bardzo
ważna w algorytmice

logarytm
to anagram od
algorytm

ok.log2 n

informatyka +

35


Slide 36

Jednoczesne znajdowanie min i max
pełny algorytm dziel i zwyciężaj
Algorytm Min-i-Max-Rek(Z,min,max)
Dane: Zbiór liczb Z
Wyniki: min – najmniejszy element w zbiorze Z
max – największy element w zbiorze Z

Rekurencyjne
wywołania na
podzbiorach

Krok 1. Jeśli Z = {a}, to min := a; max := a
Jeśli Z = {a, b}, to min := min {a, b}; max := max {a, b}
Krok 2. Gdy Z ma więcej niż dwa elementy, to:
2a. Podziel zbiór Z na dwa podzbiory Z1 i Z2
2b. Min-i-Max-Rek(Z1,min1,max1)
2c. Min-i-Max-Rek(Z2,min2,max2)
2d. min := min {min1, min2}; max := max {max1, max2}

informatyka +

36


Slide 37

Jednoczesne znajdowanie min i max
pełny algorytm dziel i zwyciężaj

DEMO

14524973

dziel
1452

4973

dziel

dziel
52
(2, 5)

14
(1 ,4)

49
(4, 9)
(min, max)

(1, 5)

73
(3, 7)

(3, 9)

(1, 9)

informatyka +

37


Slide 38

Sortowanie przez scalanie – scalanie
Scalanie – z dwóch uporządkowanych ciągów utwórz jeden
uporządkowany
Algorytm scalania. Scal.
Dane: dwa ciągi uporządkowane
Wynik: scalony ciąg uporządkowany
Krok: do tworzonego ciągu pobieraj najmniejszy element z
czoła scalanych ciągów
Scalane ciągi
Scalanie

1
1
Scalony ciąg

35
2

7
6

10 12
9 11 15 17 20

1 3 5 7 10 12
1 2 6 9 11 15 17 20

1 1 2 3 5 6 7 9 10 11 12 15 17 20

informatyka +

38


Slide 39

Sortowanie przez scalanie – scalanie
Scalane ciągi

Scalone ciągi, w
innym miejscu

informatyka +

39


Slide 40

Sortowanie przez scalanie – opis
Rekurencyjne
wywołania na
podciągach

Algorytm porządkowania przez scalanie MergeSort(l,p,x)
Dane: Ciąg liczb xl, xl+1, …, xp
Wynik: Uporządkowanie tego ciągu liczb od najmniejszej do
największej.
Krok 1. Jeśli l < p, to przyjmij s:=(l+p) div 2 i wykonaj trzy
następne kroki.
Krok 2. MergeSort(l,s,x) – sortowanie pierwszej połowy ciągu
Krok 3. MergeSort(s+1,p,x) – sortowanie drugiej połowy ciągu
Krok 4. Zastosuj algorytm Scal do ciągów (xl, …, xs) i (xs+1, …, xp)
i wynik umieść w ciągu (xl, …, xp).

informatyka +

40


Slide 41

Sortowanie przez scalanie

DEMO

212950
dziel

2 1 2

950

dziel
dziel

2 1

9 5

2
dziel

dziel
1

2

0

5

9

scal

scal

1 2

5 9
scal
1 2 2

scal
0 5 9
scal
0 1 2 2 5 9

informatyka +

41


Slide 42

Sortowanie przez scalanie

DEMO
Posortowana jest już
pierwsza połowa ciągu i
w trakcie sortowania
drugiej połowy, scalane
są dwa podciągi z
pierwszej części drugiej
połowy, uporządkowane
wcześniej rekurencyjnie
tą samą metodą

Posortowana
pierwsza
połowa ciągu

Scalane ciągi
Wynik scalania
dodatkowym miejscu

informatyka +

42


Slide 43

Sortowanie szybkie – opis
Rekurencyjne
wywołania na
podciągach

Algorytm szybkiego sortowania QuickSort(l,p,x)
Dane: Ciąg liczb xl, xl+1, …, xp
Wynik: Uporządkowanie tego ciągu liczb od najmniejszej do
największej.

Krok 1. Jeśli l < p, to przyjmij za element podziału v = xl i podziel
tym elementem dany ciąg. Oznacza to, że v znajdzie się
na pozycji elementu xk, dla pewnego k spełniającego l ≤ k
≤ p, i elementy na lewo będą od niego nie większe, a na
prawo – nie mniejsze.
Wykonaj dwa następne kroki.
Krok 2. QuickSort(l,k–1,x) – sortowanie elementów na lewo od v
Krok 3. QuickSort(k+1,p,x) – sortowanie elementów na prawo od v

informatyka +

43


Slide 44

Sortowanie szybkie

DEMO

7

5

8

10

1

15

12

4

11

19

1

7

5

1

10

1

15

12

4

11

19

8

7

5

1

4

1

15

12

10

11

19

8

7

5

1

4

1

15

12

10

11

19

8

Zamiana
miejscami

Zamiana
miejscami
Rekurencyjne
wywołania na
podciągach

1

5

Na lewo od 7 elementy
nie większe od 7 –
porządkujemy tak samo

1

4

7

15

7 na swoim
miejscu w ciągu
uporządkowanym

12

10

11

19

8

Na prawo od 7 elementy
nie mniejsze od 7 –
porządkujemy tak samo

informatyka +

44


Slide 45

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 +

45


Slide 46

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 realizacje
Kursy (24 godz.) – Kuźnia Informatycznych Talentów – KIT dla Orłów:
• Przegląd podstawowych algorytmów
• Struktury danych i ich wykorzystanie
• Zaawansowane algorytmy
Tendencje – 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 +

46


Slide 47