Analiza Slozenosti Algoritma

27
© Ivan Bilobrk Odjel za Informa6ku PMFST Strukture podataka i algoritmi 2011/2012 STRUKTURE PODATAKA I ALGORITMI analiza složenos6 algoritma

description

Strukture podataka i algoritmi

Transcript of Analiza Slozenosti Algoritma

Page 1: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi 2011/2012

STRUKTURE  PODATAKA  I  ALGORITMI

analiza  složenos6  algoritma

Page 2: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ALGORITAM

• ideja  algoritma  je  fundamentalna  za  programirnje

• riječ  algoritam  izvedena  je  iz  riječi  algorism  koja  dolazi  od  la6niziranog  imena  poznatog  perzijskog  matema6čara  koji  je  živio  u  9.  stoljeću  a  zvao  se                              Abu  Abd  Allah  Muhammad  ibn  Musa  al-­‐Khwarizmi

• doslovni  prijevod  bi  bio:  “otac  Abdulaha,  Muhamed,  sin  Muse,  iz  Khwarizma”  

• Khwarizm  je  staro  ime  danas  poznatojeg  Aralskog  mora  u  središnjoj  aziji.  

• ovaj  mateam6čar  zaslužan  je  za  izum  algebre  i  uvođenje  jednadžbi  u  matema6ku

2

Page 3: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ALGORITAM

• u  pedese6m  godinama  prošlog  stoljeća,  riječ  algoritam  je  bila  gotovo  jednoznačno  povezana  s  Euklidovim  algoritmom  za  pronalazak  najvećeg  zajedničkog  djelitelja  dvaju  brojeva.  

• Euklidov  (E)  algoritam:  “Za  dva  prirodna  broja  m  i  n,  odredi  njihov  najveći  zajednički  djelitelj  tj.  najveći  prirodni  broj  koji  istovremeno  dijeli  i  m  i  n”

1. [pronađi  ostatak]  -­‐  Ako  je  n  >  m  tada  ih  zamijeni.  Neka  je  r  ostatak  pri  dijeljenju  m  sa  n.  Moguće  vrijednos6  od  r  su  0,  1,  2,  ...  ,  n-­‐1.  

2. [je  li  ostatak  0?]  -­‐  Ako  je  r  =  0  algoritam  se  završava,  a  rješenje  je  broj  n.

3. [reduciraj]  -­‐  Postavi  prvo  m  na  n,  a  potom  n  na  r.  Vra6  se  na  korak  1.

• Redoslijed  u  3.  koraku  je  iznimno  bitan.  Zašto?

• Provjerimo  za  proizvoljne  brojeve  m  i  n.

3

Page 4: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ALGORITAM

• Algoritam  se  može  iskaza6  (pseudo)kodom  ali  i  dijagramom  toka.  

4

Page 5: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ALGORITAM

• Često  se  kaže  da  je  značenje  riječi  algoritam  istovjetno  značenju  riječi  recept,  proces,  metoda,  tehnika,  procedura,  ruAna  i  sl.

• Konotacija  je  ipak  malo  drugačija.  

• Osim  što  algoritam  predstavlja  konačan  skup  pravila  koja  se  izvode  u  određenom  slijedu  s  ciljem  rješavanja  nekog  problema,  algoritam  ima  pet  važnih  osobina:

-­‐ Konačnost

-­‐ Definiranost

-­‐ Ulaz

-­‐ Izlaz

-­‐ Učinkovitost

5

Page 6: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ALGORITAM

• Učinkovitost

-­‐ algoritam  se  uvijek  mora  završi6  nakon  konačnog  broja  koraka.  

-­‐ Euklidov  algoritam  zadovoljava  ovaj  uvjet

‣ nakon  1.  koraka,  vrijednost  od  r  je  manja  od  n‣ ako  r  nije  0,  budući  da  će  u  3.  koraku  n  poprimi6  tu  vrijednost,  u  ponovnom  1.  koraku  će  n  bi6  manji

‣ ovaj  padajući  niz  prirodnih  brojeva  (n1,  n2,  n3)  se  mora  kad  tad  prekinu6  tj.  kad  tad  će  r  bi6  0‣ to  znači  da  će  se  nakon  konačno  mnogo  koraka  pronaći  djelitelj.  

6

Page 7: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ALGORITAM

• Definiranost

-­‐ svaki  korak  algoritma  mora  bi6  precizno  definiran,  a  sve  radnje  koje  se  provode  moraju  bi6  jednoznačne  za  svaki  mogući  slučaj

-­‐ Euklidov  algoritam  zadovoljava  ovaj  uvjet

‣ podrazumijeva  se  da  je  onome  tko  provodi  algoritam  jasno  što  to  znači  podijeli6  prirodan  broj  drugim  prirodnim  brojem.  

‣ isto  tako,  potrebno  je  da  su  6  brojevi  zaista  prirodni  brojevi‣ ovo  je  u  početnom  koraku  svakako  is6na  jer  algoritam  primjenjujemo  na  prirodne  brojeve,  a  nakon  1.  koraka  r  je  nenega6van  cijeli  broj  koji  mora  bi6  prirodan  ako  će  bi6  3.  koraka.

7

Page 8: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ALGORITAM

• Ulaz

-­‐ Algoritam  mora  ima6  ulazne  podatke  

-­‐ Euklidov  algoritam  zadovoljava  ovaj  uvjet

‣ brojevi  m  i  n  su  dani  od  strane  korisnika

8

Page 9: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ALGORITAM

• Ulaz

-­‐ Algoritam  mora  ima6  ulazne  podatke  

-­‐ Euklidov  algoritam  zadovoljava  ovaj  uvjet

‣ brojevi  m  i  n  su  dani  od  strane  korisnika

• Izlaz

-­‐ Algoritam  mora  ima6  jedan  ili  više  izlaznih  podataka,  usko  povezanih  s  ulaznim  podacima

-­‐ Euklidov  algoritam  zadovoljava  ovaj  uvjet

‣ broj  n  iz  2.  koraka  je  najveći  zajednički  djelitelj  početnih  brojeva  m  i  n‣ ovo  je  lako  provjeri6  budući  da  je  prema  Lemi  o  dijeljenju  m  =  q*n  +  r  ‣ kako  je  za  ulaz  u  2.  korak  nužno  da  r  bude  jednak  0,  tada  je  n  očito  djelitelj  od  m.

9

Page 10: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ALGORITAM

• Učinkovitost

-­‐ Algoritam  mora  bi6  učinkovit,  i  to  u  smislu  da  njegove  radnje  moraju  bi6  dovoljno  jednostavne  da  ih  netko,  u  konačno  mnogo  vremena,  može  napravi6  koristeći  olovku  i  papir.  

-­‐ Euklidov  algoritam  zadovoljava  ovaj  uvjet

‣ podrazumijevane  operacije  jesu  dijeljenje  i  oduzimanje  prirodnih  brojeva  što  je  sasvim  moguće  izves6  na  papiru

‣ da  se  radi  o  dijeljenju  realnih  brojeva  to  ne  bi  bilo  moguće

10

Page 11: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ALGORITAM

• Usporedimo  algoritam  i  recept

• Recept  uglavnom  posjeduje  

-­‐ konačnost  (mada  voda  nikad  neće  uzavrije6  pukim  gledanjem)

-­‐ ulaz  (jaja,  brašno,  ...)

-­‐ izlaz  (večera,  kolač,...)

• Nedostaje  mu  definiranost

-­‐ dodajte  prstohvat  soli

‣ prstohvat  je  dobro  definiran  pojam,  kao  i  sol,  ali  nisu  svi  prs6  is6,  nit  je  sva  sol  ista‣ gdje  doda6  tu  sol?  na  vrh?  na  dno?  sa  strane?

-­‐ nježno  promiješajte  dok  smjesa  ne  bude  izmrvljena  

-­‐ zagrijte  mlijeko  u  malom  lončiću

11

Page 12: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ALGORITAM

• Svojstvo  konačnos6  u  praksi  i  nije  toliko  primjereno.  

• “Na  cijeni”  su  algoritmi  s  razumno  mnogo  koraka

-­‐ algoritam  koji  određuje  hoće  li  bijeli  uvijek  pobijedi6  crnog  u  šahu  ako  ne  napravi  nijednu  pogrešku  se  može  završi6  u  konačno  mnogo  koraka,  ali  broj  6h  koraka  je  toliko  velik  da  ga  možda  nećemo  doseći  za  našeg  života.  

• Potrebni  su  nam  algoritmi  koji  su  dobri  ma  šta  god  to  značilo

-­‐ koliko  puta  se  svaki  korak  izvršio

-­‐ prilagodba  algoritma  na  različita  računala

-­‐ jednostavnost

-­‐ elegancija

-­‐ ...

• Ovo  vodi  nečem  jako  zanimljivom  -­‐  analizi  algoritma

12

Page 13: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ALGORITAM

• Promotrimo  Euklidov  algoritam  s  ovog  stajališta

• Ako  se  zapitamo:  “Pod  pretpostavkom  da  je  vrijednost  broja  n  poznata,  dok  m  može  poprimi6  bilo  koju  vrijednost  iz  skupa  prirodnih  brojeva,  koliki  je  prosječni  broj  Tn  izvršavanja  1.  koraka  Euklidovog  algoritma”

• Budući  da  razmatramo  sve  prirodne  brojeve  m  (njih  alef  nula)  potrebno  je  prvo  provjeri6  postoji  li  smislen  odgovor  na  ovo  pitanje

• Očito  je  da  je  nakon  prvog  izvođenja  1.  koraka  Euklidovog  algoritma  bitan  samo  ostatak  dijeljenja  m  sa  n,  tako  da  je  za  pronaći  Tn  dovoljno

-­‐ proves6  algoritam  za  m  =  1,  m  =  2,  ...,  m  =  n  

-­‐ pobroji6  koliko  puta  se  izvršio  1.  korak

-­‐ podijeli6  taj  broj  s  n

• Sada  je  važno  odredi6  prirodu  tog  broja  Tn    odnosno  izrazi6  ga  preko  n

13

lnn12 ln2π 2

Page 14: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ANALIZA  ALGORITMA

• Algoritam  M:  Za  dani  niz  brojeva  x[1],  x[2],  ...  ,  x[n]  odredi  m  i  j  takve  da  vrijedi  m  =  x[j]  koji  je  maksimalni  element  tog  niza,  pri  čemu  je  j  najveći  indeks  koji  zadovoljava  ovaj  uvjet.  

M1  [Inicijaliziraj]  j  =  n,  k  =  n-­‐1,  m  =  x[n]

M2  [Provjera]  ako  je  k  =  0  algoritam  završava

M3  [Usporedba]  ako  je  x[k]  <=  m  idi  na  M5

M4  [Promijeni  m]  j  =  k,  m  =  x[k]

M5  [Smanji  k]  k  =  k  -­‐  1  i  idi  na  M2

14

Page 15: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ANALIZA  ALGORITMA

• Brojevi  na  strelicama  označavaju  koliko  puta  se  ide  6m  putem

• Algoritam  M  zah6jeva  fiksnu  količinu  memorije,  tako  da  ćemo  analizira6  samo  vrijeme  potrebno  za  njegovo  izvršavanje.  

• U  tu  svrhu  pobrojit  ćemo  koliko  puta  će  se  svaki  od  koraka  izvrši6

-­‐ M1  =  1

-­‐ M2  =  n

-­‐ M3  =  n-­‐1

-­‐ M4  =  A

-­‐ M5  =  n-­‐1

15

ovdje  poznajemo  sve  veličine  osim  ovog  čudnovatog  broja  A

Page 16: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ANALIZA  ALGORITMA

• Analiza  algoritma  se  uglavnom  sastoji  od  pronalaska

-­‐ minimalne  vrijednos6  od  A  (za  op6miste)

-­‐ maksimalne  vrijednos6  od  A  (za  pesimiste)

-­‐ prosječne  vrijednos6  od  A  (za  one  koji  vole  vjerojatnost)

-­‐ standardnu  devijaciju  od  A  (kvan6ta6vna  indikacija  koliko  blizu  prosjeka  očekujemo  da  će  A  bi6)

• Minimalna  vrijednost  od  A  je  0  -­‐  za  slučaj  da  je  

• Maksimalna  vrijednost  od  A  je  n-­‐1  -­‐  za  slučaj  da  je  

16

x n[ ] = max1≤k≤n

x k[ ]

x 1[ ] > x 2[ ] > > x n[ ]

Page 17: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ANALIZA  ALGORITMA

• Dakle  prosječna  vrijednost  leži  negdje  između  0  i  n-­‐1

• Za  odredi6  ovo,  potrebno  je  prvo  definira6  što  se  točno  podrazumijeva  pod  prosjek,  a  za  dobro  definira6  prosjek  potrebno  je  napravi6  određene  pretpostavke  o  ulaznim  podacima.  

-­‐ pretpostavimo  da  su  svi  elemen6  x[k]  međusobno  različi6

-­‐ pretpostavimo  da  je  svaka  od  n!  permutacija  ovih  elemenata  jednako  vjerojatna

• Učinkovitost  algoritma  M  ne  ovisi  o  preciznim  vrijednos6ma  x[k]  već  o  njihovom  međusobnom  odnosu.  

17

Page 18: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ANALIZA  ALGORITMA

• Primjerice,  za  n  =  3,  držimo  da  je  svaki  od  6  odnosa  jednako  vjerojatan:

• Prosječna  vrijednost  od  A,  kada  je  n  =  3  ispada  (0+1+0+1+1+2)/6  =  5/6

18

x 1[ ] < x 2[ ] < x 3[ ]x 1[ ] < x 3[ ] < x 2[ ]x 2[ ] < x 1[ ] < x 3[ ]x 2[ ] < x 3[ ] < x 1[ ]x 3[ ] < x 1[ ] < x 2[ ]x 3[ ] < x 2[ ] < x 1[ ]

Odnos A0

1

0

1

1

2

Page 19: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ANALIZA  ALGORITMA

• Vjerojatnost  da  A  ima  vrijednost  k  će  bi6

• Iz  tablice  je  vidljivo  da  je  

• Prosječna  vrijednost  se  definira  kao  

19

An = kpnkk∑

pnk =broj permutacija od n objekata za koje je A = k

n!

p30 =13, p31 =

12, p32 =

16

Page 20: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ANALIZA  ALGORITMA

• Varijanca  Vn  se  definira  kao  prosječna  vrijednost  od  

• Konačno,  standardna  devijacija  je  definirana  s

20

σ n = Vn

A − An( )2

Vn = k − An( )2 pnkk∑ = k2 pnk − 2An kpnk

k∑ + An

2 pnk =k∑

k∑

= k2 pnk − 2AnAn + An2 =

k∑ k2 pnk − An

2

k∑

Page 21: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ASIMPTOTSKI  PRIKAZ

• Često  znamo  iskaza6  neku  veličinu  aproksima6vno  a  ne  precizno,  a  to  činimo  kako  bi  ju  usporedili  s  nekom  drugom.  

• To  je  zgodno  jer  nam  često  nije  potrebno  zna6  precizno  kakve  su  te  veličine  već  samo  kojeg  su  reda

• 1894.  godine  u  svom  djelu  AnalyAsche  Zahlentheorie,  matema6čar  Paul  Bachman  je  uveo  vrlo  zgodan  zapis  za  aproksimacije.  

• Radi  se  o  O-­‐notaciji  a  koja  omogućuje  da  se  znak  jednakos6  zamjeni  znakom  ≈

• Općenito  govoreći,  zapis                                                se  može  koris66  kada  god  je                            funkcija  prirodnog  broja  n.

-­‐ predstavlja  veličinu  koja  nije  eksplicitno  poznata  ali  svakako  nije  prevelika.    

21

O f n( )( ) f n( )

Page 22: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ASIMPTOTSKI  PRIKAZ

• Svaki  put  kada  se  pojavi                                              to  znači  

-­‐ da  postoje  pozi6vne  konstante  M  i  n0    takve  da  broj  xn  koji  je  predstavljen  izrazom

zadovoljava  uvjet                                                          za  sve  prirodne    brojeve  

-­‐ nigdje  se  te  konstante  ne  preciziraju,  budući  da  su  za  različite  za  svaku  upotrebu  

-­‐ samo  se  podrazumijeva  da  postoje

• Primjerice,  znamo  da  je  

• Odavde  slijedi  da  možemo  reći  kako  je  

22

O f n( )( )O f n( )( )

xn ≤ M f n( ) n ≥ n0O f n( )( )

12 + 22 + ...+ n2 = 13n3 + 1

2n2 + 1

6n

12 + 22 + ...+ n2 = O n4( )12 + 22 + ...+ n2 = O n3( )12 + 22 + ...+ n2 = 1

3n3 +O n2( )

Page 23: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ASIMPTOTSKI  PRIKAZ

• O-­‐notacija  je  od  velike  koris6  pri  radu  s  aproksimacijama  budući  da  na  vrlo  sažet  način  opisuje  pojavu  koja  se  često  ponavlja  te  po6skuje  detalje  koji  su  često  nevažni.  

• Nadalje,  račun  s  O-­‐notacijom  je  prilično  jednostavan,  s  6m  da  valja  reći  kako  se  radi  isključivo  o  jednosmjernim  jednadžbama

• Npr.  

• Krivo  bi  bilo  tvrdi6  da  je  

• Imate  li  ideju  zašto?

23

12n2 + n = O n2( )

O n2( )= 12 n2 + n

Page 24: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ASIMPTOTSKI  PRIKAZ

• Evo  i  nekoliko  jednostavnih  pravila  za  rad  s  O-­‐notacijom

24

Page 25: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ASIMPTOTSKI  PRIKAZ

• Pri  analizi  algoritma,  često  je  važno  kaza6  kako  se  algoritam  ponaša  pri  najgorem  slučaju,  odnosno  pri  slučaju  kada  je  potrebno  izvrši6  najviše  koraka.

• O-­‐notacija  nam  tu  uvelike  pomaže,  budući  da  se  njome  iskazuje  upravo  to

-­‐ broj  koraka  algoritma  pri  najgorem  slučaju

• Valja  naglasi6  da  kako  je  sama  O-­‐notacija  aproksima6vnog  6pa,  tako  će  dva  algoritma  koja  za  svoje  izvršenje  nad  n  ulaznih  podataka  imaju  različitu  složenost,  možda  ima6  istu  O-­‐notaciju

25

Page 26: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ASIMPTOTSKI  PRIKAZ

• Promotrimo  funkcije  f  i  g  koje  za  n  ulaznih  parametara  opisuje  potreban  broj  koraka  za  izvršenje  nekog  algoritma

• Kako  se  n  povećava,  to  će  konstante  posta6  zanemarive  a  samo  najbrže  rastući  član  će  bi6  vrijedan  spomena

26

f (n)= n2 +1.3n lnn + 4n +125 g(n)= n2

Page 27: Analiza Slozenosti Algoritma

©  Ivan  Bilobrk  -­‐  Odjel  za  Informa6ku  -­‐  PMFSTStrukture  podataka  i  algoritmi /  27

ASIMPTOTSKI  PRIKAZ

• Važno  je  zapam66

-­‐ potencije  od  n  rastu  brže  od  logaritma  od  n

-­‐ veća  potencija  znači  brži  rast

-­‐ eksponencijalne  funkcije  rastu  brže  od  potencija  od  n

-­‐ faktorijeli  rastu  brže  od  eksponencijalnih  funkcija

27