teorija algoritama i sustava-uvod

14
TEORIJA ALGORITAMA I SUSTAVA Predavanja: dr. sc. Miroslav Slamić, prof. v. šk. Vježbe: Nikola Majstorović, dipl. ing. Specijalistički studij - Informatika Sadržaj predmeta Pojam tipa, apstraktnog tipa i strukture podataka (2). Elementi od kojih se gradi struktura: polje, zapis, pointer, kursor (2). Jednostavne i složene strukture podataka, statičke i dinamičke strukture podataka. (4). Pojam algoritma, zapisivanje i analiziranje algoritama (2). Lista: jednostruko povezane, dvostruko povezane, prstenovi (2). Red, stog (stack), uređeno i binarno stablo, skup, rječnik, prioritetni red, preslikavanje (4). Vezana lista i druge vezane strukture, hash tablica, binarno stablo traženja, gomila (heap) (4). Datoteke: slijedne, direktne, indeks-sekvencijalne, indeks- nesekvencijalne (2). Složenost i ocjena složenosti algoritama (2)..Algoritmi za obavljanje osnovnih operacija nad strukturama: ubacivanje i izbacivanje podataka, traženje, ispis sadržaja i sl. (4). Primjena opisanih struktura u složenijim algoritmima: sortiranje i sažimanje nizova podataka, izvrednjavanje aritmetičkih izraza, razni rekurzivni postupci (4). Općenite tehnike za konstrukciju algoritama: "Podijeli pa vladaj", dinamičko programiranje, "pohlepni" pristup, "backtracking", lokalno pretraživanje (4). Praktični rad: realizacija karakterističnih struktura i algoritama u programskom jeziku C (12). Modeliranje dinamičkih sustava (2). Deterministički sustavi i problem najkraće petlje (2). Determinističko kontinuirano optimalno upravljanje (2). Problemi sa savršenim i nesavršenim informacijama stanja (2). Postupci traženja minimuma (2). Podoptimalni i adaptivni sustavi (2). LITERATURA 1. D.P. Bertsekas: Dynamic Programming and Optimal Control, Vol. I, Athena Scientific, 2000. 2. R. Manger, M. Marušić: Strukture podataka i algoritmi, skripta, 2. izdanje, PMF-MO, Zagreb, 2003. (URL: http://www.math.hr/nastava/spa/files/skripta.pdf ) DODATNA 3. T. Cormen,C. E. Leiserson, R. L. Rivest: Introduction to algorithms, 2nd edition, MIT Press, 2001. 4. B. Souček: Mikroprocesori i mikroračunala, Tehnička knjiga, Zagreb, 1978. 5. E. Horowitz, S. Sahni, S. Rajasekaran: Computer Algorithms / C++, Computer Science Press, New York, 1997.

Upload: nermin-mirsada-djezic

Post on 22-Oct-2015

37 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Teorija Algoritama i Sustava-uvod

TEORIJA ALGORITAMA I SUSTAVA

Predavanja: dr. sc. Miroslav Slamić, prof. v. šk.Vježbe: Nikola Majstorović, dipl. ing.

Specijalistički studij - Informatika

Sadržaj predmeta• Pojam tipa, apstraktnog tipa i strukture podataka (2). Elementi od kojih se gradi

struktura: polje, zapis, pointer, kursor (2). Jednostavne i složene strukture podataka, statičke i dinamičke strukture podataka. (4). Pojam algoritma, zapisivanje i analiziranje algoritama (2). Lista: jednostruko povezane, dvostruko povezane, prstenovi (2). Red, stog (stack), uređeno i binarno stablo, skup, rječnik, prioritetni red, preslikavanje (4). Vezana lista i druge vezane strukture, hash tablica, binarno stablo traženja, gomila (heap) (4). Datoteke: slijedne, direktne, indeks-sekvencijalne, indeks-nesekvencijalne (2). Složenost i ocjena složenosti algoritama (2)..Algoritmi za obavljanje osnovnih operacija nad strukturama: ubacivanje i izbacivanje podataka, traženje, ispis sadržaja i sl. (4). Primjena opisanih struktura u složenijim algoritmima: sortiranje i sažimanje nizova podataka, izvrednjavanje aritmetičkih izraza, razni rekurzivni postupci (4). Općenite tehnike za konstrukciju algoritama: "Podijeli pa vladaj", dinamičko programiranje, "pohlepni" pristup, "backtracking", lokalno pretraživanje (4). Praktični rad: realizacija karakterističnih struktura i algoritama u programskom jeziku C (12). Modeliranje dinamičkih sustava (2). Deterministički sustavi i problem najkraće petlje (2). Determinističko kontinuirano optimalno upravljanje (2). Problemi sa savršenim i nesavršenim informacijama stanja (2). Postupci traženja minimuma (2). Podoptimalni i adaptivni sustavi (2).

LITERATURA• 1. D.P. Bertsekas: Dynamic Programming and Optimal

Control, Vol. I, Athena Scientific, 2000.• 2. R. Manger, M. Marušić: Strukture podataka i algoritmi,

skripta, 2. izdanje, PMF-MO, Zagreb, 2003. (URL: http://www.math.hr/nastava/spa/files/skripta.pdf)

• DODATNA• 3. T. Cormen,C. E. Leiserson, R. L. Rivest: Introduction to

algorithms, 2nd edition, MIT Press, 2001.• 4. B. Souček: Mikroprocesori i mikroračunala, Tehnička knjiga,

Zagreb, 1978.• 5. E. Horowitz, S. Sahni, S. Rajasekaran: Computer Algorithms /

C++, Computer Science Press, New York, 1997.

Page 2: Teorija Algoritama i Sustava-uvod

Literatura– Slajdovi s predavanja – Weiss: Data Structures and Algorithm Analysis in

C, Addison Wesley, 1997– Sedgwick: Algorithms in C…, Addison-Wesley,

2001

• Horowitz & Sahni: Fundamentals of ComputerAlgorithms, Pitman, London, 1995

• Knuth: Fundamental Algorithms, Addison-Wessley, 1973

POLAGANJE ISPITA

• seminarski rad izabran u dogovoru s nastavnikom

• usmena obrana seminarskog rada• usmeni dio ispita

Općenito o predmetu

• Pretpostavka ovog predmeta je operativno znanje programiranja u jeziku C.

Page 3: Teorija Algoritama i Sustava-uvod

Razvoj algoritma

Put do škole

Specifikacija problema

• Preduvjet: lokacija kuće i škole

• Zahtjev: Odrediti put do škole.

Page 4: Teorija Algoritama i Sustava-uvod

Algoritam

• Što je algoritam?

Algoritam

• Algoritam definira računanje putanje.

Algoritam

• Jeli to ispravan algoritam?

Page 5: Teorija Algoritama i Sustava-uvod

Složenost• Postoji beskonačan broj početnih instanci.

• Algoritam mora funkcionirati za svaku od njih.

Različiti algoritmi za istu zadaću.

U programiranju, često postoji mnoštvo različitih puteva – algoritama – za rješavanje bilo koje zadače. Svaki od algoritama ima prednosti i nedostatke u različitim situacijama.

Algoritmi za sortiranje

Bin sortMerge sortBubble sortShell sortQuicksort

Ako imate milijun integer vrijednosti između 1 i 10 i trebate ih sortirati, BinSort je korektan algoritam za to.Ako imate milijun naslova knjiga, Quicksort će biti najbolji algoritam.Poznavanjem snage i nedostataka različitih algoritama, odabrat ćete najbolji za vašu zadaću.

Page 6: Teorija Algoritama i Sustava-uvod

Algoritam

Pravilo (ili skup pravila) kojim se opisuje kako riješiti neki problem i koje posjeduje sljedeća svojstva:

algoritam je precizanalgoritam je jednoznačanalgoritam obuhvaća konačni broj koraka; svaki korak je opisan instrukcijomza algoritam su definirani početni objekti (koji pripadaju nekoj klasi objekata) nad kojima se obavljaju operacijeishod obavljanja algoritma je skup završnih objekata(rezultat), tj. algoritam je djelotvoran (effective)

Postupak obavljanja algoritma je algoritamski proces

Primjer algoritma – ručno zbrajanje dvaju višeznamenkastih dekadskih brojeva

Početni objekti: 2 pribrojnika

Napisati dekadske brojeva tako da znamenke jedinica budu potpisane jedna ispod druge, znamenke desetica i sve ostale znamenke također. Ako u manjem broju ne postoji znamenka koje u većem ima, zamisliti da na tom mjestu piše 0.Zamisliti broj koji ćemo nazvati prijenos, i postaviti ga na vrijednost 0Za svako težinsko mjesto, krenuvši s desna na lijevo, učiniti

Zbrojiti dvije odgovarajuće znamenke i prijenosNa odgovarajuće težinsko mjesto rezultata upisati znamenku jedinica tako dobivene sumeBroju prijenos dodijeliti vrijednost znamenke desetica tako dobivene sume

Ako je prijenos > 0, upisati ga ispred rezultataZavršni objekt:

zbroj

Algoritam

Instrukcije moraju biti izvedive i jednoznačne

Primjeri za nedopuštene instrukcije:izračunaj 5/0uvećaj x za 6 ili 7

Page 7: Teorija Algoritama i Sustava-uvod

AlgoritamAlgoritam je učinkovit (efficient) ako se rezultat dobije u prihvatljivom ili "razumnom" vremenu.

Primjer:Primjer: AlgoritamAlgoritam kojikoji bi bi izabiraoizabirao potezpotez igraigraččaaššahaaha takotako dada ispitaispita svesve mogumoguććee posljediceposljedicepotezapoteza, , zahtijevaozahtijevao bi bi milijardemilijarde godinagodina nananajbrnajbržžemem zamislivomzamislivom raraččunaluunalu.. ZaZaššto?to?

20 mogu20 moguććih prvih poteza bijelogih prvih poteza bijelog20 mogu20 moguććih prvih poteza crnogih prvih poteza crnog> 20 mogu> 20 moguććih drugih poteza bijelogih drugih poteza bijelog> 20 mogu> 20 moguććih drugih poteza crnog ih drugih poteza crnog itditd......

Za 10 poteza svakog igraZa 10 poteza svakog igračča, barem 20a, barem 202020

kombinacija ~ 10kombinacija ~ 102626

Kad bi se 1 kombinacija analizirala 1 Kad bi se 1 kombinacija analizirala 1 µµs, to je s, to je 31709791983763170979198376 godina!godina!

Algoritmi i programiProgram - opis algoritma koji u nekom programskom jezikujednoznačno određuje što računalo treba napraviti.Programiranje – proces opisivanja algoritma nekim od programskih jezikaAlgoritmi + strukture podataka = PROGRAMI (Wirth)

kako osmisliti algoritmekako strukturirati podatkekako formulirati algoritmekako verificirati korektnost algoritamakako analizirati algoritmekako provjeriti (testirati) program

Postupci izrade algoritama nisu jednoznačni te zahtijevaju i kreativnost. Inače bi već postojali generatori algoritama. Znači da se (za sada?) gradivo ovog predmeta ne može u potpunosti algoritmizirati. Koristit ćese programski jezik C. Za sažeti opis složenijih algoritama može se koristiti pseudokod.

Page 8: Teorija Algoritama i Sustava-uvod

OSNOVNI POJMOVI

• U računarstvu se susrećemo s dva osnovna pojma:

• strukture podataka . . . “statički” aspekt nekog programa. Ono sa čime se radi.

• algoritmi . . . “dinamički” aspekt programa. Ono što se radi.

Tip podataka

• . . . skup vrijednosti koje neki podatak može poprimiti (npr. podatak tipa int može imati samo vrijednosti iz skupa cijelih brojeva prikazivih u stroju).

apstraktni tip podataka (a.t.p.)

• . . . zadaje se navođenjem jednog ili više tipova podataka, te jedne ili više operacija (funkcija). Operandi i rezultati navedenih operacija su podaci navedenih tipova.

• Među tipovima postoji jedan istaknuti po kojem cijeli apstraktni tip podataka dobiva ime.

Page 9: Teorija Algoritama i Sustava-uvod

PRIMJER: Apstraktni tip podataka COMPLEX

• Struktura podataka pogodna za prikaz kompleksnog broja bila bi tipa:

typedef struct {scalar re;scalar im;

} COMPLEX;

Struktura podataka

• . . . skupina varijabli u nekom programu i veza među tim varijablama

Algoritam

• . . . konačni niz instrukcija, od kojih svaka ima jasno značenje i može biti izvršena u konačnom vremenu. Iste instrukcije mogu se izvršiti više puta, pod pretpostavkom da same instrukcije ukazuju na ponavljanje. Ipak, zahtijevamo da, za bilo koje vrijednosti ulaznih podataka, algoritam završava nakon konačnog broja ponavljanja.

Page 10: Teorija Algoritama i Sustava-uvod

Implementacija apstraktnog tipa podataka

• . . . konkretna realizacija dotičnog apstraktnog tipa podataka u nekom programu.

• Sastoji se od definicije za strukturu podataka (kojom se prikazuju podaci iz apstraktnog tipa podataka) te od potprograma (kojima se operacije iz apstraktnog tipa podataka ostvaruju pomoću odabranih algoritama).

• Za isti apstraktni tip podataka obično se može smisliti više različitih implementacija - one se razlikuju po tome što koriste različite strukture za prikaz podataka te različcite algoritme za izvršavanje operacija.

PRIMJER: IMPLEMENTACIJE A.T.P

• Implementacija apstraktnog tipa podataka COMPLEX se sastoji od prethodne definicije tipa,te od funkcija oblika:

• Za apstraktni tip podataka COMPLEX je važno da su prisutne operacije ADD( ) i MULT( ). Bez tih operacija radilo bi se o tipu, i tada kompleksne brojeve ne bismo mogli razlikovati od uređenih parova skalara.

POSTUPAK RJEŠAVANJA PROBLEMA

Page 11: Teorija Algoritama i Sustava-uvod

ELEMENTI KOJI GRADE STRUKTURE PODATAKA

Čelija

• . . . varijabla koju promatramo kao zasebnu cjelinu.To je relativan pojam (nešto se u jednom trenutku može smatrati ćelijom, a kasnije se može gledati unutrašnja građa iste cjeline). Svaka ćelija ima svoj tip i adresu.

Polje• . . . (array u C-u). Mehanizam udruživanja manjih

dijelova strukture u veće. Polje čini više ćelija istog tipa pohranjenih na uzastopnim adresama. Broj ćelija je unaprijed zadan i nepromjenljiv.

• Jedna ćelija se zove element polja i jednoznačno je određena pripadnom vrijednošću indeksa.

• Po sintaksi C-a, uzimamo da su indeksi 0, 1, 2, ... , N-1, gdje je N cjelobrojna konstanta.

Page 12: Teorija Algoritama i Sustava-uvod

Zapis • . . . (slog, structure u C-u). Takoder mehanizam

udruživanja manjih dijelova strukture u veće. Zapis čini više ćelija, koje ne moraju biti istog tipa, no koje su pohranjene na uzastopnim adresama.

• Broj, redosljed i tip ćelija je unaprijed zadan i nepromjenljiv. Pojedina ćelija se zove komponenta zapisa. Polja i zapisi se mogu kombinirati. Na primjer, možemo imati polje zapisa, zapis čije pojedine komponente su polja, polje od polja, zapis čija komponenta je zapis, i slično.

Pointer (pokazivač)

• . . . služi za uspostavljanje veze između dijelova strukture. Pointer je čelija koja pokazuje neku drugu ćeliju. Sadržaj pointera je adresa ćelije koju treba pokazati.

Kursor

• . . . takoder služi za uspostavljanje veze između dijelova strukture. Kursor je ćelija tipa int koja pokazuje na element nekog polja. Sadržaj kursora je indeks elementa kojeg treba pokazati.

Page 13: Teorija Algoritama i Sustava-uvod

PRIMJER

• Dijagram pokazuje primjer strukture podataka koja se sastoji od niza zapisa povezanih pomoću pointera, te od jednog polja zapisa. Zapisi su još medusobno povezani kursorima.

Podsjećanje/ponavljanje

Datoteke, pokazivaDatoteke, pokazivačči i dinamii i dinamiččka ka rezervacija memorije, strukturarezervacija memorije, struktura

Rezervacija i oslobađanje memorije: funkcije malloc i free

• malloc.ppt

• Strukture

Page 14: Teorija Algoritama i Sustava-uvod

Pokazivači i strukture

• PONAVLJANJE POKAZIVACA.ppt

Datoteke

• FILES1.ppt