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