spaţio-temporale
2016-2017 Dezvoltarea aplicaţiilor interactive
1 / 47
Cuprins
2 Dualitatea spaţiu-timp
4 Specificaţii spaţio-temporale
2 / 47
Modelarea inter-acţiunii prin griduri
3 / 47
Modelarea inter-acţiunii prin griduri
4 / 47
..Modelarea
..Modelareainter-actiunii cu cu
inter-actiunii griduri
griduri
Modelarea inter-acţiunii prin griduri
Actiune
Actiune vs. vs.inter-actiune:
inter-actiune: AvemAvemmaimaijos jos
două
douăprocese (fire(fire
procese de de
execuţie)
Avem mai (a) (a)
execuţie)jos şi (b)
două carecare
şi (b) interacţionează
procese a şi b care şi reprezentarea
interacţionează şi reprezentarea
interacţionează şi interacţiei
interacţiei
reprezentarea
interacţiei
lor cu lor cu un grid.
lor un
cu grid.
un grid.
(i) o(i)interacţiune
o interacţiune (ii) (ii)
gridul corespunzător
gridul corespunzător
(i) o interacţiune (ii) gridul corespunzător
a ab b a ab b
X XY Y X XY Y
Z Z Z Z
a ab b a ab b
SlideSlide
7.9 7.9 CS-52xx / Dezvoltarea
CS-52xx Aplicatiilor
/ Dezvoltarea Interactive,
Aplicatiilor Sem.2
Interactive, / G Stefanescu
Sem.2 / G Stefanescu
5 / 47
Modelarea inter-acţiunii prin griduri
6 / 47
Dualitatea spaţiu-timp
7 / 47
DualitateST-Dual
spaţiu-timp
picture
space High level: x:Int, y:Array[1..10] of Int;
al picture
time
tape
High level: temporal data
memory state
stream
job requirement
Software
new job
component
new state
9 / 47
Structuri temporale de nivel ı̂nalt
Structuri temporale de nivel ı̂nalt
sLinkedList
2001 2002 2003
date cu
Date cu reprezentarea lor
reprezentarea 2003 2001 2002
uzuală
lor uzuală (spaţială):
(spaţială) tLinkedLists
sArray
sBool,sBool,
sInt,sInt, sArray,
sArray,
I will be
next week
sLinkedList, etc.
sLinkedList, etc.
tArray sInt
şi dualul lor
şi dualul lor temporal 7 3 5 3
(date cu reprezentare
temporal (i.e., date
in Singapore
in Singapore
10 / 47
Convertori spaţiu-timp
Convertori spatiu-timp; calculabilitate ı̂n spatiu
... nxy−
convertori in timp
...
... ...
spatiu-timp ... ... y
şi ...
timp-spatiu timp−spatiu spatiu−timp 2y
Convertori spaţiu-timp
folosiţi
şi timp-spaţiu pentru
folosiţi ...
a
pentru a transforma transforma n x y − calculat in spatiu
ny
calculabilitatea
calculabilitatea ı̂n timp ... ...
ı̂n calculabilitateaı̂n ı̂n timp y
spaţiu, şi invers. ı̂n
calculabilitate ... y 2y ... ny ...
ı̂n spaţiu
ny
...
11 / 47
Tipuri de date temporale
12 / 47
Date spaţiale vs. date temporale
Dimensiunea spaţială
banda Turing are şi o dimensiune temporală (ca şi celelalte tipuri de
organizare a memoriei folosite ı̂n programarea imperativă)
specific este faptul că celulele de memorie pot fi accesate ı̂ntr-un timp
constant
memorie spaţială: spaţiul potenţial nelimitat şi timpul limitat de acces
13 / 47
Date spaţiale vs. date temporale
Date temporale
vom folosi sugestia dată de dualitatea spaţiu-timp pentru a crea
structuri de date complexe ı̂n timp, implementabile pe structura
simplă de stream
aceste memorii temporale vor fi potenţial nelimitate ı̂n timp, dar cu
extensie spaţială limitată
14 / 47
Structurile de control ca date temporale
15 / 47
Regiştri
16 / 47
Stream-uri
17 / 47
Voci
Voce
se defineşte similar cu un registru
este o structură temporală de date care conţine un număr natural
vocile se pot implementa pe un stream, ca regiştrii pe o bandă Turing.
Exemplu:
O voce v care conţine 2017 este definită de o adresă temporală t0
(unde ı̂ncepe stream-ul) şi de o lungime (aici 4, dacă se foloseşte
reprezentarea zecimală).
Celula ataşata stream-ului va afişa cifrele 2, 0, 1, 7 ı̂n momentele
t0 , t0 + 1, t0 + 2, t0 + 3.
18 / 47
Voci
19 / 47
Alte date temporale
20 / 47
Specificaţii spaţio-temporale
21 / 47
Specificaţii (spaţio-temporale) relaţionale
22 / 47
Specificaţii (spaţio-temporale) relaţionale
23 / 47
Specificaţii (spaţio-temporale) relaţionale
Exemple de specificatii relationale
Exemplu
xemple: Constatele
Constantele de baza de
suntbază sunt
c0 = , c1 = , c2 = , c3 = , c4 = , c5 =
le au oEleinterpretare relaţională naturală, anume:
au o interpretare relaţională naturală, anume
/
c0 = 0;
c1 = {⟨ | x⟩ #→ ⟨ | x⟩ : x ∈ N};
c2 = {⟨x | ⟩ #→ ⟨x | ⟩ : x ∈ N};
c3 = {⟨ | x⟩ #→ ⟨x | ⟩ : x ∈ N} (convertor spaţiu-timp);
c4 = {⟨x | ⟩ #→ ⟨ | x⟩ : x ∈ N} (convertor timp-spaţiu);
c5 = {⟨x | y⟩ #→ ⟨x | y⟩ : x, y ∈ N}.
24 / 47
Specificaţii (spaţio-temporale) relaţionale
Exemple de specificatii relationale
Exemplu
xemple: Constatele
Constantele de baza de
suntbază sunt
c0 = , c1 = , c2 = , c3 = , c4 = , c5 =
le au oEleinterpretare relaţională naturală, anume:
au o interpretare relaţională naturală, anume
/ c0 = ∅
c0 = 0;
c1 = {h |xi 7→ h |xi | x ∈ N}
c1 = {⟨ | x⟩ #→ ⟨ | x⟩ : x ∈ N};
c2 = {hx| i 7→ hx| i | x ∈ N}
c2 = {⟨x | ⟩ #→ ⟨x | ⟩ : x ∈ N};
c3 = {h |xi 7→ hx| i | x ∈ N} (convertor spaţiu-timp)
c3 = {⟨c4| x⟩ #→ ⟨x | ⟩ : x ∈ N} (convertor spaţiu-timp);
= {hx| i 7→ h |xi | x ∈ N} (convertor timp-spaţiu)
c4 = {⟨x #→ ⟨i |7→x⟩hx|y
c5 |=⟩{hx|y : xi |∈x,N} (convertor timp-spaţiu);
y ∈ N}
c5 = {⟨x | y⟩ #→ ⟨x | y⟩ : x, y ∈ N}.
24 / 47
Specificaţii compuse
25 / 47
Specificaţii compuse
26 / 47
Specificarea unui joc
27 / 47
Jocul 1-2 Jocul 1-2
Exemplu
Un joc complet care se termină cu remiză:
h503040801, 060207090|000000000i 7→
h111111111, 111111111|121112212i
19 24 13
15 11 22
26 17 28
(indicii reprezintă ordinea mutărilor)
30 / 47
Specificaţie
Exemplu
O strategie mai bună pentru jucătorul 1, care câştigă:
(”*” ı̂nseamnă orice)
h50208 ∗ ∗ ∗ ∗, 06010 ∗ ∗ ∗ ∗|000000000i 7→
h11112 ∗ ∗ ∗ ∗, 11110 ∗ ∗ ∗ ∗|21 ∗ ∗12 ∗ 1∗i
24 13
11 22
15
(indicii reprezintă ordinea mutărilor)
31 / 47
Specificaţie
Exemplu
Jucătorul 2 nu face o mutare când e rândul său, deci pierde:
h5030 ∗ ∗ ∗ ∗∗, 0600 ∗ ∗ ∗ ∗ ∗ |000000000i 7→
h1112 ∗ ∗ ∗ ∗∗, 1110 ∗ ∗ ∗ ∗ ∗ | ∗ ∗1 ∗ 12 ∗ ∗∗i
Ambii jucători fac o mutare ı̂n acelaşi timp, deci jucătorul 2 pierde
deoarece nu era rândul său:
h503 ∗ ∗ ∗ ∗ ∗ ∗, 061 ∗ ∗ ∗ ∗ ∗ ∗|000000000i 7→
h112 ∗ ∗ ∗ ∗ ∗ ∗, 110 ∗ ∗ ∗ ∗ ∗ ∗| ∗ ∗1 ∗ 12 ∗ ∗∗i
32 / 47
Expresivitatea specificaţiilor
Este clar că formalismul de mai sus este suficient de puternic pentru a
permite o descriere completă a jocului.
Mai mult, se pot descrie chiar situaţii când ambii jucători mută ı̂n
acelaşi timp, dar unul uită să mute, etc.
Rămâne de văzut ı̂n ce măsură astfel de specificaţii sunt naturale şi
dacă ele pot fi implementate pe maşini reale, cu constrângeri
spaţio-temporale pentru date.
33 / 47
Specificarea unui sistem OO
34 / 47
Specificarea unui sistem OO
În particular, vom vedea că este util să specificăm sisteme deschise,
iar pentru specificarea lor avem nevoie de tipuri de date temporale de
nivel ı̂nalt.
35 / 47
Sistem OO: Bile colorate
Sistem OO: Bile colorate
Sistemul constă din bile de trei culori (roşu, gal-
: ben, albastru) situate ı̂ntr-un dreptunghi.
constă din
Bilelebile demuta
se pot 3 culori
folosind butoane de deplasare
stânga-dreapta şi sus-jos.
alben, albastru)
Culoarea unei bile se schimbă ı̂n
ntr-un dreptunghi;
roşu / galben / albastru
pot mutacandfolosind
atinge
două butoane de deplasare stânga-
(marginea din stânga-dreapta) / (un colţ) / (marginea de sus-jos)
şi sus-jos;
Pentru simplitate, dreptunghiul este 5 × 5 şi avem o singură bilă.
a unei bile se schimbă ı̂n roşu / galben / albastru când
marginea din stânga-dreapta) / (un colţ) / (marginea de
, respectiv;
36 / 47
Sistem OO: Bile colorate
Formal, folosim:
Variabile:
x – coordonata orizontală
y – coordonata verticală
z – culoarea (r /y /b reprezintă roşu/galben/albastru, resp.)
Metode:
h(u) – deplasare orizontală, unde u este
d− pentru deplasare cu o celulă la stânga
d0 pentru stat pe loc
d+ pentru deplasare cu o celulă la dreapta
v (u) – deplasare verticală, unde u este
d− pentru deplasare cu o celula ı̂n jos
d0 pentru stat pe loc
d+ pentru deplasare cu o celulă ı̂n sus
c – returnează culoarea
37 / 47
Specificaţia globală
Folosim
un registru pentru fiecare variabilă
o voce pentru fiecare metodă sau atribut
38 / 47
Specificaţia globală
Exemplu
unde
h1 = d+ d+ d0 d− d+ d− d− d0
v1 = d− d0 d+ d− d− d0 d+ d+
c10 = yrrrybbb
c1 , h10 , v10 sunt irelevante
Explicaţii:
poziţiile (cifrele) din h, v descriu starea butoanelor ı̂n fiecare moment
de timp (presupunem că butoanele sunt independente, deci orice
combinaţie este permisă)
39 / 47
Specificaţia globală
Exemplu
dacă ai este a i-a cifră a unei voci a, atunci ı̂n pasul i sistemul trece
din starea (x, y , z) ı̂n starea (x 0 , y 0 , z 0 ) prin acţiunile h1i , v1i ; folosim
notaţia
hi ,v i
1 1
x, y , z −→ x 0, y 0, z 0
secvenţa de mai sus dă starea finală şi permite calculul vocii finale c10
a culorilor afişate.
40 / 47
Descompunerea orizontală a specificaţiilor
41 / 47
Descompunerea orizontală a specificaţiilor
42 / 47
Descompunerea orizontală a specificaţiilor
Exemplu
Folosim 0/1 ı̂n hit pentru a reprezenta evenimentul de atingere a
marginii (0/1 pentru nu/da, resp.)
Cazul (1) de mai sus
hh1 , v1 , c1 |3, 3, y i 7→ hh10 , v10 , c10 |3, 3, bi
(1)
h1 = d+ d+ d0 d− d+ d− d− d0
v1 = d− d0 d+ d− d− d0 d+ d+
c10 = yrrrybbb
este descompus astfel:
cu h1 ı̂n Sh obţinem hith10 = 01101000 (şi x10 = 3)
cu v1 ı̂n Sv obţinem hitv10 = 00001100 (şi y10 = 3)
cy hith10 şi hitv10 in Sc obţinem c 0 = yrrrybbb (şi z10 = b)
Deci, prin restricţia la vocile h, v , c reobţinem rezultatul iniţial.
43 / 47
Utilitatea tipurilor temporale
Exemplu
Falsa interacţie În S1 componenta Sh poate falsifica datele:
Componenta Sh poate schimba conţinutul lui v , nepermiţându-i
componentei Sv să aibă o reacţie potrivită.
De exemplu, cu
Sh : hh, v , c, hith, hitv |xi 7→ hh, v 0 , c, hith0 , hitv |x 0 i,
0
unde v = d− d+ d− d+ d− d+ d− d+ , pentru orice v ,
Sh falsifică datele pentru butonul vertical nepermiţându-i lui Sv să işi
atingă marginea.
Dacă iniţial y = 3, Sv se tot mişcă alternant sus-jos, indiferent de
intrare.
44 / 47
Utilitatea tipurilor temporale
45 / 47
Utilitatea tipurilor temporale
46 / 47
Pe săptămâna viitoare!
47 / 47