1 / 64

Uvodno predavanje

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

Download Presentation

Uvodno predavanje

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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 postaneteobičan programer?

  4. Ili veliki vođa i mislilac ?

  5. Originalnorazmišljanje

  6. Š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 pripadaračunalnom znalcukoji 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žajKolegija • 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. 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. Š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? • Fundamentalnorazumijevanjetehnika stvaranja algoritama. • Apstraktno razmišljanje.

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

  21. Pitanja se smiju postavljati !

  22. Pregled fundamentalnih idejai tehnika stvaranja algoritama Na primjer . . .

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

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

  25. Rekurzivnialgoritmi ? ?

  26. Redukcija =

  27. Korisne metode učenja

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

  29. Dok dan traje ... Razmišljajte (sanjarite) Fizika nije uvijek linearno razmišljanje. Dopustite da sržmaterijalauđe u vašu podsvijest. Isprobajte ideje koje nastaju kao bljeskovi inspiracije.

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

  31. Pogađanjaiprotuprimjeri • 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 dolazikad se procespodešavanja algoritma ponavlja

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

  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 kna 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” štedijedno 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-bitnabroja ? ** ** ** ** ** ** ** ** ** ** ** +

  38. Kako zbrojiti 2 n-bitnabroja ? ** ** ** ** ** ** ** ** ** * ** ** * +

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

  40. Kako zbrojiti 2 n-bitnabroja ? ** ** ** ** ** ** ** * ** * ** * * ** * ** * +

  41. Kako zbrojiti 2 n-bitnabroja ? ** ** ** ** ** ** * ** * ** * * ** * * ** * ** * +

  42. Kako zbrojiti 2 n-bitnabroja ? * * * ** * * ** * * ** * * ** * * ** * *** * * ** * * ** * * ** * * ** * ** * +

  43. * * * ** * * ** * * ** * * ** * * ** * * ** * * ** * * ** * * ** * * ** * ** * + Kompleksnostvremena 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-bitnabroja = θ(n) = linearno u vremenu.

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

  45. Pitajte pitanja! • Rudich www.discretemath.com

  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. 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. n2 Kako množiti 2 n-bitnebrojeve. * * * * * * * * X * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  50. Aha! Ukupno vrijeme jeograničeno s cn2.

More Related