• Nie Znaleziono Wyników

Porzadek wsrod informacji kluczem do szybkiego wyszukiwania

N/A
N/A
Protected

Academic year: 2021

Share "Porzadek wsrod informacji kluczem do szybkiego wyszukiwania"

Copied!
50
0
0

Pełen tekst

(1)
(2)

PORZĄDEK WŚRÓD INFORMACJI

KLUCZEM DO SZYBKIEGO WYSZUKIWANIA

Maciej M. Sysło

Uniwersytet Wrocławski Uniwersytet UMK w Toruniu

syslo@ii.uni.wroc.pl

2

(3)

Algorytm, algorytmika

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

(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

)

(5)

Myślenie algorytmiczne

Myślenie komputacyjne

(ang. computational thinking)

informatyka +

5

Reklama firmy IBM

z 1924 roku

Komputer to maszyna

do myślenia !!!

(6)

IBM

(7)

Problemy, algorytmy

i ich komputerowe realizacje (implementacje)

Plan:

• Poszukiwanie informacji:

• w zbiorze nieuporządkowanym • w zbiorze uporządkowanym

• Przeszukiwanie zbioru:

schemat blokowy, algorytm optymalny

• Kompletowanie podium zwycięzców turnieju

• Jednoczesne znajdowanie najmniejszego i największego

elementu

• zasada dziel i zwyciężaj

• Porządkowanie: przez wybór, przez zliczanie, przez scalanie

• Inne zastosowania zasady dziel i zwyciężaj

(8)

Poszukiwanie elementu w zbiorze

Problem poszukiwania elementu w zbiorze – specyfikacja

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

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 +

8

(9)

Poszukiwanie elementu w zbiorze – przykład

Przeszukiwanie książki telefonicznej

Poszukiwanie numeru telefonu danej osoby

Dane: Nazwiska, adresy, numery telefonów … – książka telefoniczna. Ciąg danych x1, x2, ..., xn – kartki książki z danymi o numerach

Wyróżniony element y – nazwisko osoby, której numeru szukamy

Wynik: Jeśli osoba y ma numer telefony w książce, to podaj na której stronie, a w przeciwnym razie – sygnalizuj brak danych o y

Poszukiwanie osoby o danym numerze telefonu

Dane: Książka telefoniczna.

Ciąg danych x1, x2, ..., xn – kartki książki z danymi o numerach

Wyróżniony element y – numer telefonu osoby, której szukamy

Wynik: Jeśli istnieje osoba z numerem telefonu y, to podaj jej nazwisko, a w przeciwnym razie – sygnalizuj brak takiej osoby

informatyka +

9

Książka telefon iczna uporządko wana alfabetyc znie nazwiskam i Książka telefon iczna nieuporzą dkowana alfabe tycznie numerami

(10)

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

begin i:=1;

while (x[i]<>y) and (i<n) do i:=i+1;

if x[i]=y then PrzeszukiwanieLiniowe:=i else PrzeszukiwanieLiniowe:=-1 end

informatyka +

10

Pewna niedogodność – sprawdzanie, czy koniec ciągu. Przykład: Dane: ciąg: 2, 5, 1, 4, 10, 7. y = 1 Wynik: i = 3

(11)

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 begin i:=1; x[n+1]:=y;

while x[i]<>y do i:=i+1;

if i<=n then PrzeszukiwanieLinioweWartownik:=i else PrzeszukiwanieLinioweWartownik:=-1

end

informatyka +

11

wstawiamy wartownika – pilnuje końca ciągu

xn+1

Nie ma sprawdzania, czy koniec ciągu

(12)

Poszukiwanie w zbiorze uporządkowanym

Zabawa w zgadywanie liczby

informatyka +

12

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:

5 po

rów

nań

zam

iast

20

!!!

(13)

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;

begin

Lewy:=k; Prawy:=l;

while Lewy<=Prawy do begin Srodek:=(Lewy+Prawy) div 2; if x[Srodek]=y then begin

PrzeszukiwanieBinarne:=Srodek; exit

end; {element y nalezy do przeszukiwanego ciagu} if x[Srodek]<y then Lewy:=Srodek+1

else Prawy:=Srodek-1 end; PrzeszukiwanieBinarne:=-1 end

informatyka +

13

Połowienie przedziału Początkowe końce przedziału

Zmiana końców przedziału

y nie należy do

przeszukiwanego przedziału

(14)

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 +

14

Umieszczanie przez połowienie

(15)

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 11

• liniowy 1200

informatyka +

15

Poszukiwanie przez połowienie

Złożoność (1)

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

(16)

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:

informatyka +

16

Poszukiwanie przez połowienie

złożoność (2)

n liczba porównań 100 7 1 000 10 10 000 14 100 000 17 1 000 000 20 10 000 000 24 ok.log2 n

Funkcja logarytm, bardzo ważna w algorytmice

logarytm

to anagram od

algorytm

Algorytm poszukiwania przez

połowienie jest optymalny,

czyli najszybciej przeszukuje

zbiory uporządkowane.

(17)

informatyka +

17

Poszukiwanie interpolacyjne

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;

begin

Lewy:=k; Prawy:=l;

while Lewy<=Prawy do begin Srodek:=(Lewy+Prawy) div 2; if x[Srodek]=y then begin

PrzeszukiwanieBinarne:=Srodek; exit

end; {element y nalezy do przeszukiwanego ciagu} if x[Srodek]<y then Lewy:=Srodek+1

else Prawy:=Srodek-1 end;

PrzeszukiwanieBinarne:=-1

end

Srodek = lewy +

(y – x[lewy])(prawy – lewy)/(x[prawy] – x[lewy])

Srodek = lewy + (prawy – lewy)/2

Przeciętny czas interpolacyjnego umieszczania wynosi ok. log log n

(18)

Suwaki logarytmiczne

informatyka +

18

Na wyposażeniu

każdego inżyniera

do 1972 roku

Skala 30 cm Skala 150 cm Skala 12 m 18

(19)

Znajdowanie elementu w zbiorze

Znajdź w zbiorze element o pewnych własnościach:

• 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): czy x < y ?

• dwóch zawodników: rozegranie meczu

(20)

Znajdowanie elementu w zbiorze

Czy zbiór zawiera y?

Dane:

Ciąg n liczb x

1

, x

2

, ..., x

n

Wyróżniony element y

Wynik:

Czy w ciągu jest

element y ?

Przeszukujemy ciąg aż

znajdziemy y, Przeglądamy

cały ciąg, by stwierdzić, że nie

zawiera y.

Uporządkowanie ciągu ułatwia.

informatyka +

20

Różnica między dwoma problemami:

Znajdź w zbiorze element o

pewnych własnościach

Dane:

Ciąg n liczb x

1

, x

2

, ..., x

n

Wynik:

Najmniejsza wśród liczb

x

1

, x

2

, ..., x

n

Trzeba przejrzeć cały ciąg.

Zakładamy, że ciąg nie jest

uporządkowany.

(21)

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), czyli przypisz min := x1.

Krok 2. Dla kolejnych elementów xi, gdzie i = 2, 3, ..., n,

jeśli min > xi, to przypisz min := xi.

Algorytm Max

– prosta modyfikacja: zamiana > na <

Wyznaczanie

imin

– indeksu elementu o wartości

min

informatyka +

21

imin := 1

(22)

Algorytm Min – demo

Demonstracja przeszukiwania od lewej do prawej:

(23)

(Zgrubny) schemat blokowy algorytmu Min

informatyka +

23

Instrukcja iteracyjna Instrukcje warunkowe: rozgałęzienia algorytmu

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.

Krok 1:

Krok 2:

min ← pierwszy element

ze zbioru A

Czy porównano wszystkie elementy ze zbioru A ? Nie min > x ? Tak x ← kolejny element ze zbioru A Tak min ← x Nie Koniec algorytmu

(24)

Pełny

schemat

blokowy

algorytmu

Min

informatyka +

24

(25)

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 +

25

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

(26)

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?

(27)

Wyłanianie najlepszego zawodnika w turnieju

czyli inny sposób znajdowania max (lub min)

informatyka +

27

Bartek Romek Bolek Witek Tome

k

Zenek Tolek Felek

Bartek Witek Tome

k Tolek

Bartek Tome

k Tome

k

Porównania – mecze Ośmiu zawodników: 7 meczy n zawodników: n – 1 meczy

a więc nie jest szybsza

Jednak jest szybciej. Gdy liczmy równolegle

(28)

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.

(29)

A jak znaleźć drugiego najlepszego

zawodnika w turnieju?

informatyka +

29

Bartek Romek Bolek Witek Tome

k

Zenek Tolek Felek

Bartek Witek Tome

k Tolek

Bartek Tome

k Tome

k

Czy jest nim Bartek?

Bo przegrał z Tomkiem?

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

???

???

Tylko dwa

(30)

3 1 2 2 5 3 4 8 2 5

Jednoczesne znajdowanie min i max

informatyka +

30

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

Kandydaci na min

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

Porównania parami 3 ↑ 3 ? 1 ↓ 1 2 ↑ 2 ? 2 ↓ 2 5 ↑ 5 ? 3 ↓ 3 8 ↑ 4 ? 8 ↓ 4 5 ↑ 2 ? 5 ↓ 2

(31)

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

(32)

Znajdowanie elementu w zbiorze

Podsumowanie

Czy zbiór zawiera y?

Dane:

Ciąg n liczb x

1

, x

2

, ..., x

n

Wyróżniony element y

Wynik:

Czy w ciągu jest

element y ?

Przeszukujemy ciąg aż

znajdziemy y, Przeglądamy

cały ciąg, by stwierdzić, że nie

zawiera y.

Uporządkowanie ciągu ułatwia.

informatyka +

32

Różnica między dwoma problemami:

Znajdź w zbiorze element o

pewnych własnościach

Dane:

Ciąg n liczb x

1

, x

2

, ..., x

n

Wynik:

Najmniejsza wśród liczb

x

1

, x

2

, ..., x

n

Trzeba przejrzeć cały ciąg.

Zakładamy, że ciąg nie jest

uporządkowany.

(33)

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

informatyka +

33

Żółte – podciąg już uporządkowany Zielone i czerwone – podciąg porządkowany

(34)

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

informatyka +

34

Podciąg już uporządkowany

(35)

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 = ?

informatyka +

35

5       4       3       2       1       Przykład n = 6 6 = n 5 = n – 1 Pole prostokąta: 5 x 6

Suma = pole czarnych diamentów: 5 x 6 2 Ogólnie suma: (n – 1) x n 2 Liczby trójkątne

(36)

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.

(37)

Sortowanie przez scalanie – scalanie

informatyka +

37

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

1 3 5 7 10 12 1 2 6 9 11 15 17 20 1 3 5 7 10 12 1 2 6 9 11 15 17 20 Scalane ciągi Scalanie 1 1 2 3 5 6 7 9 10 11 12 15 17 20 Scalony ciąg

(38)

Sortowanie przez scalanie – scalanie

informatyka +

38

Scalane ciągi

Scalone ciągi, w innym miejscu

(39)

informatyka +

39

Algorytm porządkowania przez scalanie MergeSort

(l,p,x)

Dane:

Ciąg liczb x

l

, x

l+1

, …, x

p

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. { s w połowie ciągu}

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 (x

l

, …, x

s

) i (x

s+1

, …, x

p

)

i wynik umieść w ciągu (x

l

, …, x

p

).

Rekurencyjne wywołania na podciągach

Sortowanie przez scalanie – opis

(40)

informatyka +

40

2 1 2 9 5 0 2 1 2 9 5 0 dziel dziel 2 1 dziel 9 0 1 2 9 5 1 2 2 0 5 9 0 1 2 2 5 9

Sortowanie przez scalanie

DEMO

dziel 2 1 2 scal scal scal scal scal 5 dziel 5 9

(41)

Sortowanie przez scalanie

DEMO

informatyka +

41

Scalane ciągi Wynik scalania dodatkowym miejscu Posortowana pierwsza połowa ciągu

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ą

(42)

Potęga algorytmu binarnego (dziel i zwyciężaj)

informatyka +

42

Kryptografia:

Szyfr RSA, jeden z najpopularniejszych obecnie, bazuje

na podnoszeniu do

dużej

potęgi

dużych

liczb, np.

12345678909876543212345678909876543211234567899876543211

234567890

123456789098765432112345678909876543211234567890987654321234567891012345678910123 45678910123456789123456789123456789123456789

Jak można szybko obliczać takie potęgi?

Odpowiedź:

Np., obliczenie x

12345678912345678912345678912345

wymaga:

•Ze

szkolnej definicji

: x

10

= x*x*x*x*x*x*x*x*x*x – 9 mnożeń, wtedy:

12345678912345678912345678912344/10

15

sek. =

4*10

8

lat

•Algorytm „binarny”

, np.:

x

10

= (x

5

)

2

, x

11

= (x

5

)

2

*x

Wykonuje dla x

12345678912345678912345678912345

ok. …

200 mnożeń < 1 sek.

Szybkość

(43)

Najlepszym sposobem przyspieszania komputerów

jest obarczanie ich mniejszą liczbą działań

(

szybszymi algorytmami

)

[Ralf Gomory, IBM]

43

43

(44)

Algorytm, algorytmika

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

(45)

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

)

(46)

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

(47)

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

(48)

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

(49)

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

(50)

Cytaty

Powiązane dokumenty

Podstawą procesu edukacyjnego jest komunikacja w relacji nauczyciel – – student i to ona będzie przedmiotem dalszych rozważań, uporządkowa- nych za pomocą metafory

„Must”, „mustn’t” oraz „can” to czasowniki modelne: maja taką samą formę dla wszystkich osób, nie przyjmują końcówek, a po nich czasownik jest w formie

„Córciu, nie mówi się waser tylko woda...” Dziecko przyzwyczaiło się do nowej matki.. Dostało nowe

The methodological approach of the analysis in terms of theory is based on general semiotic theory (Eco, Lotman), cultural semiotics (Barthes), literary theory and literary

Następnie przejdę do rzeczy natury, a wyłożywszy Wam przyczynę wszystkich jej zmian, różnorodność jej jakości oraz czym dusza roślin i zwierząt różni się od naszej,

Companies [need to] collaborate with academia and government to build up a large, sharable and reusable database of keen test panelists (by offering incentives whenever

Zamontuj centralę (za pomocą kołków rozporowych - nie dokręcaj ich, zanim nie ułożysz przewodów!). Pamiętaj o tym, że centrala musi być podłączona do sieci 230V, a

W pierwszym przypadku segment na podstawie czegoś kwalifikowałby się jako for- malny wykładnik jedynie części znaczenia predykatu (fragment innej, samodzielnej jednostki), a w