Title: Uvodno predavanje
1Uvodno predavanje
Apstraktno Razmišljanje o Algoritmima
- Znaci želite se baviti racunalima u životu?
- Idemo natrag u osnovnu školu Množenje dva broja
Predavanje 1
2Želite se baviti racunalima?
3Da li je vaš cilj da postanete obican
programer?
4Ili veliki voda i mislilac ?
5Originalno razmišljanje
6Šef daje zadatak
- Zadane su današnje cijene svinjetine, žita
- Zna se koliko cega ide u hotdog.
- Napravite najjeftiniji hotdog.
Industrija svakodnevno postavlja takva pitanja.
7Vaš odgovor može biti
- Hm? Recite mi što da isprogramiram.
Sa sve sofisticiranijim softwareskim
sistemima,potreba za obicnim programerima ce
nestajati.
8Vaš odgovor može biti i
- Naucio sam onaj super algoritam koji cu
- ovdje
primjeniti.
Uskoro cete sve poznate algoritme moci naci u
bibliotekama.
9Vaš odgovor može biti
- Mogu napraviti novi algoritam za vas.
Veliki mislioci ce se uvijek tražiti.
10Buducnost pripada racunalnom 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
brzomijenjajucem podrucju rada
11Sadržaj kolegija
- Popis algoritama.
- Naucite ih isprogramirati.
- Budite sigurni da rade.
- Primjenite ih.
class InsertionSortAlgorithm extends
SortAlgorithm void sort(int a) throws
Exception for (int i 1 i lt a.length i)
int j i int B ai while
((j gt 0) (aj-1 gt B))
aj aj-1
j-- aj B
12Sadržaj Kolegija
- Pregled tehnika stvaranja algoritama.
- Apstraktno razmišljanje.
- Kako razviti nove algoritme za bilo koji problem
koji može iskrsnuti.
13Otklanjanje Bug-ova
14Istraživanje
- Programerima je dan zadatak da naprave binarno
pretraživanje.
15Istraživanje
- Programerima je dan zadatak da naprave binarno
pretraživanje.
80 ih je napravilo krivo Sva sreca da nije bilo
za nuklearnu elektranu.
16Što im je nedostajalo?
17Što im je nedostajalo?
- Formalne metode dokazivanja?
18Što im je nedostajalo?
- Formalne metode dokazivanja ?
Da, vjerojatno ... Industrija pocinje shvacati da
su formalni dokazi potrebni. Ali i bez formalnih
metoda . ?
19Što im je nedostajalo?
- Fundamentalno razumijevanje tehnika stvaranja
algoritama. - Apstraktno razmišljanje.
20Sadržaj kolegija
- Notacije, analogije, i apstrakcije
- za razvijanje,
- razmišljanje o,
- i opisivanje algoritama
21Pitanja se smiju postavljati !
22Pregled fundamentalnih ideja i tehnika stvaranja
algoritama
Na primjer . . .
23Pocnimo s matematikom
24Iterativni algoritmi Invarijantne petlje
ltpreCondgt codeA loop
ltloop-invariantgt exit when ltexit Condgt
codeB codeC ltpostCondgt
Korak po korak
Code
Utrka
25Rekurzivni algoritmi
?
?
26 Greedy Algoritmi
27Dynamic Programing Algorithms
28Redukcija
29Korisne metode ucenja
30Read Ahead
- You are expected to read the lecture notes before
the lecture. - This will facilitate more productive discussion
during class.
31Objašnjavanje
- Morate znati objasniti stvar.
- Najbolje je da objašnjavate sebi i drugima
glasno, pa cak i svojem punjenom medvjedu.
32Razmišljajte (sanjarite)
Dok dan traje ...
- Fizika nije uvijek linearno
- razmišljanje.
- Dopustite da srž materijala ude u vašu
podsvijest. - Isprobajte ideje koje nastaju kao bljeskovi
inspiracije.
33Budite kreativni
- Pitajte pitanja.
- Zašto je to napravljeno na ovaj nacin ili drugi
?
34Pogadanja i protuprimjeri
- Pogadajte potencijalne algoritme za rješavanje
problema. - Tražite one primjere ulaznih podataka za koje
algoritam daje krive rezultate.
35Ponovno podešavanjeNajbolje rješenje dolazi kad
se proces podešavanja algoritma ponavlja
36Vratimo se u osnovnu školuKako cemo množiti dva
broja ?
Nekoliko primjera Algoritama
37Kompleksni brojevi
- Sjecate se kako se množe kompleksni brojevi?
- (abi)(cdi) ac bd ad bc i
- Input a,b,c,d Output ac-bd, adbc
- Ako množenje realnih brojeva košta 1 kn a
zbrajanje 1 lipu. Koji je najjeftiniji nacin da
se dobije izlaz (output) pomocu ulaza (inputa)? - Možete li izracunati za manje od 4.02 kn?
38Gaussova metoda za 3.05 kn Input a,b,c,d
Output ac-bd, bcad
- 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
39Pitanje
- Gausov hack štedi jedno od 4 množenja. Zahtjeva
25 manje posla. - Postoji li neki primjer gdje izvodenje 3 množenja
umjesto 4 daje dramaticne uštede?
40Odette
Bonzo
41Kako zbrojiti 2 n-bitna broja ?
42Kako zbrojiti 2 n-bitna broja ?
43Kako zbrojiti 2 n-bitna broja ?
44Kako zbrojiti 2 n-bitna broja ?
45Kako zbrojiti 2 n-bitna broja ?
46Kako zbrojiti 2 n-bitna broja ?
47Kompleksnost vremena obicnog zbrajanja
Na svakom racunalu zbrajanje 3 bita se može
napraviti u konacnom vremenu.
T(n) Vrijeme potrebno za zbrajanje 2 n-bitna
broja ?(n) linearno u vremenu.
48f ?(n) znaci da se f može staviti u sendvic
izmedu dvije linije
vr i j e m e
broj bitova u brojevima
49Pitajte pitanja!
- Rudich www.discretemath.com
50Možemo li zbrajati brže?
- PITANJE Postoji li algoritam koji zbraja dva
n-bitna broja cije vrijeme raste pod-linearno s n
?
51Svaki algoritam za zbrajanje mora procitati
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 znaci da mora biti pogrešan
jer se suma morala promijeniti.
52 Svaki algoritam za zbrajanje mora biti linearan
s obzirom na velicinu broja. Zbrajanje je
najbolji moguci algoritam (ne može biti
jednostavnije).
53Kako množiti 2 n-bitne brojeve.
X
54Aha! Ukupno vrijeme je ograniceno s cn2.
55Zbrajanje Linearno u vremenuMnoženje Kvadratno
u vremenu
time
of bits in numbers
- Bez obzira na razliku u konstantama kvadraticna
krivulja ce dominirati nad linearnom.
56Super! Pokazali smo da kad velicina brojeva raste
množenje ispada kompliciranije. Matematicki
dokaz uvriježenog mišljenja.
57Nemojte prerano zakljucivati!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.
58Zbrajanje ?(n) vrijemeMnoženje ?(n2) vrijeme
Postoji li pametan algoritam koji bi množio dva
broja linearno u vremenu?
59Usprkos godinama istraživanja nitko ga nije
pronašao! Ako riješte taj problem PMF ce vam dati
doktorat !
60KRAJ
61T(n)
n
T(n/2)
T(n/2)
62T(n)
n
63n
n/2 n/2 n/2
Level i is the sum of 3i copies of n/2i
. . . . . . . . . . . . . . . . . . . . . . . . . .
11111111111111111111111111111111111111111111
0
1
2
n/4 n/4 n/4 n/4 n/4 n/4 n/4 n/4
n/4
i
641n
3n/2
9n/4
3i n/2i
3lognn/2logn nlog31
Total ?(nlog3) ?(n1.58..)
65Dramatic improvement for large n
Not just a 25 savings! ?(n2) vs ?(n1.58..)
66Multiplication Algorithms
Kindergarten n2n
Grade School n2
Karatsuba n1.58
Fastest Known n logn loglogn
67Youre cool! Are you free sometime this weekend?
Not interested, Bonzo. I took the initiative and
asked out a guy in my 3101 class.
68End
- Restart Introduction
- Relevant Mathematics