Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

Слични документи
P1.1 Analiza efikasnosti algoritama 1

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

Funkcije predavač: Nadežda Jakšić

Konstrukcija i analiza algoritama Nina Radojičić februar Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne fun

Microsoft PowerPoint - C-4-1

6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe

P2.1 Projektovanje paralelnih algoritama 1

Microsoft Word - AIDA2kolokvijumRsmerResenja.doc

P1.2 Analiza efikasnosti algoritama 2

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr

Funkcije predavač: Nadežda Jakšić

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

PROMENLJIVE, TIPOVI PROMENLJIVIH

Uvod u računarstvo 2+2

08 RSA1

P11.3 Analiza zivotnog veka, Graf smetnji

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

Logicko projektovanje racunarskih sistema I

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Tutoring System for Distance Learning of Java Programming Language

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

My_ST_FTNIspiti_Free

P3.2 Paralelno programiranje 2

Programski jezik C

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

Državna matura iz informatike

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

PowerPoint Presentation

Matrice. Algebarske operacije s matricama. - Predavanje I

Programiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6

ФАКУЛТЕТ ОРГАНИЗАЦИОНИХ НАУКА

Tutoring System for Distance Learning of Java Programming Language

Veeeeeliki brojevi

Verovatnoća - kolokvijum 17. decembar Profesor daje dva tipa ispita,,,težak ispit i,,lak ispit. Verovatnoća da student dobije težak ispit je

Teorija skupova - blog.sake.ba

Grananje u programu predavač: Nadežda Jakšić

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1

Algoritmi i arhitekture DSP I

Vektorske funkcije i polja Mate Kosor / 23

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Programiranje 2 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 1. predavanje p. 1/7

070-ALIP2-udzbenik.indb

PASCAL UVOD 2 II razred gimnazije

TEORIJA SIGNALA I INFORMACIJA

Рачунарска интелигенција

Microsoft Word - 1.Operacije i zakoni operacija

2015_k2_z12.dvi

1 Polinomi jedne promenljive Neka je K polje. Izraz P (x) = a 0 + a 1 x + + a n x n = n a k x k, x K, naziva se algebarski polinom po x nad poljem K.

PowerPoint Presentation

Uvod u računarstvo 2+2

Oblikovanje i analiza algoritama 4. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 4. pr

PowerPoint Presentation

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić

Microsoft Word - predavanje8

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

Slide 1

Uvod u takmičarsko programiranje

Algoritmi SŠ P1

The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature opti

07_PJISP_II_Predavanja

Teorija skupova – predavanja

1 Konusni preseci (drugim rečima: kružnica, elipsa, hiperbola i parabola) Definicija 0.1 Algebarska kriva drugog reda u ravni jeste skup tačaka opisan

MAT-KOL (Banja Luka) XXIII (4)(2017), DOI: /МК Ž ISSN (o) ISSN (o) ЈЕДНА

P1.2 Projektovanje asemblera

Pojačavači

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1.

Skalarne funkcije više varijabli Parcijalne derivacije Skalarne funkcije više varijabli i parcijalne derivacije Franka Miriam Brückler

М А Т Е М А Т И К А Први разред (180) Предмети у простору и односи међу њима (10; 4 + 6) Линија и област (14; 5 + 9) Класификација предмета према свој

ПРИРОДА И ЗНАК РЕШЕЊА 2 b ax bx c 0 x1 x2 2 D b 4ac a ( сви задаци су решени) c b D xx 1 2 x1/2 a 2a УСЛОВИ Решења реална и различита D>0 Решења реалн

Kombinatorno testiranje

Matematka 1 Zadaci za vežbe Oktobar Uvod 1.1. Izračunati vrednost izraza (bez upotrebe pomoćnih sredstava): ( ) [ a) : b) 3 3

Skripte2013

Inženjering informacionih sistema

Programiranje 1

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU

Рационални Бројеви Скуп рационалних бројева 1. Из скупа { 3 4, 2, 4, 11, 0, , 1 5, 12 3 } издвој подскуп: а) природних бројева; б) целих броје

Dinamičko programiranje Primer 1: Za dati niz naći njegov najduži neopadajući podniz. Defnicija: podniz nekog niza je niz koji se dobija izbacivanjem

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

Programiranje za UNIX Okruženje unix procesa

Microsoft Word - SIORT1_2019_K1_resenje.docx

Sadržaj 1 Diskretan slučajan vektor Definicija slučajnog vektora Diskretan slučajan vektor

(Microsoft Word - 1. doma\346a zada\346a)

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

Mere slicnosti

Школа Ј. Ј. Змај Свилајнац МЕСЕЧНИ ПЛАН РАДА ЗА СЕПТЕМБАР Школска 2018 /2019. Назив предмета: Информатика и рачунарство Разред: 5. Недељни број часова

Microsoft Word - 6ms001

Aksiomatska semantika kroz primere Seminarski rad u okviru kursa Verifikacija softvera Matematički fakultet Nikola Katić, 1094/2017

AR2019

SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Ivana Šore REKURZIVNOST REALNIH FUNKCIJA Diplomski rad Voditelj rada: doc.

VEŽBE IZ OPERACIONIH ISTRAŽIVANJA

1

UAAG Osnovne algebarske strukture 5. Vektorski prostori Borka Jadrijević

Транскрипт:

Сложеност алгоритама (Програмирање 2, глава 3, глава 4-4.3) Проблем: класа задатака истог типа Велики број различитих (коректних) алгоритама Величина (димензија) проблема нпр. количина података које треба обрадити нпр. за сортирање низа: број елемената, N Сложеност алгоритма временска просторна функција димензије проблема 1/57

Сложеност алгоритама Временска и просторна сложеност алгоритма У терминима времена и простора утрошеног за конкретну улазну величину У терминима асимптотског понашања времена и простора када улазна величина расте 2/57

Сложеност алгоритама Временска и просторна сложеност алгоритма одређује и његову употребљивост тј. највећу димензију улаза за коју је могуће да се алгоритам изврши у разумном времену и простору Мерење утрошеног времена Библиотечке функције, нпр. Clock Процена времена извршавања појединих операција на специфичним процесорима и оперативним системима Профајлери 3/57

Анализа најгорег случаја Често се алгоритми не извршавају исто за све улазне податке исте димензије (величине) Нпр. алгоритми сортирања Анализа најгорег случаја процењује сложеност алгоритма у најгорем случају најчешће се примењује за поређење алгоритама Просечно време није увек могуће израчунати 4/57

Табела времена извршавања: 1 инструкција 1 наносекунда (10-9 секунди) f(n) je број инструкција које алгоритам изврши за улаз величине n 5/57

Пример Ако је број инструкција n 2 + 2n, за улаз димензије 1000000, члан n 2 троши16.7 минута а члан 2n само додатне две микросекунде. Сложеност (и временска и просторна) је скоро потпуно одређена водећим чланом у изразу за сложеност (број инструкција за временску) Мултипликативне и адитивне константе не утичу много 6/57

О() нотација О() нотација (Бахман-Ландау; Edmund Landau, Paul Bachmann немачки научници, почетак 20.в.): гранично понашање функције када аргумент тежи некој специфичној вредности или бесконачности у терминима једноставнијих функција формално: f(x), g(x) f(x) = O(g(x)) x akko постоји c>0, x 0 R f(x) c * g(x) за x > x 0 7/57

Сложеност алгоритама: О() нотација У процени временске или просторне сложености, аргумент је природни број n Ако постоји позитивна константа c и природни број n 0 такви да за функције f и g над природним бројевима важи f (n) c * g(n) за све вредности n > n 0 онда пишемо f = O(g) заправо значи f O(g) и читамо f је велико о од g На пример, за n N, f(n)=2n 2 +n-2, f=o(n 2 ), али и f = O(n 3 ); 8/57

Адитивне и мултипликативне константе У изразу 5n 2 + 1, константа 1 је адитивна а константа 5 мултипликативна Ове константе не утичу на класу сложености којој функција припада Не говори се да је функција из класе O(5n 2 + 1) Ако је фунција временске сложености једног алгоритма 5n 2 + 1 а другог n 2, извршавање првог алгоритма на рачунару који је 6 пута бржи биће брже за сваку величину улаза од извршавања другог алгоритма на 6 пута споријем рачунару Ако је функција временске сложености једног алгоритма n 2 а другог n, не постоји рачунар на којем ће се први алгоритам извршавати брже од другог за сваку величину улаза 9/57

Примери 10/57

Нека својства О-нотације Ако је f 1 = O(g 1 ) и f 2 = O(g 2 ), онда је и f 1. f 2 = O(g 1. g 2 ) f 1 +f 2 = O(g 1 +g 2 ) Ако важи f = O(g) и a и b су позитивне константе, онда важи и af + b = O(g) 11/57

Сложеност алгоритама: Ω(), θ() нотација Слично се дефинишу Ωи θ асимптотске нотације: Ако постоје позитивна константа c и природни број n 0 такви да за функције f и g над природним бројевима важи f (n) c * g(n) за све вредности n > n 0 онда пишемо f = Ω(g) и читамо f је велико омега од g 12/33

Сложеност алгоритама: Ω(), θ() нотација Ако постоје позитивне константе c 1 и c 2 и природни број n 0 такви да за функције f и g над природним бројевима важи c 1 * g(n) f (n) c 2 * g(n) за све вредности n > n 0 онда пишемо f = θ(g) и читамо f је велико тета од g Важи да јеf = θ(g) ако и само ако је f = O(g) и f = Ω(g) 13/33

Ω() нотација: примери 14/33

θ() нотација: примери 15/33

Сложеност алгоритама: O(), θ() нотација 16/33

17/33

18/33

Класе сложености Класа сложености O (Ω, θ) Ако је T(n) време извршавања алгоритма A (улаза димензије n) и ако важи да је T = O(g) (Ω(g), θ(g)) онда кажемо да је алгоритам A сложености (реда) O(g) (Ω(g), θ(g)) или да припада класи O(g) (Ω(g), θ(g)). 19/57

Класе сложености Однос између нотација Пример: 5n = O(n), O(n 2 ), θ(n) АЛИ НИЈЕ θ(n 2 ) O(g) обично подразумева најмању класу којој алгоритам припада (или најмању за коју то може да се докаже, у претходном примеру O(n) ) 20/57

Класе сложености Класе сложености O(1) константна сложеност O(log n) логаритамска сложеност O(n) линеарна сложеност O(n 2 ) квадратна сложеност O(n 3 ) кубна сложеност O(n k ) за неко k полиномијална сложеност O(2 n ) експоненцијална сложеност 21/57

Временска сложеност - класе О(1): време извршавања константно; сви искази се извршавају по неколико пута, независно од димензије проблема; најбоље алгоритам директног претраживања у идеалном случају 22/57

Временска сложеност - класе О(logn):време извршавања лагано расте (мање од неке велике константе); алгоритми који проблем решавају тако што га деле на 2, 3... потпроблема и онда решавају само један од тих потпроблема кад се n удвостручи, log nпорасте за константу (log2); кад сеn квадрира, log n се тек удвостручи Ако је основа логаритма 10, за n = 1000, log 10 n je 3, за n = 1.000.000, logn jeсамо два пута веће, тј. 6. Ако је основа логаритма 2, за n = 1000, log 2 n je приближно 10, што је већа константа од 3, али небитно већа. log a n = log b n log a b. Алгоритам бинарног претраживања 23/57

Временска сложеност - класе О(n):мала количина обраде над сваким улазним податком кад се n удвостручи, и време извршавања се удвостручи алгоритам линеарног претраживања 24/57

Временска сложеност - класе О(n log n) :алгоритми који проблем решавају тако што га разбију у мање потпроблеме, реше их независно и онда комбинују решење Кад се n удвостручи, n log nсе повећа за нешто више него двоструко Када је n милион, n log n je око двадесет милиона. Алгоритам брзог сортирања низа 25/57

Временска сложеност - класе О(n 2 ):алгоритми који обрађују све парове улазних података (двострука петља) кад се nудвостручи, време извршавања се увећа 4 пута елементарне методе сортирања, нпр. сортирање избором практични за релативно мале димензије проблема О(n 3 ): алгоритми који обрађују тројке улазних података (трострука петља) кад се nудвостручи, време извршавања се увећа 8 пута нпр. за n 100, време извршавања је милион само за мале димензије проблема 26/57

Временска сложеност - класе О(2 n ): експоненцијална сложеност алгоритми грубе силе ретко практични за употребу када се nудвостручи, време се квадрира (за n 20, време извршавања је милион) За неке проблеме нису познати бољи алгоритми 27/57

Примери неких класа сложености 28/57

Примери неких класа сложености 29/57

Просторна сложеност алгоритама Функција улаза: захтевани ДОДАТНИ меморијски простор (поред простора за смештање улазних података) Исте асимптотске нотације као за временску сложеност (О(), Ω(), θ()) Исте класе алгоритама као за временску сложеност На пример: О(1) алгоритам сортирања избором О(log N) алгоритам брзог сортирања (локације за обраду рекурзије) О(N) алгоритам сортирања спајањем локације за премештање елемената 30/57

Примери Оценити временску сложеност следећих кодова. Одговоре образложити. int zbir(int x, int y) { } return x+y; int k=n; while(k>0){ printf("%d ", k); k=k/2; } 31/57

Примери int suma(int niz[], int n) { int i, suma = 0; for(i=0; i<n; i++) suma+=niz[i]; return suma; } for(i=0; i<n; i++) { int k=n; while(k>0){ printf("%d ", k); k=k/2; } } 32/57

Примери for(i=0; i<n; i++) for(j=0; j<i; j++) a[i]+=j; for(i=0; i<n; i++) for(j=0; j<n; j++) for(k=0; k<n; k++) a[i][j] = a[i][k]+a[k][j]; 33/57

Израчунавање временске и просторне сложености алгоритама Поједностављења Јединичне инструкције Део програма временске сложености Неколико инструкција без гранања: О(1) Петља која се извршава n пута (тело константне сложености): О(n) Једна петља n пута, за њом друга m пута (тела константне сложености): О(n+m) Један за другим сложености f, g редом: О(f+g) 34/57

Израчунавање временске и просторне сложености алгоритама Део програма временске сложености Гранање са гранама O(n), O(m), Max{O(n), O(m)} = O(n+m) Двострука петља (m, n пута, тело унутрашње константне сложености): O(m * n) Аналогно за друге комбинације линеарног кода, гранања и петљи 35/57

Израчунавање сложености алгоритама: примери Оценити временску и просторну сложеност следећих кодова и образложити. 36/57

Израчунавање сложености алгоритама: примери Временска сложеност: О(1) Просторна сложеност: О(1) 37/57

Израчунавање сложености алгоритама: примери 38/57

Израчунавање сложености алгоритама: примери Временска сложеност: О(n) Просторна сложеност: О(1) 39/57

Израчунавање сложености алгоритама: примери 40/57

Израчунавање сложености алгоритама: примери Временска сложеност: О(n 2 ) Просторна сложеност: О(1) 41/57

Израчунавање сложености алгоритама: примери 42/57

Израчунавање сложености алгоритама: примери Временска сложеност: О(n 3 log n) Просторна сложеност: О(1) 43/57

Израчунавање сложености рекурзивних алгоритама (Програмирање 2, тачка 4.3) Рекурентне једначине 44/57

Израчунавање сложености рекурзивних алгоритама: пример unsigned faktorijel(unsigned n) { if (n == 0) return 1; else return n*faktorijel(n-1); } Нека T(n) означава број инструкција које захтева позив функције faktorijel за улазну вредност n. За n = 0, важи T(n) = 2 (једно поређење и једна наредба return). За n > 0, важи T(n) = 4 + T(n - 1) (једно поређење, једно множење, једно одузимање, број инструкција за faktorijel за 45/57 n-1 и једна наредба return).

Израчунавање сложености рекурзивних алгоритама: пример T(n) = 4+ T(n-1) = 4 + 4+ T(n-2 ) =... = 4n + Т(0) = 4n + 2 = О(n) Просторна сложеност: број стек оквира, сваки са константним простором: О(n) Линеарна временска и просторна сложеност 46/57

Израчунавање сложености рекурзивних алгоритама: пример unsigned suma2(unsigned n) { if (n <= 0) return 0; else return n + suma2(n-2); } Број рекурзивних позива: n/2 Временска и просторна сложеност: О(n) 47/57

Израчунавање сложености рекурзивних алгоритама: пример Оценити временску и просторну сложеност следећих кодова и образложити. 48/57

Израчунавање сложености рекурзивних алгоритама: пример Оценити временску и просторну сложеност следећих кодова и образложити. Временска сложеност: О(log n) Просторна сложеност: О(log n) 49/57

Израчунавање сложености рекурзивних алгоритама: int f(int n) { if (n <= 1) { return 1; } return f(n - 1) + f(n - 1); } 50/57

Израчунавање сложености рекурзивних алгоритама: int f(int n) { if (n <= 1) { return 1; } return f(n - 1) + f(n - 1); } Временска сложеност О(2 n ) Просторна сложеност О(n) 51/57

Израчунавање сложености рекурзивних алгоритама: 52/57

Израчунавање сложености рекурзивних алгоритама: Временска сложеност О(2 n ) Просторна сложеност О(n) 53/57

Израчунавање сложености рекурзивних алгоритама: 54/57

Израчунавање сложености рекурзивних алгоритама: Временска сложеност О(2 n/2 ) Просторна сложеност О(n) 55/57

Израчунавање сложености рекурзивних алгоритама: 56/57

Израчунавање сложености рекурзивних алгоритама: Временска сложеност О(4 n/2 )= О(2 n ) Просторна сложеност О(n) 57/57