Algoritmi
Uvod
urediOva knjiga ima za cilj prihvatljiv uvod u projektovanje i analizu efikasnih algoritama. Kroz knjigu ćemo predstaviti samo najosnovnije tehnike i opisati rigorozne matematičke metode koje su potrebne za analizu tih tehnika. Teme koje su obrađene uključuju:
- Tehniku "podeli, pa vladaj"
- Upotreba randomizacije u algoritmima
- Opšta, ali neefikasna "bektreking" tehnika
- Dinamičko programiranje kao efikasna optimizacija za neke "bektreking" algoritme
- "Pohlepni" algoritmi kao oprimizacija drugih vrsti "bektreking" algoritama
- Tehnike pretraživanja usponom, uključujući protok mreže.
Svrha knjige je da vam pokaže kako možete metodično primeniti različite tehnike za svoje algoritme da bi algoritmi postali efikasniji. Dok knjiga većinom ima akcenat na opšte tehnike, neki poznati algoritmi su takođe detaljno istraženi. Ova knjiga je napisana kako biste mogli od "korice do korice" da je pročitate tokom jednog semestra, pri čemu delovi koji su označeni sa *
se mogu preskočiti.
Ova knjiga nije vodič kroz tehnike, niti je preporuka. Toplo preporučujemo tomove Knuta i [CLRS]. Osim toga, ponekad najbolje uvidi dolaze iz samih primarnih izvora (na primer [Hoare]).
Tabela poglavlja
uredi
|
Zašto Vikiknjiga o algoritmima?
urediVikiknjige su poduhvat sličan projektu otvorenog softvera: Obveznik doprinosa stvara sadržaj za projekat da pomogne drugima, za lično bogaćenje, ili kako bi postigli nešto za sopstveni rad (na primer, pripreme za predavanje).
Otvorena knjiga, isto kao i otvoreni program, zahteva vreme da se završi, ali mogu imati velike koristi čak i od skromnih doprinosa čitalaca. Na primer, možete popraviti takozvane "bagove" u tekstu (gde "bag" može biti tipografski, estetski, tehnički ili nekog drugog tipa) kako bi knjiga bila što bolja. Ako pronađete priliku da popravite "bag", jednostavno pritisnete dugme "Uredi", napravite promene i potom pritisnete dugme "Sačuvaj izmene". Ostali saradnici mogu pregledati izmene da bi bili sigurni da su prikladne za knjigu. Ako niste sigurni, možete da posetite stranicu za razgovor i tamo pitati. Koristite zdrav razum.
Ukoliko želite više da doprinesete, možete pogledati poglavlja koja su previše kratka ili je potrebno više rada na njemu i počnete pisati! Budite sigurni da pregledate ostatak knjige kako ne bi došlo do dupliranja sadržaja. Osim toga, trebalo bi da pročitate uputstvo za saradnike za dosledne savete.
Imajte na umu da ne morate da doprinesete sve odjednom. Možete obeležiti sekcije "TODO", sa opisom šta ostaje da se uradi, ili će možda neko drugi to da završi umesto vas. Onda kada su sve "TODO" stavke gotove, dostići ćemo naše prvo izdanje!
Ova knjiga namerno drži usko-u-fokusu, kako bi doprinos bio lakši (jer tada je krajnji cilj je jasniji). Ova knjiga je drugi deo serije od tri knjige iz oblasti račuarskih nauka o algoritmima, počevši od Struktura Podataka i završno sa Naprednim Strukturama Podataka i Algoritmima. Ukoliko želite da doprinesete tako što biste dodali neku temu koja se ne nalazi već u listi ni u jednoj od tri knjiga, probajte da u Naprednu knjigu, što je više električno u prirodi.
Osim toga, implementacija algoritama kao dodatak je uvek dobrodošla.
Dodatna literatura
urediSledeća lista knjiga Algoritama je kao preduslov:
Izvori
urediSledeći izvori su korišćeni uz dozvolu od originalnih autora. Neki od izvora su uređeni (ponekad poprilično) od početne verzije i tako su sve greške naše.
[Impagliazzo] | Rasel Impagliaco. Beleške sa predavanja sa kurseva o algoritmima 101 (Spring 2004; osnovne studije), and 202 (Spring 2004, Fall 2004; graduate). Kalifornijski Univerzitet, San Dijego. Korišćena skoro svuda. |
[Lippert] | Erik Lipert. "Rekurzija i Dinamičko Programiranje," iz Sjajnih avantura u kodiranju. 21 Juli 2004. Korišćeno uz dozvolu. https://blogs.msdn.microsoft.com/ericlippert/2004/07/21/recursion-and-dynamic-programming/ Korišćeno u poglavljima: "bektreking" i "dinamičko programiranje". |
[Vikipedija] | Vikipedija https://sr.wikipedia.org/wiki/%D0%93%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B0, slobodna enciklopedija. Citati / odgovarajuće prodorno. |
Reference
urediAutori toplo preporučuju sledeće materijale:
[Aho] | Alfred V. Aho, Džefri D. Ulman, Džon E. Hopkroft. Strukture Podataka i Algoritmi. Addison-Wesley, 1983. |
[CLRS] | Tomac H. Kormen, Čarls E. Leiseron, Ronald L. Rivest, Kliford Stajn. Uvod u Algoritme. McGraw-Hill, 2001. |
[Hoare] | C. A. R. Hoare. "Algoritam 63: Podela", "Algoritam 64: Quicksort", "Algoritam 65: Pronaći", od Komunikacije od ACM. Obim 4, Problem 7 (Juli 1961). Strana 321. ISSN:0001-0782. http://doi.acm.org/10.1145/366622.366642. |
[Knuth] | Donald E. Knut. Umetnost programiranja, Obimi 1-3. Addison-Wesley Professional, 1998. |
Saradnici
urediMajkl Šonle: "Veliki deo moje saradnje dolazi od Implagiazovih lekcija u UCSD. Volim ovaj projekat, jer mi daje šansu da objasnim algoritme na način na koji sam ih konačno razumeo. "
Metju Vilson: "Otkucao sam otlajn nakon što sam diplomirao kurs o algoritmima. M. Šonle je od ove knjige zaista napravio nešto što je sjajno. "
Martin Krisčik: "Ja sam isporučio Ada primere za algoritme. Nikad ne znate da li vam algoritam radi, dok ga ne implementirate. "
Spoljašnje veze
uredihttp://www.cs.berkeley.edu/~vazirani/algorithms/all.pdf
http://videolectures.net/mit6046jf05_introduction_algorithms/