POHLEPNI ALGORITMI Pohlepni algoritmi predstavljaju algoritamsku strategiju kod

  • Slides: 62
Download presentation
POHLEPNI ALGORITMI

POHLEPNI ALGORITMI

Pohlepni algoritmi predstavljaju algoritamsku strategiju kod koje se problem rešava deo po deo, pri

Pohlepni algoritmi predstavljaju algoritamsku strategiju kod koje se problem rešava deo po deo, pri čemu se uvek bira naredni deo koji nudi najočigledniju neposrednu korist Ovakva strategija u mnogim slučajevima ne daje dobre rezultate, kao što ne bi dala ni u šahu, gde moramo dobro isplanirati više poteza unapred, i gde bi planiranje samo narednog poteza vrlo brzo dovelo do poraza. Međutim, postoje i slučajevi gde ovakva pohlepna strategija daje rezultate, i u daljem radu baićemo se takvim slučajevima.

Minimalna razapinjuća stabla Pretpostavimo da nam je dat zadatak da umrežimo kolekciju računara povezujući

Minimalna razapinjuća stabla Pretpostavimo da nam je dat zadatak da umrežimo kolekciju računara povezujući izabrane parove tih računara. Ovaj zadatak može se prevesti u problem teorije grafova, gde su čvorovi raču -nari, neusmerene grane su potencijalne veze između njih, i cilj je da izaberemo dovoljno tih grana da čvorovi budu povezani. Međutim, to nije sve. Svaka veza takođe ima svoje troškove održavanja, koje predstavljamo kao težine grana (naš graf je neusmeren i težinski). Pitanje je: Koja je najjeftinija moguća mreža? Ono što odmah možemo uočiti je da optimalan skup grana ne može sadržati ciklus, jer uklanjanjem grane sa tog ciklusa možemo redukovati cenu bez da poremetimo povezanost.

Minimalna razapinjuća stabla • Da li je ovo jedino optimalno rešenje?

Minimalna razapinjuća stabla • Da li je ovo jedino optimalno rešenje?

Pohlepni pristup •

Pohlepni pristup •

Primer •

Primer •

Svojstvo sečenja– Cut property •

Svojstvo sečenja– Cut property •

Svojstvo sečenja– Cut property •

Svojstvo sečenja– Cut property •

Svojstvo sečenja– Cut property •

Svojstvo sečenja– Cut property •

Primer

Primer

Kruskalov algoritam •

Kruskalov algoritam •

Kruskalov algoritam •

Kruskalov algoritam •

Kruskal's minimum spanning tree algorithm •

Kruskal's minimum spanning tree algorithm •

Struktura podataka za disjunktne skupove Jedan od načina da se predstavi skup je usmereno

Struktura podataka za disjunktne skupove Jedan od načina da se predstavi skup je usmereno stablo (Slika 5. 5). Čvorovi stabla su elementi skupa, aranžirani bez nekog posebnog redosleda, i svaki od njih ima roditeljski pokazivač koji nas vodi prema korenu stabla. Element u korenu je zgodan za predstavnika skupa. On se razlikuje od ostalih elemenata po tome što mu roditeljski pokazivač predstavlja petlju.

Unija po rangu •

Unija po rangu •

Unija po rangu •

Unija po rangu •

Procedura union

Procedura union

Primer – unija po rangu

Primer – unija po rangu

Primer – unija po rangu

Primer – unija po rangu

Unija po rangu •

Unija po rangu •

Primer – Kruskalov algoritam

Primer – Kruskalov algoritam

Primer – Kruskalov algoritam

Primer – Kruskalov algoritam

Primer – Kruskalov algoritam

Primer – Kruskalov algoritam

Primer – Kruskalov algoritam

Primer – Kruskalov algoritam

Primer – Kruskalov algoritam

Primer – Kruskalov algoritam

Kompresija puteva •

Kompresija puteva •

Primer – kompresija puteva

Primer – kompresija puteva

Kompresija puteva •

Kompresija puteva •

Primov algoritam •

Primov algoritam •

Primov algoritam •

Primov algoritam •

Primov algoritam •

Primov algoritam •

Primov algoritam

Primov algoritam

Primer 1 – Primov algoritam

Primer 1 – Primov algoritam

Primer 2 – Primov algoritam

Primer 2 – Primov algoritam

Primer 2 – Primov algoritam

Primer 2 – Primov algoritam

Primer 2 – Primov algoritam

Primer 2 – Primov algoritam

Primer 2 – Primov algoritam

Primer 2 – Primov algoritam

Primer 2 – Primov algoritam

Primer 2 – Primov algoritam

Primer 2 – Primov algoritam

Primer 2 – Primov algoritam

Primer 2 – Primov algoritam

Primer 2 – Primov algoritam

Digitalni audio je dobijen preradom, tzv. digitalizacijom realnog zvuka, ali tako da naše uši

Digitalni audio je dobijen preradom, tzv. digitalizacijom realnog zvuka, ali tako da naše uši teško da mogu da primete razliku u kvalitetu. Realni zvuk je analogna fizička veličina – parametri zvuka se neprekidno menjaju od jednog do drugog vremenskog trenutka. Digitalizacijom zvuka se ne beleže parametri zvuka u svakom trenutku vremena, već samo u pojedinim diskretnim trenucima vremena. U svakoj sekundi se uzima nekoliko hiljada trenutaka, i beleži se vrednost parametara zvuka u svakom od njih. Drugim rečima, uzimamo nekoliko hiljada uzoraka zvuka u svakoj sekundi, zbog čega se to naziva uzorkovanje ili samplovanje (engl. sample – uzorak). uzorak Broj tih trenutaka u sekundi (broj uzoraka) nazivamo frekvencija uzorkovanja Frekvencija uzorkovanja se meri u hercima (Hz), odnosno kilohercima (KHz).

Digitalni audio Osim od frekvencije uzorkovanja, kvalitet zvuka kod digitalnog audia zavisi i od

Digitalni audio Osim od frekvencije uzorkovanja, kvalitet zvuka kod digitalnog audia zavisi i od rezolucije odnosno veličine uzoraka, kao i od izbora stereo ili mono audia. Rezolucija ili veličina uzoraka je broj bitova koji koristimo za opisivanje parametara zvuka svakog od uzoraka. Naravno, bolji kvalitet daju veće frekvencije uzorkovanja i veće rezolucije, i stereo zvuk je bolji od mono zvuka. Povećanjem frekvencije i rezolucije, i izborom stereo zvuka, dobija se bolji kvalitet zvuka, ali se povećava i veličina fajlova gde se čuva digitalizovani audio. Međutim, povećanjem frekvencije i rezolucije preko izvesnih granica ljudsko uvo ne bi bilo u stanju da primeti poboljšanje kvaliteta zvuka. CD audio, na primer, ima frekvenciju uzorkovanja od 44. 1 k. Hz (44, 100 uzoraka po sekundi) i rezoluciju od 16 bitova, i koristi se stereo.

Digitalni audio

Digitalni audio

Hafmanovo kodiranje •

Hafmanovo kodiranje •

Hafmanovo kodiranje •

Hafmanovo kodiranje •

Hafmanovo kodiranje •

Hafmanovo kodiranje •

Hafmanovo kodiranje Dekodiranje je jedinstveno: niz bitova se dekodira tako što se polazi od

Hafmanovo kodiranje Dekodiranje je jedinstveno: niz bitova se dekodira tako što se polazi od korena, čitajući niz bitova s leva udesno i krećući se naniže u stablu, i, kad god se dođe do lista, na izlaz se šalje odgovarajući simbol, i automatski se vraća na koren stabla. Ovo je prosta i isplativa shema koja u našem primeru (sa kodovima iz Fig. 5. 10) veličinu binarnog niza smanjuje na 213 megabita, što je poboljšanje od 17%.

Hafmanovo kodiranje •

Hafmanovo kodiranje •

Hafmanovo kodiranje •

Hafmanovo kodiranje •

Hafmanovo kodiranje •

Hafmanovo kodiranje •

Hafmanova procedura

Hafmanova procedura

Hornove formule •

Hornove formule •

Klauzule •

Klauzule •

Hornove formule Dve vrste klauzula vode nas u dva različita pravca. Implikacije nam kažu

Hornove formule Dve vrste klauzula vode nas u dva različita pravca. Implikacije nam kažu da neke promenljive podesimo da budu tačne, dok nam negativne klauzule kažu da ih podesimo da budu netačne. Naša strategija za rešavanje Hornovih formula je sledeća: Najpre stavljamo da su sve promenljive netačne. Potom podešavamo neke od njih da budu tačne, jednu po jednu, ali samo ako moramo jer bi u suprotnom bila narušena implikacija. Kada završimo tu fazu i sve implikacije budu zadovoljene, tek onda se okrećemo negativnim klauzulama i proveravamo da li su sve one zadovoljene.

Algoritam – Hornove formule Ulaz: Hornova formula Izlaz: zadovoljavajuće dodeljivanje, ako takvo postoji postavimo

Algoritam – Hornove formule Ulaz: Hornova formula Izlaz: zadovoljavajuće dodeljivanje, ako takvo postoji postavimo sve promenljive da budu netačne sve dok postoji implikacija koja nije zadovoljena: postavimo promenljivu na desnoj strani implikacije da bude tačna ako su sve čiste negativne klauzule zadovoljene: vraćamo dodeljivanje u suprotnom: vraćamo ‘‘formula nije zadovoljiva’’

Primer – Hornove formule

Primer – Hornove formule

Korektnost algoritma Ako algoritam vraća dodeljivanje, onda ono zadovoljava i implikacije i negativne klauzule

Korektnost algoritma Ako algoritam vraća dodeljivanje, onda ono zadovoljava i implikacije i negativne klauzule Hornove formule, pa to zaista jeste zadovoljavajuće dodeljivanje. Prema tome, ostaje samo da se uverimo da ako algoritam ustanovi da nema zadovoljavajućih dodeljivanja, tada ih zaista nema. To je zato što važi sledeće: Ako je algoritam neke promenljive postavio da budu tačne, tada one moraju biti tačne u bilo kom zadovoljavajućem pridruživanju. Dakle, ako dodeljivanje istinitosnih vrednosti koje smo dobili nakon while petlje ne zadovoljava negativne klauzule, tada uopšte nema zadovoljavajućih dodeljivanja. Hornove formule su u srži Prologa (“� programming by logic”� ), jezika u kome programiramo specifikovanjem željenih svojstava izlaza , koristeći proste logičke izraze. Pokretač Prolog interpretatora je naš napred opisani pohlepni algoritam. Algoritam se može implementirati u vremenu linearnom u odnosu na dužinu formule.

Pokrivanje skupa Tačke u Fig. 5. 11 predstavljaju kolekciju gradova okruga koji je u

Pokrivanje skupa Tačke u Fig. 5. 11 predstavljaju kolekciju gradova okruga koji je u ranoj fazi planiranja i odlučivanja gde da se uvedu škole. Postoje samo dva ograničenja: svaka škola treba da bude u gradu, i ni do jedne od njih ne treba putovati duže od 30 milja. Postavlja se pitanje: Koji je minimalni potreban broj škola? Ovo je tipični problem pokrivanja skupova (set covering problem). problem

Pokrivanje skupa •

Pokrivanje skupa •

Pokrivanje skupa •

Pokrivanje skupa •

Pokrivanje skupa Prema tome, pohlepna strategija će obezbediti da što daje Pogodnija granica može

Pokrivanje skupa Prema tome, pohlepna strategija će obezbediti da što daje Pogodnija granica može se dobiti iz sledeće nejednakosti koja se jasno vidi iz sledeće slike:

Pokrivanje skupa •

Pokrivanje skupa •