Presentation is loading. Please wait.

Presentation is loading. Please wait.

Apstraktno Razmišljanje o Algoritmima

Similar presentations


Presentation on theme: "Apstraktno Razmišljanje o Algoritmima"— Presentation transcript:

1 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

2 Želite se baviti računalima?

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

4 Ili veliki vođa i mislilac ?

5 Originalno razmišljanje

6 Industrija svakodnevno postavlja takva pitanja.
Š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.

7 Vaš odgovor može biti: Hm? Recite mi što da isprogramiram.
Sa sve sofisticiranijim softwareskim sistemima, potreba za običnim programerima će nestajati.

8 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.

9 Vaš odgovor može biti: Mogu napraviti novi algoritam za vas.
Veliki mislioci će se uvijek tražiti.

10 Budućnost pripada računalnom znalcu koji posjeduje
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

11 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; }}

12 Sadržaj Kolegija Pregled tehnika stvaranja algoritama.
Apstraktno razmišljanje. Kako razviti nove algoritme za bilo koji problem koji može iskrsnuti.

13 Otklanjanje Bug-ova

14 Istraživanje: Programerima je dan zadatak da naprave binarno pretraživanje.

15 Sva sreća da nije bilo za nuklearnu elektranu.
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.

16 Što im je nedostajalo?

17 Što im je nedostajalo? Formalne metode dokazivanja?

18 Industrija počinje shvaćati da su formalni dokazi potrebni.
Što im je nedostajalo? Formalne metode dokazivanja ? Da, vjerojatno ... Industrija počinje shvaćati da su formalni dokazi potrebni. Ali i bez formalnih metoda …. ?

19 Što im je nedostajalo? Fundamentalno razumijevanje tehnika stvaranja algoritama. Apstraktno razmišljanje.

20 Sadržaj kolegija Notacije, analogije, i apstrakcije za razvijanje,
razmišljanje o, i opisivanje algoritama

21 Pitanja se smiju postavljati !

22 Pregled fundamentalnih ideja i tehnika stvaranja algoritama
Na primjer . . .

23 Počnimo s matematikom Klasificirane Funkcije f(i) = nQ(n)
Veličina ulaza Vrijeme Klasificirane Funkcije f(i) = nQ(n) Kompleksnost vremena t(n) = Q(n2) Jednostavno zbrajanje ∑i=1 f(i). Rekurzivne Relacije T(n) = a T(n/b) + f(n)

24 Iterativni algoritmi Invarijantne petlje
<preCond> codeA loop <loop-invariant> exit when <exit Cond> codeB codeC <postCond> i-1 i T+1 9 km 5 km Korak po korak Code Utrka

25 Rekurzivni algoritmi ? ?

26 Redukcija =

27 Korisne metode učenja

28 Objašnjavanje Morate znati objasniti stvar.
Najbolje je da objašnjavate sebi i drugima glasno, pa čak i svojem punjenom medvjedu.

29 Razmišljajte (sanjarite)
Dok dan traje ... 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.

30 Pitajte pitanja. Zašto je to napravljeno na ovaj način ili drugi ?
Budite kreativni Pitajte pitanja. Zašto je to napravljeno na ovaj način ili drugi ?

31 Pogađanja i protuprimjeri
Pogađajte potencijalne algoritme za rješavanje problema. Tražite one primjere ulaznih podataka za koje algoritam daje krive rezultate.

32 Ponovno podešavanje: Najbolje rješenje dolazi kad se proces podešavanja algoritma ponavlja

33 Vratimo se u osnovnu školu: Kako ćemo množiti dva broja ?
Nekoliko primjera Algoritama Vratimo se u osnovnu školu: Kako ćemo množiti dva broja ? 2 X 2 = 5

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

35 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

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

37 Kako zbrojiti 2 n-bitna broja ?
* * * * * * * * * * * * * * * * * * * * * * +

38 Kako zbrojiti 2 n-bitna broja ?
* * * * * * * * * * * * * * * * * * * * * * * * +

39 Kako zbrojiti 2 n-bitna broja ?
* * * * * * * * * * * * * * * * * * * * * * * * * * +

40 Kako zbrojiti 2 n-bitna broja ?
* * * * * * * * * * * * * * * * * * * * * * * * * * * * +

41 Kako zbrojiti 2 n-bitna broja ?
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +

42 Kako zbrojiti 2 n-bitna broja ?
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +

43 Kompleksnost vremena običnog zbrajanja
* * * * * * + Na svakom računalu zbrajanje 3 bita se može napraviti u konačnom vremenu. T(n) = Vrijeme potrebno za zbrajanje 2 n-bitna broja = θ(n) = linearno u vremenu.

44 f = θ(n) znači da se f može staviti u sendvič između dvije linije
v r i j e m # broj bitova u brojevima

45 Rudich www.discretemath.com
Pitajte pitanja! Rudich

46 Možemo li zbrajati brže?
PITANJE: Postoji li algoritam koji zbraja dva n-bitna broja čije vrijeme raste pod-linearno s n ?

47 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.

48 Zbrajanje je najbolji mogući algoritam (ne može biti jednostavnije).
Svaki algoritam za zbrajanje mora biti linearan s obzirom na veličinu broja. Zbrajanje je najbolji mogući algoritam (ne može biti jednostavnije).

49 Kako množiti 2 n-bitne brojeve.
* * * * * * * * X * * * * * * * * * * * * * * * * n2 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

50 Aha! Ukupno vrijeme je ograničeno s cn2.

51 Zbrajanje: Linearno u vremenu Množenje: Kvadratno u vremenu
t ime # of bits in numbers Bez obzira na razliku u konstantama kvadratična krivulja će dominirati nad linearnom.

52 Super! Pokazali smo da kad veličina brojeva raste množenje ispada kompliciranije. Matematički dokaz uvriježenog mišljenja.

53 Nemojte prerano zaključivati
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.

54 Zbrajanje: θ(n) vrijeme Množenje: θ(n2) vrijeme
Postoji li pametan algoritam koji bi množio dva broja linearno u vremenu?

55 Usprkos godinama istraživanja nitko ga nije pronašao
Usprkos godinama istraživanja nitko ga nije pronašao! Ako riješte taj problem PMF će vam dati doktorat !

56 KRAJ

57 T(n) = n n/2 T(n/4) T(n/2) T(n/2)

58 T(n) = n n/2 T(n/4) n/2 T(n/4) n/2 T(n/4)

59 Level i is the sum of 3i copies of n/2i
n/ n/ n/2 Level i is the sum of 3i copies of n/2i 1 2 n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4 i

60 Total: θ(nlog3) = θ(n1.58..) =1×n = 3×n/2 = 9×n/4 = 3i ×n/2i
= 3logn×n/2logn =nlog3×1 Total: θ(nlog3) = θ(n1.58..)

61 Dramatic improvement for large n
Not just a 25% savings! θ(n2) vs θ(n1.58..)

62 Multiplication Algorithms
Kindergarten n2n Grade School n2 Karatsuba n1.58… Fastest Known n logn loglogn

63 You’re cool! Are you free sometime this weekend?
Not interested, Bonzo. I took the initiative and asked out a guy in my class.

64 Restart Introduction Relevant Mathematics
End Restart Introduction Relevant Mathematics


Download ppt "Apstraktno Razmišljanje o Algoritmima"

Similar presentations


Ads by Google