31.12.2014 Views

Seminarski rad: UĊenje algoritama u Pythonu - phy.hr - Prijava

Seminarski rad: UĊenje algoritama u Pythonu - phy.hr - Prijava

Seminarski rad: UĊenje algoritama u Pythonu - phy.hr - Prijava

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Ako smo za provedbu ovog s t<strong>rad</strong>icionalnim jezikom kao što je C ili Java, trebali bismo<br />

naučiti kako definirati strukturu ili klasu s nazivom polja težina; list čvorova,<br />

potrebno karakter polje, dok unutarnji čvorovi zahtijevaju leftchild i rightchild polja. Budući da<br />

je prioritet red, mora biti u mogućnosti da ih usporedi, to će biti potrebno<br />

modificirati prioritet reda i pozvati odgovarajuću metodu usporedbe umjesto koristeći<br />

izgraĎen-u odnosu na operatora, i oba lišća i unutarnji čvorovi moraju biti ili u istoj klasi<br />

ili biti podrazred u istoj bazi klase koja implementira usporedna metoda.<br />

MeĎutim, ni postojeće ispravljanje pogrešaka nema znanja da može automatski ispisati<br />

čvorove zajedno kao stablo, i stoga je rutina pisati naredbu print, što zapravo može biti<br />

prilično lukav i biti još jedan veliki izvor bugova.<br />

Python implementacija može biti učinjeno elegantno, bez potrebe za pisanjem dodatne<br />

rutine ili definiranje nove klase ili strukture za stabla čvorova. Predstavljaje binarnih stabla u<br />

<strong>Pythonu</strong>, u duhu sličan Lisp:<br />

Leaf čvorovi su zastupljeni kao (frekvencija, karakter) torke:<br />

[(45, 'a'), (13, 'b'), (12, 'c'), (16, 'd'), (9, 'e'), (5,<br />

'f')].<br />

Unutarnji čvorovi su zastupljeni kao u nalog 3 torke: (frekvencija, lijevo, desno): Na<br />

primjer, u donjem desnom podstablu na slici 1 može se prikazati kao<br />

(14, (5, 'f'), (9, 'e'))<br />

koja predstavlja unutarnji čvor čija težina je 14%, čija je lijevo dijete (5, 'F'), te čije je<br />

pravo dijete (9, 'e').<br />

Stablo je konstruirano funkcionalno s torka stvaranje, bez potrebe da se koristi bilo koji<br />

čvor stabla strukture podataka, i nema potrebe da manipuliraju lijevo/desno. Štoviše, to<br />

je lako koristiti s postojećim prioritetnim redom strukture podataka, bez izmjena! To je zato<br />

što se<br />

torke može usporediti na leksikografski poredak koristeći istu<br />

usporedbu operatora. Na taj način, unutarnji čvorovi i lišće može biti u odnosu, iako<br />

oni kodiraju različite informacije. Razlika izmeĎu njih je da je len () = 2 za leaf (list), i = 3 za<br />

unutarnji čvor.<br />

5. Grafikon Algoritmi<br />

Graf ima više prikaza, a većina <strong>algoritama</strong> može pretpostaviti ili susjedstva liste ili matrice<br />

susjedstva<br />

reprezentacije.<br />

Za provedbu graf u t<strong>rad</strong>icionalnom sustavu programskog jezika kao što su C ili Java, prvo bi<br />

morao definirati strukture podataka za vrhove, za rubove, a za graf, koji služi kao front-end<br />

za stvaranje i brisanje svoje vrhove i rubove. Dizajn takvih podataka struktura lako može<br />

dominirati kodiranje vrijeme i nije lako za višekratnu upotrebu, uglavnom zato što ti tipovi<br />

podataka moraju biti projektirani kao „kontejneri“. Iako paketi poput LEDA [3] kako bi se<br />

poboljšao pokušaj ponovne upotrebe objektno orijentiranog izvorni kod u C++ predloške, oni<br />

i dalje zahtijevaju da učenici usvoje cijeli paket prije nego što mogu početi <strong>rad</strong>iti nešto<br />

korisno. Kontejneri su često dizajnirani za zaobilaženje problema s jakim, statički tipkanje, ali<br />

to zahtijeva reimplementaciju dinamičkog tipa provjere u kraj-korisnik kod. Čak i gori<br />

nedostatak da je uporaba C-pokazivača ili Java-reference čini neugodan da biste vidjeli ove<br />

predmete. Iako „debugger“ može prikazati te objekte u nekom tekstualnom obliku, to<br />

prikazuje previše informacija ili nije izravno od koristi u programu.<br />

Python nudi mnoge prednosti kao što je naglašeno od strane strukture grafa podataka. Mi<br />

7

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!