UL/FRI/VSP-RI/OAPS2/Vaje/2006-05-15:B-D

Iz E-študij, proste zakladnice študentskega znanja

< UL | FRI | VSP-RI | OAPS2
Skoči na: navigacija, iskanje

Vaje z dne Napaka: neveljaven čas
UL/FRI/VSP-RI/OAPS2


Vodil: ni podatka glej podobne vaje

Iskanje najkrajših poti v usmerjenem grafu

  • najkrajše poti od izbrane točke do vseh drugih
  • dolžina povezave (a,b) naj bo c(a,b)
  • rekurzivna definicija
t(a,a) = 0
t(a,c) = min_{(a,b) \in E} [ c(a,b) + t(b,c) ]
  • za nenegativne cene Dijkstrin algoritem
  • požrešno delovanje, uporablja prioritetno vrsto
  • če algoritem spremenimo, da uporablja največje razdalje, ga lahko uporabimo za izračun kritične poti)],(),([

Simulacija algoritma Dijkstra

  • izpišimozaporedje stanj prioritetne vrste, implementirane s kopico
  • izpisujemo (vozlišče, parent,distance)
  • vozlišča, ki jih vzamemo iz prioritetne vrste, vsebujejo rezultat

FRI VSP OAPS2 Vaje 2006-05-15 B-D 1.png

Rešitev dobimo s kopico:

FRI VSP OAPS2 Vaje 2006-05-15 B-D 2.png

FRI VSP OAPS2 Vaje 2006-05-15 B-D 3.png

FRI VSP OAPS2 Vaje 2006-05-15 B-D 4.png

FRI VSP OAPS2 Vaje 2006-05-15 B-D 5.png

FRI VSP OAPS2 Vaje 2006-05-15 B-D 6.png

dobimo drevo najkrajših poti

FRI VSP OAPS2 Vaje 2006-05-15 B-D 7.png


FRI VSP OAPS2 Vaje 2006-05-15 Jerc.png

Prioritetna vrsta brez kopice:

vedno vzamemo najmanjšo

(a,-,0)

(b,a,4) (c,a,9)

(c,a,9) (e,b,15) (d,b,11)

(e,b,15) (d,b,11) (g,c,27)

(e,b,15) (g,c,27) (f,d,16)

(g,c,27) (f,d,16) (h,e,33)

(g,f,23) (h,e,33) (i,f,19)

(g,f,23) (h,e,33)

(h,e,33)

Dobimo rešitev:

FRI VSP OAPS2 Vaje 2006-05-15 B-D 8.png

Dokazovanje pravilnosti programov

preverjanje pravilnosti

  • branje in razumevanje
  • testiranje na izbrani množici testnih podatkov
  • formalno dokazovanje


program f: X →Z preslika vhodne podatke <x1, x2, ... xn> ∈X v izhodne <z1, z2, ... zm> ∈Z

začetni pogoj Φ(x1,x2,...xn) –kakšni so lahko podatki

izhodni pogoj Ψ(z1,z2,...zm,x1,x2,...xn) –kakšen mora biti rezultat

Pravilnost programa

parcialna pravilnost
če se za vse vhodne podatke, ki izpolnjujejoΦ ustavi, izhodni podatki pa izpolnjujejo Ψ
totalna pravilnost
če je parcialno pravilen in se za vse vhodne podatke, ki izpolnjujejo Φustavi po končnemštevilu korakov

Prireditev

// P(izraz)
y = izraz;
// P(y)
//2x + 5 % 2 = 0
y = 2x + 5
//y % 2 = 0

Izbira

// P(y)
if(Pogoj(y))
// P(y) \landPogoj(y)}
St ;
else
// P(y) \land¬Pogoj(y)
Se ;

//2x + 5 % 2 = 0
if (x + 3 > 10)
  // 2x+5 % 2 \land x + 3 > 10
  St;
else
  // 2x+5 % 2 \land \lnot x + 3 > 10
  Se;

Zanka

// P1(y)
while(Pogoj(y)) {
  // zai-to izvajanjePi(y) ∧Pogoj(y)}
  S ;
  // Pi + 1(y)
}
// Pk(y) \land \lnotPogoj(y)

pogoj Pi + 1(y) izpeljemoiz Pi(y)  \land Pogoj(y)
Pk(y) je odvisen od števila izvajanj zanke

Zaporedje

// P0(y) S1;S2; ... Sk; // Pk(y) pri čemer P_i+1(y) izpeljemo iz P_i(y)


Združitev več poti izvajanja

if... St// P_t(y)}
  else Se // P_e(y)}
//Pt(y) \lorPe(y)

if (x>3)
  St //x>10;
else
  Se; // x%2 = 0;
 x > 10 \lor X % 2 = 0
Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja