130 likes | 370 Views
Učenje algoritama u Pythonu (Seminarski rad). Željko Čejvanović Prof. Fizike i Tehnike 3. g odina 03.05.2011. Sažetak. Dizajn i analiza algoritama su temeljne teme... Mnogi tečajevi algoritama uključuju programske zadatke... Python predstavlja algoritam-orijentirani jezik ...
E N D
Učenje algoritama u Pythonu(Seminarski rad) Željko Čejvanović Prof. Fizike i Tehnike 3. godina 03.05.2011.
Sažetak • Dizajn i analiza algoritama su temeljne teme... • Mnogi tečajevi algoritama uključuju programske zadatke... • Python predstavlja algoritam-orijentirani jezik ... • Prednosti Pythona su njegovi udžbenici... • Python se može koristiti za...
1. Uvod • Algoritmi su najvažniji alati za svakoga tko mora riješiti probleme pisanja računalnih programa • Programiranje vs Algoritam Design (dizajn algoritama) • Python Edge (rub)
2. Uvodna lekcija: Sortiranje • Većina udžbenika poćinje sa sortiranjem kao način da uvedu algoritme i složene analize • Naša strategija je da prikažemo algoritme rame uz rame s Python kodom...
3. HeapSort (gomila) poredaj i prioritet redovi • Heap je struktura podataka koja predstavlja gotovo uravnoteženo binarno stablo koristeći niz... • Gomila i prioritet redovi su usko povezani, jer gomila može implementirati prioritetne redove učinkovito sa O(lg n)-vrijeme umetanja i vađenja. Jedna od razlika je, međutim, dinamička memorija upravljanja: u gomilu vrsta, veličina polja ostaje ista, dok u prioritet redovima veličina reda raste i smanjuje...
4. Binarna stabla i Huffman kodiranje • Huffman algoritam proizvodi prefiks-free, promjenjive duljine kodne riječi na temelju frekvencije svakog lika • Pohlepni algoritam koristi prioritet red za izdvajanje dva čvora... • Algoritam završava kad prioritet red uklanja zadnji čvor, koji postaje korijen stabla Huffman • Huffman algoritam konstruira stablo uspoređujući dva elementa s najmanje frekvencije...
4. Binarna stabla i Huffman kodiranje Slika 1 Primjer Huffman stabla
5. Grafikon Algoritmi • Graf ima više prikaza, a većina algoritama može pretpostaviti ili susjedstva liste ili matrice susjedstva reprezentacije... H = {'A': ['C', 'D'], 'B': ['D', 'A'], 'C': ['D', 'E'], 'D': ['E'], 'E': [] } L = {'A': {'C':2, 'D':6}, 'B': {'D':8, 'A':3}, 'C': {'D':7, 'E':5}, 'D': {'E':-2}, 'E': {}} Sl.2: Primjer usmjereni graf
6. Zaključak i zašto je Python pogodan za učenje izrade algoritama?! • Kao algoritam orijentirani jezik, Python omogućava učenje ključnih koncepata u dizajnu algoritama, umjesto da se bori s nama sa osebujnim obilježjima koje imaju konvencionalni programski jezici... • Sve u svemu, mislim da je Python jako dobar program za izradu algoritama...