Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Nem determinisztikusság és párhuzamosság. A nem determinisztikusság a párhuzamosságban gyökeredzik. Példa: S par  parbegin x:=0   x:=1   x:=2 parend;

Hasonló előadás


Az előadások a következő témára: "Nem determinisztikusság és párhuzamosság. A nem determinisztikusság a párhuzamosságban gyökeredzik. Példa: S par  parbegin x:=0   x:=1   x:=2 parend;"— Előadás másolata:

1 Nem determinisztikusság és párhuzamosság. A nem determinisztikusság a párhuzamosságban gyökeredzik. Példa: S par  parbegin x:=0   x:=1   x:=2 parend; Tetszőleges sorrendet eredményezhet a végrehajtás. S ndet  if true  x:=0 true  x:=1 true  x:=2 fi; A legnagyobb közös osztó megtalálása: GCD: while x  y do if x  y then x:= x-y else y:= y-x fi od; GCD': do x  y  x:= x-y y  x  y:= y-x od; Olvasmányosabb megoldás.

2 Nem determinisztikus program. Szintaxis. 1.) Szekvenciális nem determinisztikus program: S::= skip  u  t  S 1 ;S 2  if  1  S 1...  1  S n fi  do  1  S 1...  n  S n od; Speciális esetek: if  then S 1 else S 2 fi : if  S 1 ~   S n fi ; when  do S od : do   S od ; 2.) Szekvenciális nem determinisztikus program exit iterációval: S::= skip   u  t  S 1 ;S 2  if S 1... S n fi  do S B S E exit od; S B :  1  S 1...  n  S n ;

3 A nem determinisztikus ciklus szintakszisának induktív definíciója: Jelölje  azt a nem determinisztikus programot, amelyre: (  )(M[  ](  )=  ); (do  1  S 1...  1  S n od) 0 =  ; (do  1  S 1...  1  S n od) k+1= if do  1  S 1...  1  S n od; (do  1  S 1...  1  S n od) k (~  1 ...  ~  n )  skip fi;

4 3.) párhuzamos nem determinisztikus program: S::= skip   u  t  S 1 ;S 2  if  1  S 1...  1  S n fi  do  1  S 1...  n  S n od  parbegin S 1  S 2 parend; Atomic program:  S  ; A nem determinisztikus kiválasztás if  1  S 1...  1  S n fi utasítás esetén: Az  i  S i őrfeltétetles utasítás kiválasztása végrehajtásra: Ha valamelyik  i értékre igaz, akkor a kiértékelés után S i végrehajtódik és az if...fi utasítás végrehajtása befejeződik. Ha több  i értéke is igaz, akkor véletlenszerű kiválasztásra kerül sor. Ha minden i  {1,..., n} esetén  i értéke hamis, akkor az utasítás végrehajtása hibajelzést eredményez, abortál.

5 Nem determinisztikus iteráció: do  1  S 1...  n  S n od utasítás esetén: Az  i  S i őrfeltételes utasítás kiválasztása végrehajtásra: Ha valamelyik  i értékre igaz, akkor a kiértékelés után S i végrehajtódik. Ha több  i értékre is igaz, akkor véletlenszerű kiválasztásra kerül sor. A fenti eljárás mind addig ismétlődik, amíg van olyan  i, amelynek értéke igaz. Ha minden i  {1,..., n} esetén  i értéke hamis, akkor a do... od utasítás végrehajtása befejeződik.

6 Szemantika. Szemantika definiálása állapot átmenetek axiómáival:  i = "true"   if  1  S 1...  n  S n fi,    S i,  ; (i=1,...,n). (  i  {1,...,n})(  i = "false")   if  1  S 1...  n  S n fi,    E,fail  ; (  E,fail  hiba konfiguráció és nincs rákövetkezője!)  i = "true"   do  1  S 1...  1  S n od,    S i ; do  1  S 1...  1  S n od,  ; (i=1,...,n). (  i  {1,...,n})(  i = "false")   do  1  S 1...  1  S n od,    E,  ;

7 Definíció. Adott S nem determinisztikus program és . Az S nem determinisztikus program  kezdeti állapotból elindítva hibás, ha létezik olyan kiszámítása, amely (S',fail) hiba konfigurációban végződik. Definíció. Adott S nem determinisztikus program és . Az S nem determinisztikus program parciális helyességi szemantikája: M[S](  ) ={   S,    E,  }; Az S nem determinisztikus program teljes helyességi szemantikája: M tot [S](  ) = M[S](  )  {  S divergál  kezdeti értékből indítva   {fail  S hibás  kezdeti értékből indítva  ;

8 Adott S nem determinisztikus program és  esetén: M tot [S](  ) vagy véges, vagy tartalmazza  virtuális állapotot. Indoklás a König lemma alapján. M tot [if  then S 1 else S 2 fi] = M tot [if   S 1 ~   S 2 fi]; M tot [while  do S od] = M tot [do   S od]; if  then S 1 else S 2 fi  if   S 1 ~   S 2 fi; while  do S od  do   S od; M tot [ if  then S fi ]  M tot [ if   S fi ]; nincs failvan fail

9 Transzformáljuk át a párhuzamos programot nem determinisztikus programmá. Módszer: Adva S  parbegin S 1 ...  S n parend; Vezessünk be egy pc i integer változót minden S i komponenshez. Ez a változó modellezi a programszámlálóját az S i végrehajtása során. Ez a számláló mindenkor az S i komponensen belül végrehajtandó következő atomi utasításra mutat. A pozíciók az S i komponensen belül 0,1,...; Az S i befejezési pontját azonosítsa termi. S i komponensben az atomi akciók "címeinek" halmaza: POS i

10 Példa: Pozitív értékű elem gyors keresése az a[1:N] tömbben. Specifikáció: (1  k  N+1  (i, 0  i  k)((a[i]  0  k  N)  a[k]  0); FINDPOS  i:=1 ; j:=2; oddtop:=N+1; eventop:=N+1; parbegin S 1  S 2 parend; S 1  while i  min(oddtop,eventop) do if a(i)  0 then oddtop:= i else i:= i+2 fi; od; S 2  while j  min(oddtop,eventop) do if a(j)  0 then oddtop:= j else j:= j+2 fi; od; Owicki and Gries [1976]

11 Példa. S  parbegin S 1  S 2 ; S 1  while i  min(oddtop,eventop) do 0 if a(i)  0 then oddtop:= i else i:= i+2 fi 1 23 od; 4 S 2  while j  min(oddtop,eventop) do 0 if a(j)  0 then oddtop:= j else j:= j+2 fi 1 23 od; 4 term 1 =4; term 2 = 4; POS1 = POS2 = {0,1,2,3,4};

12 S 1  while i  min(oddtop,eventop) do 0 if a(i)  0 then oddtop:= i else i:= i+2 fi 1 23 od; 4 T 1 : do pc 1 := 0  i  min(oddtop,eventop)  pc 1 := 1; pc 1 := 0  ~(i  min(oddtop,eventop))  pc 1 := 4; pc 1 := 1  a[i]  0  pc 1 := 2; pc 1 := 1  ~(a[i]  0 )  pc 1 := 3; pc 1 := 2  oddtop:= i; pc 1 := 0; pc 1 := 3  i:= i+2; pc 1 := 0;

13 S 2  while j  min(oddtop,eventop) do 0 if a(j)  0 then oddtop:= j else j:= j+2 fi 1 23 od; 4 do pc 2 := 0  j  min(oddtop,eventop)  pc 2 := 1; pc 1 := 0  ~(j  min(oddtop,eventop))  pc 2 := 4; pc 1 := 1  a[j]  0  pc 2 := 2; pc 1 := 1  ~(a[j]  0 )  pc 2 := 3; pc 1 := 2  oddtop:= j; pc 2 := 0; pc 1 := 3  j:= j+2; pc 2 := 0; term 1 = 4; term 2 = 4;

14 A nem determinisztikus program: T 1  pc 1 := 0; pc 2 := 0; do pc 1 := 0  i  min(oddtop,eventop)  pc 1 := 1; pc 1 := 0  ~(i  min(oddtop,eventop))  pc 1 := 4; pc 1 := 1  a[i]  0  pc 1 := 2; pc 1 := 1  ~(a[i]  0 )  pc 1 := 3; pc 1 := 2  oddtop:= i; pc 1 := 0; pc 1 := 3  i:= i+2; pc 1 := 0; pc 2 := 0  j  min(oddtop,eventop)  pc 2 := 1; pc 2 := 0  ~(j  min(oddtop,eventop))  pc 2 := 4; pc 2 := 1  a[j]  0  pc 2 := 2; pc 2 := 1  ~(a[j]  0 )  pc 2 := 3; pc 2 := 2  oddtop:= j; pc 2 := 0; pc 2 := 3  j:= j+2; pc 2 := 0; od;

15 M, M tot ; N. N[S] monoton: (X  Y   )  N[S](X)  N[S](Y); N[S 1 ; S 2 ](X) = N[S 2 ](N[S 1 ](X)); N[(S 1 ; S 2 ); S 3 ](X) = N[(S 1 ; (S 2 ; S 3 )](X); M[(if  1  S 1...  n  S n fi)](X) = M[(S 1 )](X  [  1 ]) ...  M[(S n )](X  [  n ]); (X  ([  1 ]) ...  [  n ]))  M tot [(if  1  S 1...  n  S n fi)](X) = M tot [(S 1 )](X  [  1 ]) ...  M tot [(S n )](X  [  n ]); M[(do  1  S 1...  n  S n od)] = M [do  1  S 1...  n  S n ) 1 ] ...  M [do  1  S 1...  n  S n )  ];

16 A segély kiosztásának nem determinisztikus programja. Adva három csoport: a, b, c, akik között ki kell osztani N darab segélyt. A szeretetszolgálat osztja ki az ajándékot. Véletlenszerű az, hogy a soron következő segélyt melyik csoport kapja, de egymás után közvetlenül kétszer ugyan az a csoport nem kaphat segélyt. A csoportok által megkapott segélyek száma legyen mindenkor xa = count(a,ex); xb = count(b,ex); xc = count(c,ex); Ezek kezdőértéke: xa = xb = xc = 0. A kiosztható segélyek száma mindenkor: r = N - (xa + xb + xc ). Így r kezdőértéke: r = N.

17 A mindenkor utoljára megajándékozott azonosítóját jelölje f  {a,b,c}. f kezdőértéke: f = a. A követelmények alapján: Az a csoport kaphat mindenkor segélyt, amelyik nem a legutoljára megajándékozott volt és van még segély: (f  a)  r  0; Készítsük el a kiosztás szimulálásának a nem determinisztikus programját.

18 kiosztás= (xa  0; xb  0; xc  0; f  a; r  N; átad; átad = do r  0  if f  a   (xa,r)  (xa+1, r-1)  ;  f  a  f  b   (xb,r)  (xb+1, r-1)  ;  f  b  f  c   (xc,r)  (xc+1, r-1)  ;  f  c  fi od;

19 A szemantika definiálásának másik módja a program-stuktúrák tranzakciós diagramjának megadása. S: u  e; ST: ({s,t},{(s, "true"  (u  e), t)}, s, t); "true"  (u  e) st S: S 1 ;S 2 ; S 1 T: (L 1,T 1, s, r); S 2 T: (L 2,T 2, r, t); Ha L 1  L 2 = {r}, akkor ST = S 1 T; S 2 T = (L 1  L 2, T 1  T 2, s, t); S1TS1T S2TS2T srt

20 S: if  then S 1 else S 2 fi; ({s, t},{(s,   (u  f S 1 ), t), (s, ~   (u  f S 2 ), t)},s,t);   f S 1 ~   f S 2 s t S: if   S 1  ~   S 2 fi;   S 1 T: (L 1,T 1,s,t); ~   S 2 T: (L 2,T 2,s,t); Ha L 1  L 2 = {s,t}, Akkor ST = (L 1  L 2, T 1  T 2, s,t). ST 1 ST 2 st

21 S = while  do S B od; ({s, t},{(s,   (u  f S B ), s), (s, ~   skip, t)}, s, t ); ~   skip   f S B st S = while  do S B od; S = do   S B ~   S E ; exit od; S B T = (L B, T B, s, t); S E T: (L E,T E,s,t); L B  L E = {s}; ST: (L B  L E, T B  T E, s, t); S E = skip.   S B T ~   S E T st


Letölteni ppt "Nem determinisztikusság és párhuzamosság. A nem determinisztikusság a párhuzamosságban gyökeredzik. Példa: S par  parbegin x:=0   x:=1   x:=2 parend;"

Hasonló előadás


Google Hirdetések