64
Uvodno predavanje Mirko Planinić PMF Predavanje 1 Predavanje 1 •Znači želite se baviti računalima u životu? •Idemo natrag u osnovnu školu: Množenje dva broja

Uvodno predavanje

Embed Size (px)

DESCRIPTION

Apstraktno Razmišljanje o Algoritmima. Uvodno predavanje. Znači želite se baviti računalima u životu ? Idemo natrag u osnovnu školu : Množenje dva broja. Mirko Planini ć PMF. Predavanje 1. Želite se baviti računalima ?. Da li je vaš cilj da postanete običan programer?. - PowerPoint PPT Presentation

Citation preview

Page 1: Uvodno predavanje

Uvodno predavanje

Mirko Planinić

PMF

Predavanje 1Predavanje 1

•Znači želite se baviti računalima u životu?

•Idemo natrag u osnovnu školu: Množenje dva broja

Page 2: Uvodno predavanje

Želite se baviti računalima?

Page 3: Uvodno predavanje

Da li je vaš cilj da postanete običan programer?

Page 4: Uvodno predavanje

Ili veliki vođa i mislilac ?

Page 5: Uvodno predavanje

Originalno razmišljanje

Page 6: Uvodno predavanje

Šef daje zadatak:

– Zadane su današnje cijene svinjetine, žita …– Zna se koliko čega ide u hotdog.– Napravite najjeftiniji hotdog.

Industrija svakodnevno postavlja takva pitanja.

Page 7: Uvodno predavanje

• Hm? Recite mi što da isprogramiram.

Sa sve sofisticiranijim softwareskim sistemima,potreba za običnim programerima će nestajati.

Vaš odgovor može biti:

Page 8: Uvodno predavanje

Vaš odgovor može biti i:

• Naučio sam onaj super algoritam koji ću

ovdje primjeniti.

Uskoro ćete sve poznate algoritme

moći naći u bibliotekama.

Page 9: Uvodno predavanje

Vaš odgovor može biti:

• Mogu napraviti novi algoritam za vas.

Veliki mislioci će se

uvijek tražiti.

Page 10: Uvodno predavanje

– Sadržaj: Najnoviji popis problema i rješenja– Metodu: Principe i tehnike za rješavanje

velikog skupa nepoznatih problema koji se pojavljuju u brzomijenjajućem području rada

Budućnost pripada računalnom znalcu koji posjeduje

Page 11: Uvodno predavanje

Sadržaj kolegija

• Popis algoritama. – Naučite ih isprogramirati.– Budite sigurni da rade.– Primjenite ih. class InsertionSortAlgorithm extends SortAlgorithm

{

void sort(int a[]) throws Exception {

for (int i = 1; i < a.length; i++) {

int j = i;

int B = a[i];

while ((j > 0) && (a[j-1] > B)) {

a[j] = a[j-1];

j--; }

a[j] = B;

}}

Page 12: Uvodno predavanje

Sadržaj Kolegija• Pregled tehnika stvaranja algoritama.• Apstraktno razmišljanje.• Kako razviti nove algoritme za bilo koji

problem koji može iskrsnuti.

Page 13: Uvodno predavanje

Otklanjanje Bug-ova

Page 14: Uvodno predavanje

Istraživanje:

• Programerima je dan zadatak da naprave binarno pretraživanje.

Page 15: Uvodno predavanje

Istraživanje:

• Programerima je dan zadatak da naprave binarno pretraživanje.

80% ih je napravilo krivo

Sva sreća da nije bilo za nuklearnu elektranu.

Page 16: Uvodno predavanje

Što im je nedostajalo?

Page 17: Uvodno predavanje

Što im je nedostajalo?

• Formalne metode dokazivanja?

Page 18: Uvodno predavanje

Što im je nedostajalo?

• Formalne metode dokazivanja ?

Da, vjerojatno ...

Industrija počinje shvaćati da su formalni dokazi

potrebni.

Ali i bez formalnih

metoda …. ?

Page 19: Uvodno predavanje

Što im je nedostajalo?• Fundamentalno razumijevanje tehnika

stvaranja algoritama.

• Apstraktno razmišljanje.

Page 20: Uvodno predavanje

Sadržaj kolegija

Notacije, analogije, i apstrakcije

za razvijanje,

razmišljanje o,

i opisivanje algoritama

Page 21: Uvodno predavanje

Pitanja se smiju postavljati !

Page 22: Uvodno predavanje

Pregled fundamentalnih ideja i tehnika stvaranja

algoritama

Na primjer . . .

Page 23: Uvodno predavanje

Počnimo s matematikom

Veličina ulaza

Vri

jem

eKlasificirane Funkcije

f(i) = n(n)

Rekurzivne Relacije

T(n) = a T(n/b) + f(n)

Jednostavno zbrajanje∑i=1 f(i).

Kompleksnost vremenat(n) = (n2)

Page 24: Uvodno predavanje

Iterativni algoritmi Invarijantne petlje

i-1 i

ii0

T+1<preCond> codeA loop <loop-invariant> exit when <exit Cond> codeBcodeC<postCond>

9 km

5 km

Code UtrkaKorak po

korak

Page 25: Uvodno predavanje

Rekurzivni algoritmi

?

?

Page 26: Uvodno predavanje

Redukcija

=

Page 27: Uvodno predavanje

Korisne metode učenja

Page 28: Uvodno predavanje

Objašnjavanje

• Morate znati objasniti stvar.

• Najbolje je da objašnjavate sebi i drugima glasno, pa čak i svojem punjenom medvjedu.

Page 29: Uvodno predavanje

Razmišljajte (sanjarite)

Fizika nije uvijek linearno

razmišljanje.

Dopustite da srž materijala uđe u vašu

podsvijest.

Isprobajte ideje koje nastaju kao bljeskovi

inspiracije.

Dok dan traje ...

Page 30: Uvodno predavanje

Budite kreativni

•Pitajte pitanja.

• Zašto je to napravljeno na ovaj način ili drugi ?

Page 31: Uvodno predavanje

Pogađanja i protuprimjeri

• Pogađajte potencijalne algoritme za rješavanje problema.

• Tražite one primjere ulaznih podataka za koje algoritam daje krive rezultate.

Page 32: Uvodno predavanje

Ponovno podešavanje:Najbolje rješenje dolazi kad se proces

podešavanja algoritma ponavlja

Page 33: Uvodno predavanje

Vratimo se u osnovnu školu:

Kako ćemo množiti dva broja ?2 X 2 =

5

Nekoliko primjera Nekoliko primjera AlgoritamaAlgoritama

Page 34: Uvodno predavanje

Kompleksni brojevi•Sjećate se kako se množe kompleksni brojevi?

•(a+bi)(c+di) = [ac –bd] + [ad + bc] i

•Input: a,b,c,d Output: ac-bd, ad+bc

•Ako množenje realnih brojeva košta 1 kn a zbrajanje 1 lipu. Koji je najjeftiniji način da se dobije izlaz (output) pomoću ulaza (inputa)?

•Možete li izračunati za manje od 4.02 kn?

Page 35: Uvodno predavanje

Gaussova metoda za 3.05 kn :Input: a,b,c,d Output: ac-bd, bc+ad

• X1 = a + b• X2 = c + d• X3 = X1 X2 = ac + ad + bc + bd• X4 = ac• X5 = bd• X6 = X4 – X5 = ac-bd• X7 = X3 – X4 – X5 = bc + ad

Page 36: Uvodno predavanje

Pitanje:•Gausov “hack” štedi jedno od 4 množenja. Zahtjeva 25% manje posla.

•Postoji li neki primjer gdje izvođenje 3 množenja umjesto 4 daje dramatične uštede?

Page 37: Uvodno predavanje

Kako zbrojiti 2 n-bitna broja ? **

**

**

**

**

**

**

**

**

**

**

+

Page 38: Uvodno predavanje

Kako zbrojiti 2 n-bitna broja ? **

*

**

**

**

**

**

* **

**

**

**

**

+

Page 39: Uvodno predavanje

Kako zbrojiti 2 n-bitna broja ? **

*

**

**

**

**

* **

* **

*

**

**

**

**

+

Page 40: Uvodno predavanje

Kako zbrojiti 2 n-bitna broja ? **

*

**

**

**

* **

* **

*

* **

*

**

**

**

**

+

Page 41: Uvodno predavanje

Kako zbrojiti 2 n-bitna broja ? **

*

**

**

* **

* **

*

* **

*

* **

*

**

**

**

**

+

Page 42: Uvodno predavanje

Kako zbrojiti 2 n-bitna broja ? **

*

* **

*

* **

*

* **

*

* **

*

* **

*

* **

*

* **

*

* **

*

* **

*

***

*

+*

*

Page 43: Uvodno predavanje

Kompleksnost vremena običnog zbrajanja

**

*

*

**

*

*

**

*

*

**

*

*

**

*

*

**

*

*

**

*

*

**

*

*

**

*

*

**

*

+*

*

*

**

*

T(n) = Vrijeme potrebno za zbrajanje 2 n-bitna broja

= θ(n) = linearno u vremenu.

Na svakom računalu zbrajanje 3 bita se može napraviti u konačnom vremenu.

Page 44: Uvodno predavanje

# broj bitova u brojevima

vr

i

j

e

m

e

f = θ(n) znači da se f može staviti u sendvič između dvije linije

Page 45: Uvodno predavanje

Pitajte pitanja!

Rudich www.discretemath.com

Page 46: Uvodno predavanje

Možemo li zbrajati brže?

• PITANJE: Postoji li algoritam koji zbraja dva n-bitna broja čije vrijeme raste pod-linearno s n ?

Page 47: Uvodno predavanje

Svaki algoritam za zbrajanje mora pročitati ulazne bitove

– Pretpostavite da postoji misteriozni algoritam koji ne ispituje ulazne bitove

– Dajte algoritmu par ulaznih brojeva. Mora postojati neka bit lokacija i koju ne moramo ispitivati

– Ako algoritam ne radi na paru brojeva našli smo Bug

– Ako je algoritam ispravan, promijenite bit na položaju i i dajte mu novi par brojeva. Daje isti odgovor kao i prije znači da mora biti pogrešan jer se suma morala promijeniti.

Page 48: Uvodno predavanje

Svaki algoritam za zbrajanje mora biti linearan s obzirom na

veličinu broja.

Zbrajanje je najbolji mogući algoritam

(ne može biti jednostavnije).

Page 49: Uvodno predavanje

Kako množiti 2 n-bitne brojeve.

X* * * * * * * *

* * * * * * * *

* * * * * * * * * * * * * * *

* * * * * * * * * * * * * * * *

* * * * * * * * * * * * * * * *

* * * * * * * * * * * * * * * *

* * * * * * * * * * * * * * * * *

n2

Page 50: Uvodno predavanje

Kako množitiKako množiti 2 n2 n--bitbitnana broja?broja?

X* * * * * * * * * * * * * * * *

* * * * * * * ** * * * * * * *

* * * * * * * ** * * * * * * *

* * * * * * * ** * * * * * * *

* * * * * * * ** * * * * * * *

* * * * * * * * * * * * * * * *

n2

Aha! Ukupno vrijeme je

ograničeno s cn2.

Page 51: Uvodno predavanje

Zbrajanje: Linearno u vremenuMnoženje: Kvadratno u vremenu

•Bez obzira na razliku u konstantama kvadratična krivulja će dominirati nad linearnom.

# of bits in numbers

time

Page 52: Uvodno predavanje

Super! Pokazali smo da kad veličina brojeva raste množenje

ispada kompliciranije.

Matematički dokaz uvriježenog mišljenja.

Page 53: Uvodno predavanje

Nemojte prerano zaključivati!Pokazali smo samo da množenje

troši više vremena nego zbrajanje.

Da bismo dokazali da je množenje teži problem od zbrajanja trebali

bismo pokazati da niti jedan algoritam za množenje ne radi

linearno u vremenu.

Page 54: Uvodno predavanje

Zbrajanje: θ(n) vrijemeMnoženje: θ(n2) vrijeme

Postoji li pametan algoritam koji bi množio

dva broja linearno u vremenu?

Page 55: Uvodno predavanje

Usprkos godinama istraživanja nitko ga nije pronašao! Ako riješte

taj problem PMF će vam dati doktorat !

Page 56: Uvodno predavanje

KRAJ

Page 57: Uvodno predavanje

n

T(n/2) T(n/2)

T(n) =

n/2

T(n/4)T(n/4)T(n/4)

Page 58: Uvodno predavanje

nT(n) =

n/2

T(n/4)T(n/4)T(n/4)

n/2

T(n/4)T(n/4)T(n/4)

n/2

T(n/4)T(n/4)T(n/4)

Page 59: Uvodno predavanje

n

n/2 + n/2 + n/2

Level i is the sum of 3i copies of n/2i

. . . . . . . . . . . . . . . . . . . . . . . . . .

1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1

n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4

0

1

2

i

log n2

Page 60: Uvodno predavanje

=1n

= 3n/2

= 9n/4

= 3i n/2i

Total: θ(nlog3) = θ(n1.58..)

Level i is the sum of 3 i copies of n/ 2 i

1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1

. . . . . . . . . . . . . . . . . . . . . . . . . .

n/ 2 + n/ 2 + n/ 2

n

n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4

0

1

2

i

lo g n2 = 3lognn/2logn

=nlog31

Page 61: Uvodno predavanje

Dramatic improvement for large n

Not just a 25% savings!

θ(n2) vs θ(n1.58..)

Page 62: Uvodno predavanje

Multiplication Algorithms

Kindergarten n2n

Grade School n2

Karatsuba n1.58…

Fastest Known n logn loglogn

Page 63: Uvodno predavanje

You’re cool! Are you free sometime this weekend?

Not interested, Bonzo. I took the initiative and asked out a guy in my

3101 class.

Page 64: Uvodno predavanje

End

Restart Introduction

Relevant Mathematics