ANALIZA ALGORITAMA SLOENOST ALGORITMA Kada piemo neku proceduru

  • Slides: 18
Download presentation
ANALIZA ALGORITAMA SLOŽENOST ALGORITMA

ANALIZA ALGORITAMA SLOŽENOST ALGORITMA

Kada pišemo neku proceduru, veoma je bitno da procenimo koliko je ona složena. Složenost

Kada pišemo neku proceduru, veoma je bitno da procenimo koliko je ona složena. Složenost se meri brojem operacija koje neki algoritam obavlja.

Složenost - direktno proporcionalna trajanju i obrnuto proporcionalna efikasnosti algoritma. Složeni algoritmi su spori

Složenost - direktno proporcionalna trajanju i obrnuto proporcionalna efikasnosti algoritma. Složeni algoritmi su spori i neefikasni. Glavni resursi koje algoritam zahteva su procesorsko vreme i prostor u memoriji. Uglavnom nas brine vremenska složenost, a prostorna samo izuzetno. Obično problemi koje rešavamo imaju "veličinu„ koja zavisi od količine podataka koji se obrađuju n (u funkciji od n). Gotovo svi algoritmi, koje ćemo obraditi, imaju vreme izvršavanja srazmerno jednoj od datih funkcija.

Konstantna složenost: 1 „vreme uvek isto, nezavisno od unosa“ Algoritmi konstantne složenosti izvode uvek

Konstantna složenost: 1 „vreme uvek isto, nezavisno od unosa“ Algoritmi konstantne složenosti izvode uvek isti broj operacija, bez obzira na veličinu unosa. Dobar primer je uzimanje nasumičnog člana niza. Dužina niza ne utiče na složenost, jer svakom članu pristupamo jednako brzo. Logaritamska (podlinearna) složenost: log n „vreme raste sporije od unosa“ Algoritmi logaritamske složenosti su vrlo efikasni algoritmi - vreme izvršenja raste znatno sporije od rasta unosa.

Pošto se u računarstvu podrazumeva osnova 2, logaritam je operacija neprekidnog deljenja na pola,

Pošto se u računarstvu podrazumeva osnova 2, logaritam je operacija neprekidnog deljenja na pola, algoritmi nakon svakog koraka eliminišu polovinu preostalog skupa. Najpoznatiji primer logaritamske složenosti je binarna pretraga, koja u svakom prolasku deli sortirani niz na pola, i odbacuje jednu polovinu. Ø Primer iz stvarnog sveta je traženje reči u rečniku. Logaritam od 1. 000 (milion) iznosi 19, 9 - u rečniku od milion reči možemo pronaći bilo koju reč u najviše 20 koraka. U klasu podlinearnih algoritama spadaju i algoritmi korenske složenosti, koji su veoma retki.

Linearna složenost: n „vreme raste isto kao unos“ Algoritam ima linearnu složenost kada nad

Linearna složenost: n „vreme raste isto kao unos“ Algoritam ima linearnu složenost kada nad svakim članom ulaza obavlja isti broj operacija (može i samo jednu). Količina rada po elementu je konstantna i ne zavisi od veličine unosa. Vreme izvršenja srazmerno je količini unosa.

Kvadratna složenost: n² „vreme raste unos na kvadrat“ Kod kvadratnih algoritama količina rada po

Kvadratna složenost: n² „vreme raste unos na kvadrat“ Kod kvadratnih algoritama količina rada po svakom elementu zavisi od ukupnog broja elemenata. Svaki od n unosa zahteva n količina rada, pa je ukupan broj prolazaka jednak unosu na kvadrat. Klasičan primer je petlja unutar petlje. Jedna od praktičnih primena je kombinacija svakog elementa sa svakim.

Složenost Broj koraka Procena trajanja konstantna 1 • 1 član: 1 korak • 100

Složenost Broj koraka Procena trajanja konstantna 1 • 1 član: 1 korak • 100 članova: 1 korak logaritamska log n • 1 član: 1 korak • 100 članova: 6 koraka linearna n • 1 član: 1 korak • 100 članova: 100 koraka log linearna n log n • 1 član: 1 korak • 100 članova: 600 koraka kvadratna n 2 • 1 član: 1 korak • 100 članova: 10000 koraka kubna n 3 • 1 član: 1 korak • 100 članova: 10000000 koraka 2 n • 1 član: 1 korak • 100 članova: 12676506002282294014967032 05376 koraka eksponencijalna

ASIMPTOTSKA NOTACIJA

ASIMPTOTSKA NOTACIJA

Algoritme upoređujemo prema njihovim funkcijama asimptotskog vremena izvršenja: što je ta funkcija manja algoritam

Algoritme upoređujemo prema njihovim funkcijama asimptotskog vremena izvršenja: što je ta funkcija manja algoritam je brži. Upravo asimptotska notacija omogućava da se precizno uvede relativni poredak za funkcije. Asimptotska notacija ima četiri oblika: ��zapis (veliko O); �� - zapis; �� - zapis (malo o) ;

�� - zapis služi za određivanje vremena izvršenja algoritma u najgorem slučaju Kažemo da

�� - zapis služi za određivanje vremena izvršenja algoritma u najgorem slučaju Kažemo da je �� (n) ASIMPTOTSKI USKO OGRANIČENJE za f-ju �� (n)

�� - zapis označava da je brzina rasta funkcije �� (n) reda veličine manje

�� - zapis označava da je brzina rasta funkcije �� (n) reda veličine manje od brzine rasta funkcije �� (n). To znači da je Za bilo koje dve funkcije �� (n) i �� (n), važi da je �� (n) =�� (n)) ako i samo ako je �� (n) = �� (n)) i �� (n) = �� (n)).

ALGORITAM ZA SREĆU ČAJA ALGORITAM PRIPREME

ALGORITAM ZA SREĆU ČAJA ALGORITAM PRIPREME