Documente Academic
Documente Profesional
Documente Cultură
Cercetari Operationale, Probabilitati Si Criptologie. Aplicatii - Ed I - Rev 11.10.2015 PDF
Cercetari Operationale, Probabilitati Si Criptologie. Aplicatii - Ed I - Rev 11.10.2015 PDF
CERCETĂRI OPERAŢIONALE,
PROBABILITĂŢI ŞI CRIPTOLOGIE
APLICAŢII
I. Simion, Emil
II. Andraşiu, Mircea
III. Naccache, David
IV. Simion, Gheorghe
004.056.55
621.928
Cuvânt ı̂nainte
Cercetarea Operaţională a apărut ca disciplină prin formularea, ı̂n perioda celei de a
doua conflagraţii mondiale, a problemei de transport când s-a pus problema alocării eficiente
a resurselor către unităţile combatante. Ulterior, aceste probleme şi-au găsit utilitatea şi ı̂n
activitatea de management a unităţilor economice. Un rol important ı̂n dezvoltarea acestei
teorii l-a avut George Dantzig (1953).
Teoria grafurilor şi analiza fluxului maxim sunt modele pentru o serie de probleme de
transport sau de optimizare a traficului ı̂ntre procesoare (ı̂n cadrul aplicaţiilor de multi-
processing ı̂n care avem şi un cost de comunicare). Problemele concrete de optimizare a
costurilor de aprovizionare, transport şi stocare se pot rezolva cu ajutorul acestor modele
matematice. Optimizarea acestor costuri poate duce la economii substanţiale ı̂n cadrul unei
firme care are ca obiect de activitate astfel de probleme.
Gestiunea optimă a stocurilor este o componentă esenţială ı̂n planificarea şi realizarea
unui plan de marketing şi este o componentă de neı̂nlocuit a conducerii economice moderne
ı̂n cadrul unei economii de piaţă. Aceasta teorie şi-a găsit mai nou aplicaţii ı̂n domeniul
proiectării circuitelor electronice, stocul fiind reprezentat ı̂n acest caz de capacitatea de
memorie disponibilă.
Totodată, lucrarea de faţă conţine aplicaţii practice abordate de autori ı̂n cadrul semi-
nariilor ce se desfăşoară la disciplina Criptografie şi Securitate, la Facultatea de Matematică
Informatică din cadrul Universităţii din Bucureşti, la masterul de Securitatea Tehnolo-
giei Informaţiei, organizat de Academia Tehnică Militară, precum şi la masterul de Teo-
ria Codării şi Stocării Informaţiei, organizat de Facultatea de Ştiinţe Aplicate din cadrul
Universităţii Politehnica Bucureşti.
Această culegere de probleme continuă dezvoltarea colaborării dintre şcoala românească
de criptologie şi şcoala franceză reprezentată ı̂n cazul de faţă de David Naccache, profe-
sor la universitatea Pantheon-Assas Paris II. Din acest motiv se regăsesc, ı̂n culegerea de
faţă, capitolele dedicate principiilor criptologice şi atacurilor ı̂n mediul de implementare, ce
acoperă un gol din curricula sistemului de ı̂nvăţământ din Romania, capitole elaborate ı̂n
colaborare cu profesorul David Naccache.
Prefaţă
Intrând progresiv ı̂n era informaţiei, societăţile industrializate se găsesc ı̂n faţa unui para-
dox: pe de o parte, puterea şi influenţa Europei şi a Americii de Nord au crescut semnificativ,
ı̂n principal datorită măiestriei modalităţilor prin care se controlează fluxurile de informaţii,
precum şi valorii crescute a datelor procesate. Pe de altă parte, după cum au demonstrat-o
deja criza Wikileaks sau viermele Stuxnet, apar noi ameninţări şi vulnerabilităţi care fac ca
dependenţa noastră de sistemele informaţionale să fie crucială.
De aceea, dezvoltarea atacurilor cibernetice, precum şi disponibilitatea online a instru-
mentelor utilizate ı̂n activitatea de piraterie conduce la obiective strategice importante şi
cultivă necesitatea de a pregăti experţi pentru acest domeniu.
Criptografia este peste tot ı̂n jurul tău. În timp ce tu citeşti aceste rânduri, ı̂n vecinătatea
ta se transmit informaţii cifrate prin telefoane mobile, relee de pay-TV, precum şi routere
wireless. Mediul ı̂n care trăim se schimbă ı̂ntr-un ritm alert. Această evoluţie este rezultatul
progresului ı̂n domeniul tehnologiilor hardware şi al matematicii.
Criptografia aplicată s-a dezvoltat considerabil ı̂n ultimii ani, pentru a putea satisface
cerinţele crescute de securitate ale diverselor domenii legate de tehnologia informaţiei, cum
ar fi telecomunicaţiile, reţelistica, bazele de date, precum şi aplicaţiile de telefonie mobilă.
Sistemele criptografice sunt din ce ı̂n ce mai complexe şi mai tehnice şi necesită din ce ı̂n ce
mai multă putere de calcul (de exemplu schema de cifrare perfect homomorfă a lui Gentry).
În plus, algoritmii criptografici trebuie utilizaţi ı̂mpreună cu protocoale adecvate, a căror
proiectare şi ı̂nţelegere necesită o analiză delicată.
Această carte vă oferă instrumentele necesare pentru a ı̂ncepe să vă dezvoltaţi aptitudinile
ı̂n domeniul criptografiei. În timp ce citiţi aceste rânduri ı̂n limba română, străinul care sunt
vă ı̂ndeamnă să realizaţi că unele dintre cele mai luminate minţi care au adus contribuţii
acestui domeniu ı̂şi aveau originile ı̂n spaţiul lingvistic şi cultural românesc. De exemplu, cel
care a spart maşina de cifrat ”Purple” a japonezilor, faptă care a dus la divulgarea secretelor
diplomatice japoneze ı̂nainte de intrarea Americii ı̂n cel de-al doilea război mondial, provenea
din oraşul Chişinău, Republica Moldova, oraş ı̂n care familia lui se mutase după plecarea din
Bucureşti la sfârşitul anilor 1890. Ştiinţa secretelor are o lungă tradiţie ı̂n România, ţară
care a fost nevoită constant să se bazeze pe propriile talente pentru a-şi păstra independenţa.
Experţii au prezis că următoarele războaie vor ı̂ncepe ı̂n spaţiul cibernetic. Autorii acestei
cărţi, care sunt pedagogi şi cercetători, au importanta datorie morală de a lăsa moştenire
României astfel de talente vitale.
În trecut, am avut onoarea de a cunoaşte sau a fi mentorul unor cercetători şi studenţi
români foarte talentaţi. Întotdeauna am fost uimit de creativitatea acestora, de dorinţa
lor de a-şi atinge scopurile, precum şi de dăruirea pentru muncă. Sper că această carte va
contribui la dezvoltarea continuă de asemenea talente, astfel ı̂ncât domeniul ştiinţific căruia
i-am dedicat o bună parte a vieţii mele să beneficieze de acest formidabil rezervor de talente.
Dacă sunteţi un student talentat şi interesat de studii doctorale ı̂n domeniu, nu ezitaţi
să mă contactaţi pentru sfaturi.
I CERCETĂRI OPERAŢIONALE 1
1 PROGRAMARE LINIARĂ 3
1.1. Folosirea eficientă a resurselor limitate . . . . . . . . . . . . . . . . . 3
1.2. Forme ale problemelor de programare liniară . . . . . . . . . . . . . 5
1.3. Algoritmul simplex (Dantzig) . . . . . . . . . . . . . . . . . . . . . . 7
1.4. Duala unei probleme de programare liniară . . . . . . . . . . . . . . 9
1.5. Problema de transport . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.6. Aplicaţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 PROGRAMARE DINAMICĂ 17
2.1. Forma unei probleme de optimizare secvenţială . . . . . . . . . . . . 17
2.2. Teorema de optim . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3. Programare dinamică regresivă . . . . . . . . . . . . . . . . . . . . . 20
2.3.1. Ecuaţiile programării dinamice regresive . . . . . . . . . . . . 20
2.3.2. Rezolvarea problemelor de programare regresivă . . . . . . . 21
2.3.3. Aplicaţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4. Programare dinamică progresivă . . . . . . . . . . . . . . . . . . . . 27
2.4.1. Ecuaţiile programării dinamice progresive . . . . . . . . . . . 27
2.4.2. Rezolvarea problemelor de programare progresivă . . . . . . 28
2.4.3. Aplicaţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3 TEORIA JOCURILOR 33
3.1. Noţiuni introductive . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2. Principiul minimax . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3. Strategii mixte şi valoarea jocului . . . . . . . . . . . . . . . . . . . . 35
3.4. Teorema fundamentală a teoriei jocurilor . . . . . . . . . . . . . . . 36
3.5. Rezolvarea jocurilor matriceale . . . . . . . . . . . . . . . . . . . . . 37
3.5.1. Formularea problemei de optimizare . . . . . . . . . . . . . . 37
3.5.2. Reducerea la probleme de programare liniară . . . . . . . . . 38
iii
iv CUPRINS
3.6. Aplicaţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5 TEORIA GRAFURILOR 55
5.1. Grafuri orientate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.2. Algoritmul lui Kaufmann . . . . . . . . . . . . . . . . . . . . . . . . 56
5.3. Algoritmul lui Chen . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.4. Algoritmul lui Ford . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.5. Algoritmul Bellman-Kalaba . . . . . . . . . . . . . . . . . . . . . . . 59
5.6. Algoritmul lui Dijkstra . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.7. Arbori minimali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.7.1. Algoritmul lui Kruskal . . . . . . . . . . . . . . . . . . . . . . 62
5.8. Aplicaţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6 PROBLEME DE TRANSPORT 75
6.1. Problema clasică de transport . . . . . . . . . . . . . . . . . . . . . . 75
6.1.1. Formularea problemei . . . . . . . . . . . . . . . . . . . . . . 75
6.1.2. Algoritmul de transport (adaptarea algoritmului simplex) . . 76
6.1.3. Determinarea unui program de bază iniţial . . . . . . . . . . 77
6.1.4. Degenerare şi ciclare . . . . . . . . . . . . . . . . . . . . . . . 78
6.1.5. Variante ale problemei de transport . . . . . . . . . . . . . . 79
6.1.6. Algoritmul simplex modificat . . . . . . . . . . . . . . . . . . 80
6.1.7. Aplicaţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.2. Flux maxim intr-o reţea de transport . . . . . . . . . . . . . . . . . . 89
6.2.1. Reţele de transport . . . . . . . . . . . . . . . . . . . . . . . . 89
6.2.2. Algoritmul Ford-Fulkerson . . . . . . . . . . . . . . . . . . . . 90
6.2.3. Problema de transport ca problemă de flux maxim . . . . . . 92
6.2.4. Aplicaţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
CUPRINS v
II CRIPTOLOGIE 151
BIBLIOGRAFIE 313
Partea I
CERCETĂRI
OPERAŢIONALE
1
Capitolul 1
PROGRAMARE LINIARĂ
Cum nu putem consuma resursa de tipul i mai mult decât cantitatea disponibilă
bi , rezultă că trebuie satisfăcute condiţiile:
n
X
aij xj ≤ bi , 1 ≤ i ≤ m. (1.1)
j=1
3
4 PROGRAMARE LINIARĂ
xj ≥ 0, 1 ≤ j ≤ n. (1.2)
Inegalităţile 1.1 sunt numite restricţiile problemei, iar 1.2 sunt numite condiţiile
de nenegativitate ale problemei. Sistemul de inegalităţi liniare poate avea o infinitate
de soluţii, o soluţie unică sau nici o soluţie (sistem incompatibil). Cazul cel mai
frecvent pentru problemele practice corect puse este cazul ı̂n care sistemul 1.1, 1.2 are
o infinitate de soluţii. Prin urmare este posibil să organizăm procesele de producţie
pentru fabricarea sortimentelor de tipul j, 1 ≤ j ≤ n, ı̂ntr-o infinitate de moduri,
respectând condiţiile 1.1 de folosire a resurselor limitate.
Adoptarea unei variante de plan se face pe baza unor criterii economice, cum ar
fi: venitul realizat, beneficiul realizat, cheltuielile de producţie, producţia fizică, con-
sumurile de materii prime şi materiale, consumurile de energie etc. Vom presupune
ı̂n cele ce urmează că putem formula un singur criteriu pe baza căruia adoptăm
decizia. Mai mult, vom presupune că acest criteriu este reprezentat din punct de
vedere matematic de o funcţie liniară. Un exemplu de astfel de criteriu se obţine ı̂n
modul următor. Dacă notăm prin cj beneficiul unitar adus de activitatea de tipul
j, 1 ≤ j ≤ n, atunci este clar că beneficiul total este:
n
X
cj xj . (1.3)
j=1
Definiţia 1.2.1. Fie problema de programare liniară ı̂n forma standard atunci
mulţimea programelor este definită ca:
P = {x ∈ Rn |Ax = b, x ≥ 0}.
0
Un punct de minim global al funcţiei obiectiv z = c x pe mulţimea programelor
P este numit soluţie optimă, iar mulţimea programelor optime ale problemei va fi
notată cu:
0 0
P ∗ = {x ∈ P | min c x = c x}.
x∈P
6 PROGRAMARE LINIARĂ
(Dacă problema are restricţii de forma unor inegalităţi, atunci se transformă mai
ı̂ntâi toate inegalităţile ı̂n inegalităţi de tipul ≥; scăzându-se variabilele artificiale y,
problema de maxim se va transforma ı̂n problemă de minim etc.). A este o matrice
cu m linii şi n coloane pentru care avem rang(A) = m < n. Vom nota cu z funcţia
obiectiv adică z = cT x.
PASUL 1. Se determină o bază B primal admisibilă (fie este disponibilă di-
rect fie se determină cu ajutorul bazei artificiale prin metoda celor două faze) şi se
calculează:
xB = B−1 b,
B
z = cTB xB ,
yjB = B−1 aj , 1 ≤ j ≤ n,
z B − c , 1 ≤ j ≤ n.
j j
Aceste valori se trec ı̂n tabelul simplex (tabelul 1.1) după care trecem la pasul
următor.
Vom nota cu B mulţimea indicilor j care determină matricea B şi prin R =
{1, . . . , n} − B. Tabelul simplex iniţial are forma:
TABELUL 1.1
c1 ... cj ... cn
V.B. V.V.B. x1 ... xj ... xn
cB xB xB y1B ... yjB ... ynB
z zB z1B − c1 ... zjB − cj ... znB − cn
8 PROGRAMARE LINIARĂ
B
PASUL 2. Dacă zjB −cj ≤ 0 ∀j ∈ R, ne oprim (STOP): x este program optim.
În caz contrar se determină mulţimea (nevidă):
R+ = {j ∈ R|zjB − cj > 0}
max(zjB − cj ) = zkB − ck
j
xB
i xB
r
min ( B
) = B
i∈B+ yik yrk
B se numeşte pivot. Se trece la pasul următor.
Elementul yrk
∼
PASUL 4. Se consideră baza B obţinută din B prin ı̂nlocuirea coloanei ar cu
coloana ak , şi se calculează valorile (prin formula de schimbare a bazei adică regula de
∼ ∼ ∼ ∼
transformare a tabelului simplex) xB , z B , yjB , zjB − cj şi se trece la Pasul 2 ı̂nlocuind
∼
peste tot baza B cu baza B .
Calculele pot fi simplificate prin folosirea regulilor de transformare a tabelului
simplex:
i) elementele situate pe linia pivotului se ı̂mpart la pivot;
ii) elementele situate pe coloana pivotului devin zero, cu excepţia pivotului care
devine 1;
iii) celelalte elemente se transformă după regula dreptunghiului: dacă ne ima-
B care trebuie
ginăm dreptunghiul a cărui diagonală este determinată de elementul yij
∼B
transformat şi pivotul yrk B , atunci noua valoare y
ij se obţine ı̂mpărţind la pivot
diferenţa dintre produsul elementelor yij B y B situate pe diagonala considerată mai
rk
B y B situat pe cealaltă diagonală a dreptunghiului.
sus şi produsul yrj ik
Observaţii. i) Dacă la sfârşitul algoritmului zjB − cj < 0 ∀j ∈ R atunci soluţia
problemei este unică.
ii) Este posibil ca ı̂n cadrul algoritmului simplex să apară fenomenul de ciclare
(prin trecerea de la o bază la alta să ajung ı̂ntr-o bază deja procesată). Există mai
multe tehnici de evitare a acestui fenomen asupra cărora nu ne vom opri ı̂nsă.
iii) Se poate da şi o interpretare geometrică a soluţiilor unei probleme de progra-
mare liniară ı̂n cazul bidimensional. Domeniul de admisibilitate poate fi:
DUALA UNEI PROBLEME DE PROGRAMARE LINIARĂ 9
-un poligon convex, iar cel puţin unul dintre vârfurile sale este soluţie a problemei
de optimizare. Se poate ı̂ntâmpla ca soluţia să fie o latură a poligonului convex ce
determină domeniul de definiţie, ı̂n acest caz avem mai multe soluţii;
-un domeniu nemărginit, caz ı̂n care problema are optim infinit;
-mulţimea vidă, caz ı̂n care problema de optimizare nu are soluţie.
şi
max b0 y
A0 y ≤ c
y≥0
una şi numai una din afirmaţiile următoare este adevărată:
a) ambele probleme au programe. În acest caz, ambele probleme au programe
optime şi valorile optime ale funcţiilor obiectiv coincid;
10 PROGRAMARE LINIARĂ
b) una din probleme are programe, iar cealaltă nu are. În acest caz, problema
care nu are programe are optim infinit;
c) nici una din probleme nu are programe.
Există un algoritm numit algoritmul simplex dual care rezolvă problema primală
prin intermediul problemei duale. Acelaşi lucru putem să-l afirmăm şi despre algo-
ritmul simplex primal care rezolvă problema primală, după care pune ı̂n evidenţă
soluţia problemei duale. Programul MAPLE are o procedură de construcţie a dualei.
Sintaxa acesteia este:
Analog, cererea totală la beneficiarul j trebuie să fie egală cu cantitatea care se
transportă de la toate depozitele la acest beneficiar, adică:
m
X
xij = bj , 1 ≤ j ≤ n. (1.6)
i=1
xij ≥ 0, 1 ≤ i ≤ m, 1 ≤ j ≤ n. (1.7)
APLICAŢII 11
Sistemul de inegalităţi liniare 1.5-1.7 are ı̂n condiţiile 1.4 o infinitate de soluţii.
Ca şi ı̂n cazul precedent, pentru adoptarea unui plan de transport vom introduce
un nou criteriu economic. Să notăm pentru aceasta prin cij costul transportului
unei unităţi din produsul considerat de la depozitul i la beneficiarul j; evident, şi ı̂n
acest caz presupunem că acest cost unitar de transport nu depinde de cantitatea ce
urmează să fie transportată din i ı̂n j. Este clar că cheltuielile de transport sunt:
m X
X n
cij xij .
i=1 j=1
1.6. Aplicaţii
Soluţia problemei primale se poate găsi cu metoda simplex primal sau dual. Sin-
taxa MAPLE pentru rezolvarea acestei probleme este:
> with(simplex) :
> obiectiv := 2 ∗ x1 + 3 ∗ x2 + x3 ;
> restrictii := {x1 + x2 + 3 ∗ x4 >= 3, 2 ∗ x2 + 5 ∗ x3 + 4 ∗ x4 = 5, x1 + x3 <= −2};
> minimize(obiectiv, restrictii union {x1 >= 0, x2 >= 0, x4 <= 0});
Soluţia furnizată de procedură fiind:
x1 = 0, x2 = 15/2, x3 = −2, x4 = 0,
valoarea funcţiei obiectiv fiind 41/2.
Răspuns. Execiţiile 1.6.2-1.6.3 se pot rezolva fie prin aplicarea metodei simplex
fie prin metoda postoptimizării considerând ı̂n tabelul simplex, obţinut ı̂n problema
1.6.1., α = 0.
Răspuns. În urma aplicării algoritmului simplex primal obţinem soluţia x∗1 =
1, x∗2 = 0, x∗3 = 0, x∗4 = 0, x∗5 = 0, iar valoarea minimă a funcţiei obiectiv z ∗ = 2.
1
Vom duce drepte paralele cu x2 = − x1 până se intersectează cu domeniul
6
14 PROGRAMARE LINIARĂ
Exerciţiul 1.6.8. Să se rezolve problema de programare liniară ı̂n forma stan-
dard:
min(2x1 + 3x2 ),
x1 − x2 + x3 = 1,
x1 + x2 − x4 = 1,
x1 − 2x2 + x5 = 1,
2x1 + x3 − x4 = 2,
xi ≥ 0, 1 ≤ i ≤ 5.
Răspuns. Pentru rezolvarea problemei prin metoda simplex primal vom rezolva
mai ı̂ntâi problema:
min(x6 + x7 + x8 ),
x
1 − x2 + x3 + x6 = 1,
x1 + x2 − x4 + x7 = 1,
x1 − 2x2 + x5 = 1,
2x1 + x3 − x4 + x8 = 2,
xi ≥ 0, 1 ≤ i ≤ 8.
(s-au introdus variabilele ecart x6 , x7 , x8 ı̂n restricţiile problemei iniţiale, cu excepţia
celei de a treia restricţie, unde variabia x5 este asociată unui vector unitar al ma-
tricei coeficienţilor). Baza primal admisibilă este formată din coloanele matricei A
corespunzătoare variabilelor x6 , x7 , x5 , x8 . Tabelul simplex asociat 1.2 este:
TABELUL 1.2
V.B. V.V.B. x1 x2 x3 x4 x5 x6 x7 x8
x6 1 1 −1 1 0 0 1 0 0
x7 1 1 1 0 −1 0 0 1 0
x5 1 1 −2 0 0 1 0 0 0
x8 2 2 0 1 −1 0 0 0 1
4 4 0 2 −2 0 0 0 0
APLICAŢII 15
Vectorul care intră ı̂n bază este evident a1 conform criteriului de intrare ı̂n
bază. După cum ne indică criteriul de ieşire din bază, oricare dintre variabilele
de bază poate părăsi baza: pentru a face o alegere, vom elimina din bază vectorul
coespunzător variabilei x6 , adică a6 . Obţinem deci tabelul simplex 1.3:
TABELUL 1.3
V.B. V.V.B. x1 x2 x3 x4 x5 x6 x7 x8
x1 1 1 −1 1 0 0 1 0 0
x7 0 0 2 −1 −1 0 −1 1 0
x5 0 0 −1 −1 0 1 −1 0 0
x8 0 0 2 −1 −1 0 −2 0 1
0 0 4 −2 −2 0 −4 0 0
Se observă că tabelul simplex 1.3 obţinut ne arată că valoarea funcţiei obiectiv
este nulă. Toate variabilele artificiale sunt nule, dar x7 şi x8 sunt ı̂ncă variabile de
bază. Se vede uşor că variabila x7 poate fi eliminată din bază şi ı̂nlocuită cu x2 ,
deoarece pivotul y72B = 2 este nenul. După calcule se obţine tabelul simplex 1.4:
TABELUL 1.4
V.B. V.V.B. x1 x2 x3 x4 x5 x6 x7 x8
x1 1 1 0 1/2 −1/2 0 1/2 1/2 0
x2 0 0 1 −1/2 −1/2 0 −1/2 1/2 0
x5 0 0 0 −3/2 −1/2 1 −1/2 1/2 0
x8 0 0 0 0 0 0 −1 −1 1
0 0 0 0 0 0 −1 −1 0
TABELUL 1.5
V.B. V.V.B. x1 x2 x3 x4 x5
x1 1 1 0 1/2 −1/2 0
x2 0 0 1 −1/2 −1/2 0
x5 0 0 0 −3/2 −1/2 1
z 2 0 0 −1/2 −5/2 0
PROGRAMARE DINAMICĂ
17
18 PROGRAMARE DINAMICĂ
Tehnica programării dinamice constă ı̂n determinarea soluţiilor optime globale şi
a valorii optime a funcţiei obiectiv, prin rezolvarea secvenţială a unor probleme de
optimizare asociate problemei iniţiale, dar mult mai simple decât aceasta deoarece
optimul se calculează după o singură variabilă. Bellman a formulat ı̂n 1957 prin-
cipiul optimalităţii: o condiţie necesară ca o traiectorie s∗ să fie optimă este ca
∀t1 , t2 ∈ T, t1 < t2 , s∗ |[t1 ,t2 ] să fie traiectorie optimă a sistemului restricţionat
la intervalul [t1 , t2 ], când st1 = s∗ (t1 ) adică orice substrategie a unei strategii optime
este ea ı̂nsăşi optimă.
Pentru a fixa ideile, ı̂n cele ce urmează, vom presupune că avem de-a face cu o
problemă de minimizare, toate consideraţiile fiind valabile fără nici un fel de restricţii
şi pentru problema de maxim. Forma generală a unei probleme de optimizare (mini-
mizare) ce urmează a fi rezolvată prin această tehnică este următoarea:
min{f (u1 (s0 , x1 ), . . . , un (sn−1 , xn ))|x1 ∈ X1 (s0 ), . . . , xn ∈ Xn (sn−1 )}
si = τi (si−1 , xi ), i = 1, n
si ∈ Si , i = 1, n.
∼
s2 = τ2 (τ1 (s0 , x1 ), x2 ) =τ 2 (s0 , x1 , x2 ), u2 (s1 , x2 ),
∼ ∼
u2 (τ1 (s0 , x1 ), x2 ) = u2 (s0 , x1 , x2 ), x2 ∈ X2 (τ1 (s0 , x1 )) =X 2 (s0 , x1 )
...........................................
∼
si = τi (τi−1 (s0 , x1 , x2 , . . . , xi−1 ), xi ) =τ i (s0 , x1 , x2 , . . . , xi ),
∼ ∼
ui (si−1 , xi ) = ui (τ i−1 (s0 , x1 , x2 , . . . , uxi−1 ), xi ) =ui (s0 , x1 , . . . , xi ),
∼
xi ∈ Xi (τ i−1 (s0 , x1 , x2 , . . . , xi−1 ))
∼
= X i (s0 , x1 , . . . , xi−1 ) pentru i = 2, n.
TEOREMA DE OPTIM 19
∼ ∼ ∼ ∼
f (u1 (s0 , x1 ), u2 (s0 , x1 , x2 ), . . . , un (s0 , x1 , . . . , xn )) =f (s0 , x1 , . . . , xn ).
Definiţia 2.1.3. O soluţie (decizie) x∗ (s0 ) = (x∗1 (s0 ), . . . , x∗n (s0 )) admisibilă se
spune că este optimă relativ la starea iniţială s0 pentru o problemă de optimizare
sub forma secvenţială, dacă:
∼ ∼ ∼
f (s0 , x∗1 (s0 ), . . . , x∗n (s0 )) = min{f (s0 , x∗1 , . . . , x∗n )|x1 ∈X 1 (s0 ), . . . ,
∼
. . . , xi ∈X i (s0 , x1 , . . . , xi−1 ), i = 1, n}.
Rezolvarea unei probleme de optimizare pusă ı̂n forma secvenţială constă ı̂n
găsirea unei soluţii x∗ (s0 ) = (x∗1 (s0 ), . . . , x∗n (s0 )), ı̂n funcţie de starea iniţială s0 ,
astfel ı̂ncât funcţia de eficienţă globală f să fie optimă.
Teorema 2.2.1. ( Teorema de optim). Dacă F este decompozabilă şi dacă există
pentru orice s ∈ S :
min f (s, x, y); min F (u(s, x), min v(s, x, y)); min min f (s, x, y),
x,y x y x y
∼ ∼
f n−i+1 (si−1 , xi , . . . , xn ) = Fn−i+1 (ui (si−1 , xi ), f n−i (τi (si−1 , xi ),
xi+1 , . . . , xn )),
si = τi (si−1 , xi ), i = 1, n.
∼
min{f 1 (sn−1 , xn )|xn ∈ Xn (sn−1 )} = min{un (sn−1 , xn )|xn ∈ Xn (sn−1 )} = g1 (sn−1 ),
gn−i+1 (si−1 ) = Fn−i+1 (ui (si−1 , x∗i (si−1 )), gn−i (τi (si−1 , x∗i (si−1 ))))
∼
= min{f n−i+1 (si−1 , xi , . . . , xn )|xi ∈ Xi (si−1 )}.
actualizează i := i + 1.
PASUL 4. Dacă i > 1 goto PASUL 3.
Se determină, pentru s0 ∈ S0 , valoarea x∗1 (s0 ) pentru care avem:
∼ ∼
f (s0 , x∗1 (s0 ), . . . , x∗n (s0 )) = min{f n (s0 , x1 , . . . , xn )|x1 , . . . , xn } = gn (s0 ),
22 PROGRAMARE DINAMICĂ
x∗ = (x∗1 , . . . , x∗n )
unde x∗1 = x∗1 (s∗0 ), x∗2 = x∗2 (τ1 (s0 , x∗1 (s0 )) etc.
2.3.3. Aplicaţii
TABELUL 2.1
luna i 1 2 3 4
cererea 5 7 α 5
preţ 12β 10β 9β 10β
Răspuns.
PASUL 0. Deoarece cererea trebuie să fie de 25 unităţi avem: 5 + 7 + α + 5 =
= 25 deci α = 8. Se codifică problema:
Se notează cu xi numărul de unităţi comandate la ı̂nceputul lunii i şi cu si stocul
existent la sfârşitul lunii i. Funcţia de minimizat este:
putem deci presupune că β = 1 având grijă ca la final să ı̂nmulţim valoarea optimă
a funcţiei obiectiv cu β.
PROGRAMARE DINAMICĂ REGRESIVĂ 23
∼
f 2 = 9x3 + 10x4 ,
∼
f 1 = 10x4 .
PASUL 2. Se rezolvă problema:
∼
min{f 1 (sn−1 , xn )|xn ∈ Xn (sn−1 )} = min{u4 (s3 , x4 )|x4 ∈ X4 (s3 )} =
= min{10x4 |x4 ∈ {5 − s3 }} = 10(5 − s3 ) = 50 − 10s3 ,
Exerciţiul 2.3.2. Un depozit trebuie să răspundă unei cereri de marfă totale de
α unităţi de produs de la m beneficiari (cererea fiecărui beneficiar este de αi unităţi
de produs). Dacă costul de aprovizionare şi transport al unei unităţi de produs la
PROGRAMARE DINAMICĂ REGRESIVĂ 25
beneficiarul i este βi , iar depozitul dispune iniţial de γ unităţi de produs şi dacă
acesta nu poate deţine ı̂n stoc mai mult de δ unităţi de produs să se determine
politica optimă de reaprovizionare cu produsul respectiv astfel ı̂ncât toate cererile
să fie satisfăcute. La final mai există ı̂n stoc ε unităţi de produs.
P
m
unde α = αi . Se vor pune ı̂n evidenţă funcţiile reciproce de transfer, funcţiile
i=1
parţiale de eficienţă, funcţiile de eficienţă ale proceselor trunchiate, spaţiul stărilor
şi spaţiile de decizie.
Problema se va rezolva prin metoda programării regresive ı̂n n faze.
TABELUL 2.2
Investiţii Obiectiv 1 Obiectiv 2 Obiectiv 3
0 0 0 0
1 0, 20 0, 23 0, 19
2 0, 35 0, 34 0, 37
3 0, 51 0, 50 0, 49
4 0, 68 0, 63 0, 65
5 0, 75 0, 79 0, 80
Succesiv obţinem:
g2 (0) = max{0, 80; 0, 88; 0, 83; 0, 87; 0, 82; 0, 79} = 0, 88 pentru x∗2 (0) = 1;
g2 (1) = max{0, 65; 0, 72; 0, 71; 0, 69; 0, 63} = 0, 72 pentru x∗2 (1) = 1;
g2 (2) = max{0, 49; 0, 60; 0, 53; 0, 50} = 0, 60 pentru x∗2 (2) = 1;
g2 (3) = max{0, 37; 0, 42; 0, 34} = 0, 42 pentru x∗2 (3) = 1;
g2 (4) = max{0, 19; 0, 23} = 0, 23 pentru x∗2 (4) = 1;
g2 (5) = max{0} = 0 pentru x∗2 (5) = 1.
Faza 1. Avem:
obţinut pentru x∗1 (s∗0 ) = 2, unde s∗0 = s0 = 0. Avem ı̂n continuare, s∗1 = = s∗0 +x∗1 = 2,
de unde x∗2 (s∗1 ) = 1; s∗2 = s∗1 +x∗2 = 3, de unde x∗3 (s∗2 ) = = 5−s∗2 = 2; s∗3 = s∗2 +s∗3 = 5.
PROGRAMARE DINAMICĂ PROGRESIVĂ 27
În concluzie, am obţinut: max(r1 (x1 ) + r2 (x2 ) + r3 (x3 )) = 0, 95, pentru soluţia
optimă unică x∗ = (x∗1 , x∗2 , x∗3 ) = (2, 1, 2), iar traiectoria optimă a procesului este
s∗ = (2, 3, 5).
si = τi (si−1 , xi ), i = 1, n,
s∗n = τn (τn−1 (. . . τ2 (τ1 (s0 , x∗1 (s0 )), x∗2 (s0 )), . . . , x∗n (s0 )).
Această relaţie nu poate fi verificată decât la sfârşitul procedurii, lucru care sporeşte
timpul de procesare. Metoda de reducere la cazul precedent este mult mai eficace,
dacă vom reuşi să schimbăm sensul ı̂n care au fost făcute calculele adică să mergem
spre viitor prin folosirea funcţiilor reciproce de transfer:
si−1 =τ i (si , xi ), i = 1, n.
unde de data aceasta, ı̂n mod similar cu ceea ce s-a arătat anterior, toate elementele
descriptive ale problemei pot fi exprimate ca funcţie de decizie aleasă şi starea s0 .
Similar se defineşte decompozabilitatea progresivă şi se ajunge la ecuaţiile pro-
gramării dinamice progresive.
actualizează i := i + 1;
PROGRAMARE DINAMICĂ PROGRESIVĂ 29
x∗ = (x∗1 , . . . , x∗n )
2.4.3. Aplicaţii
∼
f 3= 12x1 + 10x2 + 9x3 ,
∼
f 4 = 12x1 + 10x2 + 9x3 + 10x4 .
Noile spaţii de decizie se determină succesiv:
Din s0 = 3 rezultă s1 − x1 + 5 = 3 sau x1 = s1 + 2 de unde x1 ∈ {s1 + 2},
din s1 ∈ [0, 4] rezultă s2 − x2 + 7 ∈ [0, 4] de unde x2 ∈ [s2 + 3, s2 + 7],
din s2 ∈ [0, 2] rezultă s3 − x3 + 8 ∈ [0, 2] de unde x3 ∈ [s3 + 6, s3 + 8],
din s3 ∈ [0, 1] rezultă s4 − x4 + 5 ∈ [0, 1] de unde x4 ∈ [s4 + 4, s3 + 5].
PASUL 2. Se rezolvă problema din faza 1 adică se calculează:
∼
min{f 1 |x1 ∈X 1 (s1 )} = min{12x1 |x1 ∈ {s1 + 2}} = 12s1 + 24,
minim atins pentru x∗1 (s1 ) = s1 + 2.
PASUL 3/4. Se rezolvă problema:
∼
min{f 2 |x2 ∈X 2 (s2 )} = min{12x1 + 10x2 |x2 ∈ [s2 + 3, s2 + 7]} =
= min{10x2 + 12s1 + 24)|x2 ∈ [s2 + 3, s2 + 7]} =
= min{10x2 + 12(s2 − x2 + 7) + 24)|x2 ∈ [s2 + 3, s2 + 7]} =
= min{−2x2 + 12s2 + 108|x2 ∈ [s2 + 3, s2 + 7]} =
= −2(s2 + 7) + 12s2 + 108 = 10s2 + 94,
minim atins pentru x∗2 (s2 ) = s2 + 7.
Se rezolvă problema:
∼
min{f 3 |x3 ∈X 3 (s3 )} = min{12x1 + 10x2 + 9x3 |x3 ∈ [s3 + 6, s3 + 8]} =
= min{9x3 + 10s2 + 94|x3 ∈ [s3 + 6, s3 + 8]} =
= min{9x3 + 10(s3 − x3 + 8) + 94|x3 ∈ [s3 + 6, s3 + 8]} =
= min{−x3 + 10s3 + 174|x3 ∈ [s3 + 6, s3 + 8]} =
= −s3 − 8 + 10s3 + 174 = 9s3 + 166,
minim atins pentru x∗3 (s3 ) = s3 + 8.
Se rezolvă problema:
∼
min{f 4 |x4 ∈X 4 (s4 )} = min{12x1 + 10x2 + 9x3 + 10x4 |x4 ∈ [s4 + 4, s3 + 5]} =
= min{10x4 + 9s3 + 166|x4 ∈ [s4 + 4, s3 + 5]} =
= min{10x4 + 9(s4 − x4 + 5) + 166|x4 ∈ [s4 + 4, s3 + 5]} =
= min{x4 + 9s4 + 211|x4 ∈ [s4 + 4, s3 + 5]} =
= 10s4 + 215 = 215,
minim atins pentru x∗4 (s∗4 ) = s∗4 + 4 = 4, unde s∗4 = 0.
PASUL 5. Avem:
s∗3 = s∗4 − x∗4 + 5 = 1 şi x∗3 = s∗3 + 8 = 9,
s∗2 = s∗3 − x∗3 + 8 = 0 şi x∗2 = s∗2 + 7 = 7,
s∗1 = s∗2 − x∗2 + 7 = 0 şi x∗1 = s∗1 + 2 = 2.
PASUL 6. Soluţia optimă este:
PROGRAMARE DINAMICĂ PROGRESIVĂ 31
x∗ = (2, 7, 9, 4), iar traiectoria optimă s∗ = (0, 0, 1, 0), deci s-a obţinut aceeaşi
soluţie ca ı̂n rezolvarea problemei prin metoda regresivă.
Exerciţiul 2.4.2. Un depozit trebuie să răspundă unei cereri de marfă totale de
α unităţi de produs de la m beneficiari (cererea fiecărui beneficiar este de αi unităţi
de produs). Dacă costurile de transport al unei unităţi de produs la beneficiarul i
este βi şi dacă depozitul dispune iniţial de γ unităţi de produs, iar dacă acesta nu
poate deţine ı̂n stoc mai mult de δ unităţi de produs să se determine politica optimă
de reaprovizionare cu produsul respectiv astfel ı̂ncât toate cererile să fie satisfăcute.
În final depozitul nu mai are nici o cantitate ı̂n stoc.
P
m
unde α = αi . Se vor pune ı̂n evidenţă funcţiile reciproce de transfer, funcţiile
i=1
parţiale de eficienţă, funcţiile de eficienţă ale proceselor trunchiate, spaţiul stărilor
şi spaţiile de decizie.
Problema se poate rezolva şi prin programare dinamică progresivă ı̂n n faze şi
evident şi prin metoda programării dinamice regresive sau cu ajutorul algoritmilor
simplex primal ori simplex dual prin aducerea acesteia la forma standard.
Exerciţiul 2.4.3. Rezolvaţi numeric prin programare dinamică regresivă şi pro-
gresivă problema anterioară pentru m = 3, α = 25 (α1 = 10, α2 = = 8, α3 = 7), β1 =
3, β2 = 10, β3 = 4, γ = 3 şi δ = 10. Aplicaţi pentru rezolvarea problemei algoritmul
simplex primal. Scrieţi duala problemei de programare liniară asociată. Rezolvaţi
programul dual.
α1 − γ ≤ x1 ≤ δ − γ,
32 PROGRAMARE DINAMICĂ
α1 + α2 − γ ≤ x1 + x2 ≤ α1 + δ − γ,
Indicaţie. Dacă notăm cu xi numărul articolelor din marfa i care sunt ı̂ncărcate,
atunci problema de programare liniară de rezolvat este:
PN
max xi vi ,
i=1
P
N
xi wi ≤ z,
i=1
xi ≥ 0, i = 1, N .
TEORIA JOCURILOR
De foarte multe ori suntem puşi ı̂n faţa unor situaţii conflictuale a căror evoluţie
ulterioară depinde de decizia sau planul adoptat, numită şi strategie. Prin termenul
de evoluţie se ı̂nţelege modificarea unei funcţii obiectiv numită ı̂n acest caz funcţie
de pierdere sau câştig, deci prin joc ı̂n cele ce urmează se ı̂nţelege acea situaţie
care funcţionează după reguli bine definite, ı̂n care două sau mai multe elemente de-
cizionale, numite jucători, aleg o decizie dintr-o mulţime de variante bine specificate.
Deoarece jocurile de care ne vom ocupa au la bază aceste elemente decizionale, ele se
vor numi jocuri strategice. Spunem despre strategia unui joc că este o strategie pură
dacă unul dintre adversari alege una din cele m variante după care jocul se opreşte.
Strategia mixtă presupune continuarea partidei, iar alegerea variantei se face cu o
anumită probabilitate. Fiecare din părţile implicate ı̂n joc urmăreşte optimizarea
funcţiei obiectiv, iar strategia care realizează această optimizare se numeşte strategie
optimă.
Din punct de vedere al câştigului jocurile se clasifică ı̂n:
-jocuri cu suma nulă: sunt acele jocuri ı̂n care suma pierderilor fiecărui jucător
este egală cu suma câştigurilor tuturor jucătorilor;
-jocuri fără sumă nulă: sunt acele jocuri ı̂n care o parte din pierderea şi/sau
câştigul unui jucător nu se regăseşte la ceilalţi jucători.
O altă clasificare este după cardinalul numărului de strategii: jocuri finite sau
infinite.
Fie X şi Y strategiile pure a doi jucătorilor A respectiv B şi a ∈ X şi b ∈ Y
strategile pure alese de către aceştia. Vom nota cu LA (a, b) şi LB (a, b) pierderile
corespunzătoare fiecărui jucător, câştigul fiind considerat o pierdere negativă. Suma
33
34 TEORIA JOCURILOR
Dacă jocul este cu suma nulă atunci LA (a, b) + LB (a, b) = 0. Deci, LB (a, b) =
−LA (a, b) = L(a, b), unde L(a, b) este câştigul jucătorului A dacă acesta joacă strate-
gia a iar răspunsul lui B fiind prin strategia b.
Jocurile de tip poker sunt jocuri cu suma nulă, iar jocurile de tip Casino sunt
fără suma nulă (se plătesc impozite către stat sau se plătesc taxe către proprietarul
jocului). Formalizând cele definite avem:
Exemplul 3.1.1. Jocul constă ı̂n aruncarea monedei ı̂n care fiecare jucător
poate alege, independent de celălalt stema S sau banul B. Dacă alegerile coin-
cid, atunci jucătorul 2 primeşte de la jucătorul 1 suma x. În caz contrar jucătorul 1
primeşte de la jucătorul 2 suma x. Matricea jocului este:
µ ¶
−x x
Q= .
x −x
se numeşte valoarea inferioară a jocului şi reprezintă cel mai mic câştig pe care A ı̂l
poate avea de la B, iar valoarea:
se numeşte valoarea superioară a jocului şi reprezintă cea mai mare pierdere pe care
B o poate avea.
Jocurile pentru care α = β se numesc jocuri cu punct şa, iar valoarea comună a
acestor două valori se numeşte valoarea jocului. Elementul care realizează această
egalitate se numeşte punct şa.
O strategie ai a jucătorului A se numeşte dominantă pentru strategia aj dacă
qik ≥ qjk pentru orice k = 1, n. Strategiile dominate vor fi eliminate din joc de către
A (acesta doreşte să câştige cât mai mult) strategiile dominante ale lui B vor fi
eliminate din politica sa pentru că duc la pierderi mai mari.
şi
yj ≥ 0, j = 1, n
Pn
yj = 1.
j=1
sau matriceal:
0
M (X, Y ) = X QY.
atunci:
max[min L(x, y)] ≤ min[max L(x, y)].
x∈X y∈Y y∈Y x∈X
Definiţia 3.4.1. (Punct şa). Punctul (x0 , y0 ) este punct şa al funcţiei L dacă:
Teorema 3.4.2. (Condiţii necesare şi suficiente pentru existenţa punctelor şa).
Fie X, Y submulţimi ale lui R şi fie L : X × Y → R. Dacă există mărimile:
atunci condiţia necesară şi suficientă ca L să aibă punctul (x0 , y0 ) punct şa este:
Teorema 3.4.2 ne spune: condiţia necesară şi suficientă ca L să aibă punctul
(x0 , y0 ) punct şa este ca valoarea inferioară a jocului să fie egală cu valoarea sa
superioară.
Observaţii. i) Un joc nu poate avea decât o singură valoare, chiar dacă are mai
multe strategii optime mixte.
ii) Condiţia necesară şi suficientă ca v să fie valoarea jocului şi X0 , Y0 să fie
strategii mixte este ca:
şi
P
n
max( Yj )
j=1
QY ≤ 1
Yj ≥ 0, j = 1, n.
Cele două probleme de programare liniară sunt ı̂n forma canonică şi sunt duale
una alteia. Acestea se pot rezolva prin metodele simplex sau simplex-dual. Se poate
apela pentru rezolvarea acestor probleme la programele specializate existente pe
piaţa software.
3.6. Aplicaţii
TABELUL 3.1
A/B b1 b2 b3 b4 b5
a1 3 −5 4 2 1
a2 2 3 1 0 −1
a3 4 −1 1 0 3
a4 5 0 3 2 4
Răspuns. Matricea jocului fiind alcătuită ı̂n raport cu jucătorul A, care este
jucător maximizant, acesta doreşte să câştige cât mai mult şi va elimina din joc
strategiile dominate. Avem a4 Â a3 , deci strategia a3 va fi eliminată din joc de
către jucătorul A. Deoarece b1 Â b4 şi b3 Â b4 , atunci jucătorul B elimină din joc
strategiile b1 şi b3 (conduc la pierderi mai mari). Astfel jocul se reduce la matricea
redusă Q:
−5 2 1
Q = 3 0 −1 .
0 2 4
Valoarea inferioară a jocului este:
Deoarece α < β jocul nu are punct şa. Valoarea jocului v ∈ [0, 2].
Problema de programare liniară pe care trebuie să o rezolve jucătorul maximizant
A (maximizarea profitului minim) este următoarea:
max(v)
−5x
1 + 3x2 ≥ v
2x1 + 2x3 ≥ v
x1 − x2 + 4x3 ≥ v
x + x2 + x3 = 1
1
x1 , x2 , x3 ≥ 0,
max(Y1 + Y2 + Y3 )
−5Y1 + 2Y2 + Y3 ≤ 1
3Y1 − Y2 ≤ 1
2Y2 + 4Y3 ≤ 1
Y1 , Y2 , Y3 ≥ 0.
Cele două probleme de programare liniară sunt duale una alteia. Rezolvarea
acestora se poate face cu ajutorul algoritmului simplex primal sau dual. Pentru
rezolvarea cu ajutorul programului MAPLE a acestora sintaxa este pentru jucătorul
A (maximizant):
> with(simplex) :
> minimize(x + y + z, −5 ∗ x + 3 ∗ y >= 1, 2 ∗ x + 2 ∗ z >= 1,
x − y + 4 ∗ z >= 1, N ON N EGAT IV E);
Soluţia este: x = 0, y = 1/3, z = 1/2,
iar respectiv pentru jucătorul B (minimizant):
> maximize(x + y + z, −5 ∗ x + 2 ∗ y + z <= 1, 3 ∗ x − z <= 1,
2 ∗ y + 4 ∗ z <= 1, N ON N EGAT IV E);
Soluţia este: x = 1/3, y = 1/2, z = 0.
Deci strategia optimă pentru jucătorul A se determină din:
1 1
X1 = 0, X2 = , X3 = ,
3 2
iar strategia optimă a jucătorului B se determină din:
1 1
Y1 = , Y2 = , Y3 = 0.
3 2
Valoarea jocului este v = 6/5 iar strategiile optime sunt pentru A:
2 3
x1 = 0, x2 = , x3 = ,
5 5
respectiv pentru B :
2 3
y1 = , y2 = , y3 = 0.
5 5
x1 = 0 se explică prin faptul că strategia a1 ≺ a3 (ı̂n matricea redusă Q), poate fi
eliminată din joc de către A.
TABELUL 3.2
TABELUL 3.3
A/B b1 b2 b3 b4 b5
a1 3ρ −5ρ 4ρ 2ρ ρ
a2 2ρ 3ρ ρ 0 −ρ
a3 4ρ −ρ ρ 0 3ρ
a4 5ρ 0 3ρ 2ρ 4ρ
Matricea jocului este alcătuită ı̂n raport cu jucătorul A (maximizant), iar ρ este
un parametru real strict pozitiv.
i) Să se calculeze valoarea inferioară şi valoarea superioară a jocului.
ii) Are jocul punct şa?
iii) Aflaţi strategiile mixte optime ale celor doi jucători.
TABELUL 3.4
A/B b1 b2 b3
a1 0 α −β
a2 −β 0 α
a3 α −β 0
Matricea jocului este alcătuită ı̂n raport cu jucătorul A, (maximizant) iar α şi β
sunt parametri reali strict pozitivi.
i) Să se calculeze valoarea inferioară şi valoarea superioară a jocului.
ii) Are jocul punct şa?
iii) Aflaţi strategiile mixte optime ale celor doi jucători.
42 TEORIA JOCURILOR
TABELUL 3.5
Tip mesaj Prob. mesaj S1 S2
confidenţial p1 0 0,3%
secret p2 0,6% 0,5%
strict secret p3 0,4% 1%
Exerciţiul 3.6.7. Se consideră jocul ı̂n forma matriceală (ı̂n raport cu jucătorul
A):
TABELUL 3.6
A/B b1 b2 b3 b4
a1 2 3 0 1
a2 1 2 4 3
a3 0 2 3 2
a4 2 3 0 1
Specificaţi şi valorile inferioară şi superioară ale jocului. Cum se modifică aceste
strategii dacă ultima linie a matricei C se ı̂nmulţeşte cu γ? Pentru ce valoare a lui
γ jocul are punct şa?
Strategia optimă (mixtă) a primului jucător este unică şi este egală cu:
1 2
x1 = , x2 = , x3 = 0.
3 3
Valoarea jocului (aceasta este unică) este egală cu v = 1.
Strategia optimă a celui de-al doilea jucător nu este unică. O strategie optimă
este spre exemplu:
1 3 1
y1 = , y2 = , y3 = ,
5 5 5
o altă strategie optimă este:
2 1
y1 = 0, y2 = , y3 = .
3 3
TEORIA DECIZIILOR
STATISTICE
45
46 TEORIA DECIZIILOR STATISTICE
dat, ı̂n care decizia se ia după efectuarea tuturor observaţiilor) şi decizii secvenţiale
(pe baza observaţiei se poate decide efectuarea unei noi observaţii sau luarea unei
decizii corespunzătoare). Astfel, paragrafele 4.2 şi 4.3 ale acestui capitol abordează
strategiile de luare a deciziilor ı̂n situaţiile ı̂n care nu avem experienţe a priori, re-
spectiv situaţia unei experienţe de volum fixat. Deciziile se pot lua ı̂n condiţii de risc
(dispunem de informaţie a priori cu privire la starea parametrului θ) sau ı̂n condiţii
de incertitudine. Astfel, paragraful 4.4 prezintă o serie de criterii pentru alegerea
deciziilor optime ı̂n caz de incertitudine.
A = {a1 , ..., an }.
L : Θ × A → R+ ,
care este pierderea obţinută dacă se adoptă decizia a şi starea parametrului este θ.
Pierderea medie este definită ca:
X
L(ξ, a) = M [L(θ, a)] = L(θ, a)ξ(θ), pentru orice a ∈ A.
θ∈Θ
Numim strategie Bayes acţiunea cea mai favorabilă a∗ care minimizează pierderea
medie, adică a∗ pentru care:
Numim strategie minimax acţiunea cea mai favorabilă a∗ care minimizează pier-
derea maximă, adică a∗ pentru care:
Fie η(a) = (η(a1 ), ..., η(am )) distribuţia de probabilitate care defineşte probabili-
tatea cu care se folosesc strategiile pure a1 , ..., am . În general, dispunem de o mulţime
de strategii mixte:
H = {η1 (a), ..., ηp (a)}.
În acest caz trebuie găsită acea strategie mixtă η ∗ ∈ H pentru care pierderile
medii să fie minime:
L(ξ, η ∗ ) = min L(ξ, η),
η∈H
sau acea strategie mixtă η∗ ∈ H pentru care pierderile maxime să fie minime:
Pierderea suferită ı̂n cazul ı̂n care starea parametrului θ este θi , i = 1, m este
dată de:
L(θi , aj ) = L(θi , d(zk )) = Lzk (θi , d).
Pentru un θ dat, rezultatul z al experienţei va fi o variabilă aleatoare determinată de
probabilitatea condiţionată p(z|θ), deci şi pierderile Lz (θ, d) sunt variabile aleatoare
şi se vor realiza cu aceeaşi probabilitate.
Se ajunge la concluzia că spaţiul deciziilor D joacă ı̂n problema strategiei ı̂n cazul
efectuării unei experienţe unice, acelaşi rol ca spaţiul A ı̂n problema strategiei fără
experienţe. Deci metodele de rezolvare ale celor două tipuri de probleme vor fi
asemănătoare.
Se pot aborda strategii mixte η(d) definite pe spaţiul D. Funcţia de risc este ı̂n
acest caz:
X
ρ(θ, η) = M [ρ(θ, d)] = ρ(θ, d)η(d)
d∈D
XX
= Lz (θ, d)p(z|θ)η(d).
d∈D z∈Z
Principiul minimax constă din alegerea acelei strategii η ∗ (d) pentru care riscul
mediu este cel mai mic, ı̂n cazul ı̂n care starea parametrului θ este cea mai defavo-
rabilă. Strategia η ∗ (d) se alege astfel ı̂ncât:
Criteriul lui Hurwicz sau criteriul optimismului alege ca strategie optimă acea
acţiune ai care corespunde la:
max[εQi + (1 − ε)qi ],
i
unde ε ∈ [0, 1] se numeşte optimismul decidentului, iar qi = min qij şi Qi = max qij .
j j
Criteriul lui Savage sau criteriul regretelor alege ca strategie optimă acea acţiune
ai care corespunde la:
min max bij = max min bij ,
j i i j
(dacă nu se poate alege o strategie pură, adică matricea nu are punct şa, se va deter-
mina o strategie mixtă optimă), unde matricea regretelor (diferenţa dintre câştigul
realizat prin luarea unei decizii fără a cunoaşte starea naturii şi cel realizat dacă se
cunoşteau aceste stări) este definită ca:
4.5. Aplicaţii
Exerciţiul 4.5.1. O linie de fabricare a cimentului poate folosi ca materie primă
trei tipuri de nisip ai cărui parametri sunt θ1 , θ2 , respectiv θ3 . Se ştie că linia tehno-
logică poate folosi ı̂n medie 60% din primul tip, 30% din al doilea tip şi 10% din
al treilea tip şi că poate funcţiona ı̂n trei regimuri a1 , a2 şi a3 . Pierderile reflectând
calitatea sunt date ı̂n tabelul 4.1.
TABELUL 4.1
Θ ξ(θ) a1 a2 a3
θ1 0, 6 0 α 2
θ2 0, 3 0, 5 2α 1
θ3 0, 1 1 α 3
L(ξ, a1 ) = 0 · 0, 6 + 0, 5 · 0, 3 + 1 · 0, 1 = 0, 25
L(ξ, a2 ) = α · 0, 6 + 2α · 0, 3 + α · 0, 1 = 1, 3 · α
APLICAŢII 51
L(ξ, a3 ) = 2 · 0, 6 + 1 · 0, 3 + 3 · 0, 1 = 1, 8.
Strategia Bayes este acea acţiune care minimizeză pierderea medie adică strategia
5 5
a1 dacă α ≥ sau strategia a2 dacă α ≤ .
26 26
5
Remarcăm că pentru α = avem două strategii optime şi anume a1 şi a2 .
26
TABELUL 4.2
A/B θ1 θ2 θ3 θ4 θ5
a1 3 −5 4 2 1
a2 2 3 1 0 −1
a3 4 −1 1 0 3
a4 5 0 3 2 4
TABELUL 4.3
θ1 θ2 θ3 θ4 θ5 Qi qi εQi + (1 − ε)qi
a1 3 −5 4 2 1 4 −5 9ε − 5
a2 2 3 1 0 −1 3 −1 4ε − 1
a3 4 −1 1 0 3 4 −1 5ε − 1
a4 5 0 3 2 4 5 0 5ε
determinăm:
max[εQi + (1 − ε)qi ] = 5ε
i
TABELUL 4.4
(bij ) θ1 θ2 θ3 θ4 θ5 min bij
j
a1 2 8 0 0 3 0
a2 3 0 3 2 5 0
a3 1 4 3 2 1 1
a4 0 3 1 0 0 0
max bij 3 8 3 2 5 2\1
i
Se observă faptul că jocul nu are punct şa, şi, deci vom determina strategia mixtă
cu ajutorul algoritmului simplex primal sau dual. Soluţia problemei ataşate se poate
rezolva cu ajutorul programului MAPLE, iar sintaxa pentru aceasta este:
> with(simplex) :
> minimize(x + y + z + w, 2 ∗ x + 3 ∗ y + z >= 1, 8 ∗ x + 4 ∗ z + 3 ∗ w >=
1, 3 ∗ y + 3 ∗ z >= 1,
2 ∗ y + 2 ∗ z >= 1, 3 ∗ x + 5 ∗ y + z >= 1, N ON N EGAT IV E);
soluţia problemei fiind x = 0, y = 1/4, z = 1/4, w = 0. Aceasta conduce la
strategia mixtă optimă:
1 1
x1 = 0, x2 = , x3 = , x4 = 0.
2 2
iii) Pentru aplicarea criteriului lui Bayes-Laplace vom considera echiprobabile
stările θi :
TABELUL 4.5
1 P
n
θ1 θ2 θ3 θ4 θ5 n qij
j=1
a1 3 −5 4 2 1 1
a2 2 3 1 0 −1 1
a3 4 −1 1 0 3 7/5
a4 5 0 3 2 4 14/5
deci statisticianul va alege strategia a4 deoarece aceasta maximizează:
n
1X
qij .
n
j=1
iv) Pentru aplicarea criteriului lui Wald, deoarece jocul nu are punct şa statisti-
cianul va alege o strategie mixtă cu probabilităţile x1 , ..., xm care maximizează:
Xm
min[ qij xi ].
j
i=1
APLICAŢII 53
TABELUL 4.6
A/B θ1 θ2 θ3 θ4 θ5
a1 3 −5 4 2 1
a2 2 3 1 0 −1
a3 4 −1 1 0 3
a4 5 0 3 2 4
TEORIA GRAFURILOR
Definiţia 5.1.1. Un graf orientat G este o pereche G = (X, A), unde X este o
mulţime finită, iar A ⊂ X × X. Elementele x ∈ X se numesc noduri ale grafului G,
iar perechile (x, y) ∈ A se numesc arce ale grafului. Pentru un arc (x, y) ∈ A, vârful
x se numeşte extremitate iniţială sau sursă, iar y, extremitate finală sau destinaţie.
Definiţia 5.1.3. O rută orientată este un arc (i, j) din G şi i se poate asocia o
valoare numerică v(u) sau vij cu semnificaţie reală de lungime, distanţă, cost etc.
Definiţia 5.1.5. Un drum care nu trece de două ori printr-un nod al său se
numeşte drum elementar.
55
56 TEORIA GRAFURILOR
Teorema 5.1.1. Fie un graf orientat G şi D un drum de lungime minimă ı̂ntre
două noduri s şi t. Dacă valorile fiecărei muchii se ı̂nmulţesc cu un parametru real
0
strict pozitiv α, atunci ı̂n noul graf G drumul de lungime minimă dintre nodurile s
şi t este identic (ca succesiune a nodurilor) cu drumul de lungime minimă din graful
0
G, iar ı̂ntre valorile L (s, t) şi L(s, t) ale celor două drumuri există relaţia:
0
L (s, t) = αL(s, t).
Remarcăm că ı̂ntr-un graf având n noduri orice drum elementar are lungimea de
cel mult n − 1.
Să notăm prin Γ(k) (xi ) mulţimea de vârfuri din G la care se poate ajunge din xi
folosind drumuri elementare formate din k arce. Avem următorea teoremă:
ALGORITMUL LUI CHEN 57
Următoarea teoremă, atribuită lui Chen, este o condiţie necesară şi suficientă
pentru ca un graf fără circuite să conţină un drum hamiltonian.
Teorema 5.3.1. Un graf fără circuite, care are n noduri, conţine un drum
hamiltonian, dacă şi numai dacă avem:
n
X n(n − 1)
p(xi ) = .
2
i=1
Remarcăm că ı̂ntr-un graf fără circuite (un drum ı̂n care extremităţile coincid se
numeşte circuit), există cel mult un drum hamiltonian.
Algoritmul de determinare a drumurilor hamiltoniene ı̂n grafuri fără circuite este
prezentat ı̂n cele ce urmează.
PASUL 0. Pentru graful G scriem matricea drumurilor D = (dij ), ordonând
vârfurile ı̂n ordine descrescătoare a puterii de atingere (prin această operaţie, dacă
58 TEORIA GRAFURILOR
graful nu are circuite atunci toate valorile de 1 din matrice vor apărea deasupra
diagonalei principale).
PASUL 1. Dacă există un indice i pentru care dii = 1, atunci graful are circuite
şi algoritmul se opreşte, deoarece acesta nu se poate aplica.
n(n − 1)
PASUL 2. Dacă ı̂n matricea D există valori de 1, atunci graful admite
2
un drum hamiltonian şi se trece la pasul 3; ı̂n caz contrar graful nu are un drum
hamiltonian, iar algoritmul se opreşte.
PASUL 3. Ordinea vârfurilor ı̂n cadrul drumului hamiltonian este dată de
ordinea descrescătoare a puterilor de atingere.
Pentru grafurile care au circuite algoritmul de determinare a drumurilor hamil-
toniene este dat de algoritmul lui Kaufmann prezentat anterior. Astfel prezenţa
unui element diferit de ∗ pe diagonala uneia dintre matricele K(k) din cadrul acestui
algoritm indică atât prezenţa unui circuit hamiltonian cât şi ordinea vârfurilor.
(0)
De asemenea, se adaugă la matricea V o nouă linie v (0) = {vi }, unde fiecărui
(0)
nod i al grafului se asociază un element vi , astfel:
(0)
vi = vit , i 6= t,
(0)
vt = 0.
(0)
Linia vi , conform acestor relaţii, coincide cu transpusa coloanei nodului t.
(k) (k) (k)
PASUL k. Se adaugă la matricea V linia vi = {vi }. Elementele vi se
calculează cu relaţiile:
(k) (k−1)
vi = min{vi + vij }, i 6= t,
j6=i
(k)
vt = 0.
(k)
Mărimea vi reprezintă valoarea drumului minim de la vârful i la nodul final t.
Dacă:
(k) (k−1)
vi = vj + vtj ,
atunci primul arc ı̂n drumul de valoare minimă de la nodul i la nodul t este arcul
(i, j). Vom nota cu:
(k) (k) (k−1)
succi = {j|vi = vj + vij , j 6= i}
şi marcăm printr-o nouă linie succ(k) la matricea V imediat după linia v (k) . Dacă
(k) (k)
vi = ∞, atunci succi = ∅.
Drumul de valoare minimă de la nodul i la nodul final t este determinat numai
de nodurile marcate prin succ(k) , ı̂ncepând cu cele din coloana i.
Observaţii:
i) Algoritmul lui Ford determină drumurile de valoare minimă (sau maximă) care
pleacă de la un nod sursă s către toate celelalte noduri ale grafului.
ii) Algoritmul Bellman-Kalaba determină drumurile de valoare minimă (sau ma-
ximă) care sosesc ı̂ntr-un nod final t de la celelalte noduri ale grafului.
În stânga tabelului se precizează iteraţia ı̂n care nodul respectiv este permanen-
tizat ı̂n lista L, prin marcarea cu ∗.
PASUL 0. Tabelul conţine nodul s marcat cu ∗ şi acele noduri j pentru care
ruta orientată (s, j) este permisă. Corespunzător p(s) = 0, p(j) = vsj , pred(j) = s.
Se consideră marcarea nodului s ca fiind iteraţia 0.
Iteraţia k.
PASUL 1. Dacă ı̂n tabel lista T este vidă, atunci toate nodurile sunt permanente
(marcate cu ∗). Graful este analizat ı̂n ı̂ntregime şi algoritmul se opreşte.
PASUL 2. Se alege i∗ ∈ T cu proprietatea:
a) dacă p(j) > p(i∗ ) + vi∗ j , atunci p(j) = p(i∗ ) + vi∗ j şi pred(j) = i∗ ;
b) dacă p(j) = p(i∗ ) + vi∗ j , atunci i ∈ pred(j);
c) dacă p(j) < p(i∗ ) + vi∗ j , atunci se trece la examinarea unui nod din lista T .
După epuizarea listei T se reia pasul 1 ı̂n cadrul următoarei iteraţii. După oprirea
algoritmului şi atingerea nodului t (ı̂n pasul 2) drumul de lungime minimă se recon-
stituie din aproape ı̂n aproape de la nodul t către nodul s cu ajutorul indicatorilor
pred(j).
Dacă nodul t nu este evidenţiat, după oprirea algoritmului se reconstituie, ı̂n
acelaşi fel, graful drumurilor de lungime minimă de la s la orice alt nod ı̂n graf.
Problema ce urmează să o rezolvăm are forma: fiind dat un graf G neorientat,
conex să se extragă din G un arbore parţial pentru care suma valorilor muchiilor
este minimă.
62 TEORIA GRAFURILOR
Vom presupune, pentru a simplifica ideile, că ı̂ntre orice două noduri ale grafului
G există câte o muchie, şi că toate valorile muchiilor sunt diferite două câte două.
Fie A = {a1 , . . . , am } mulţimea muchiilor grafului. Vom nota cu pi = p(ai ) valoarea
muchiei ai . Vom presupune deci că p1 < . . . < pm .
5.8. Aplicaţii
Exerciţiul 5.8.1. Posibilităţile de comunicare ı̂ntre localităţile 1-6 sunt repre-
zentate prin graful din figura 5.1, unde fiecărei muchii (sau arc) i se atribuie lungimea
tronsoanelor respective. Se cere drumul de lungime minimă ı̂ntre 1 şi 6.
Rezolvare. Pentru rezolvarea problemei vom aplica algoritmul lui Ford. Problema
se poate rezolva şi cu algoritmul lui Bellman-Kalaba.
PASUL 0. λ1 = 0, λj = ∞, j 6= 1 .
APLICAŢII 63
TABELUL 5.1
PASUL 1.
Iteraţia 1. Pentru fiecare arc (i, j) dacă se verifică λj − λi > lij , atunci λj =
λi + lij .
(1, 2) λ2 − λ1 = ∞ > 2, atunci λ2 = λ1 + l12 = 0 + 2 = 2,
(1, 3) λ3 − λ1 = ∞ > 8, atunci λ3 = λ1 + l13 = 0 + 8 = 8,
(2, 1) λ1 − λ2 = 0 − 2 = −2 < 2,
(2, 3) λ3 − λ2 = 8 − 2 = 6 > l23 = 3, atunci λ3 = λ2 + l23 = 2 + 3 = 5,
(2, 4) λ4 − λ2 = ∞ > 8, atunci λ4 = λ2 + l24 = 2 + 8 = 10,
(3, 1) λ1 − λ3 = 0 − 5 = −5 < l31 = 8,
(3, 2) λ2 − λ3 = 2 − 5 = −3 < l32 = 4,
(3, 4) λ4 − λ3 = 10 − 5 = 5 = l34 = 5,
(3, 5) λ5 − λ3 = ∞ − 5 = ∞ > l35 = 2, atunci λ5 = λ3 + l35 = 5 + 2 = 7,
(4, 2) λ2 − λ4 = 2 − 10 = −8 < l42 = 8,
(4, 3) λ3 − λ4 = 5 − 10 = −5 < l43 = 5,
(4, 5) λ5 − λ4 = 7 − 10 = −3 < l45 = 3,
(4, 6) λ6 − λ4 = ∞ > l46 , atunci λ6 = λ4 + l46 = 10 + 3 = 13,
(5, 3) λ3 − λ5 = 5 − 7 = −2 < l53 = 2,
(5, 4) λ4 − λ5 = 10 − 7 = 3 > l54 = 1, atunci λ4 = λ5 + l54 = 7 + 1 = 8,
(5, 6) λ6 − λ5 = 13 − 7 = 5 > l56 = 4, atunci λ6 = λ5 + l56 = 7 + 4 = 11.
Iteraţia 2. Se reia pasul 1.
(1, 2) λ2 − λ1 = 2 = l12 ,
(1, 3) λ3 − λ1 = 5 < l13 = 8,
(2, 1) λ1 − λ2 = −2 < l21 = 2,
(2, 3) λ3 − λ2 = 3 = l23 ,
(2, 4) λ4 − λ2 = 6 < l24 = 8,
(3, 1) λ1 − λ3 = −5 < l31 = 8,
(3, 2) λ2 − λ3 = −3 < l32 = 4,
(3, 4) λ4 − λ3 = 3 < l34 = 5,
(3, 5) λ5 − λ3 = 2 = l35 ,
(4, 2) λ2 − λ4 = −6 < l42 = 5,
64 TEORIA GRAFURILOR
şi
Exerciţiul 5.8.2. Se consideră graful din figura 5.2. Să se determine rutele de
cost minim de la fiecare nod la nodul 6.
Se scriu aceste valori ı̂n linia v (0) a tabelului 5.2. Deci, coloana 6 este transpusă ı̂n
linia de ı̂nceput v (0) .
TABELUL 5.2
1 2 3 4 5 6
1 0 3 1 ∞ 3 ∞
2 3 0 5 8 ∞ ∞
3 1 5 0 ∞ 2 ∞
4 ∞ ∞ ∞ 0 3 2
5 3 ∞ ∞ 4 0 8
6 ∞ ∞ ∞ ∞ ∞ 0
v (0) ∞ ∞ ∞ 2 8 0
v (1) 11 10 10 2 6 0
succ(1) 5 4 4 6 4 -
v (2) 9 10 8 2 6 0
succ(2) 5 4 5 6 4 -
v (3) 9 10 8 2 6 0
succ(3) 3,5 4 5 6 4 -
(1)
succ4 = {6},
(3)
succ1 = {3, 5},
(3)
succ2 = {4},
(3)
succ3 = {5},
(3)
succ4 = {6},
(3)
succ5 = {4},
(3)
v6 = 0.
(2) (3)
Se observă că vi = vi , i = 1, . . . , 6, ceea ce ı̂nseamnă că algoritmul s-a terminat.
(3)
Elementele vi sunt valorile minimale ale drumurilor de la fiecare vârf i la nodul
final 6. Cu ajutorul liniei succ(3) precizăm drumurile de la fiecare nod i la nodul
final 6, prin considerarea arcelor date de nodurile i şi succesoarele acestora. În cazul
nostru avem arcele: (1, 3), (1, 5), (2, 4), (3, 5), (4, 6), (5, 4). Astfel de la nodul 1 la
nodul final 6 avem două drumuri şi anume: µ1 = [1, 3, 5, 4, 6], µ2 = [1, 5, 4, 6] ambele
(3)
au valoarea egală cu v1 = 9.
68 TEORIA GRAFURILOR
Rezolvare. Exemplu: ı̂ntre 2 şi 4 există trei drumuri minime şi anume: µ1 :
[2, 1, 5, 3, 4], l(µ1 ) = 11a, µ2 : [2, 1, 5, 3, 6, 4], l(µ2 ) = 11a, şi µ3 : [2, 1, 5, 6, 4], l(µ2 ) =
11a.
TABELUL 5.4
j λj Iniţial Iteraţia 1
1 λ1 0 0
2 λ2 ∞ 2
3 λ3 ∞ 5
4 λ4 ∞ 3
Iteraţia 1. Pentru fiecare arc (i, j) care verifică relaţia λj −λi > lij reactualizăm
λj = λi + lij .
(1, 2) : λ2 − λ1 = ∞ > l12 ⇒ λ2 = λ1 + l12 = 2.
(1, 4) : λ4 − λ1 = ∞ > l41 ⇒ λ4 = λ1 + l14 = 3.
(2, 1) : λ2 − λ1 = −2 < 2.
(2, 3) : λ3 − λ2 = ∞ > l23 ⇒ λ3 = λ2 + l23 = 5.
(2, 4) : λ4 − λ2 = 1 < l24 .
(3, 2) : λ2 − λ3 = −3 < l32 .
(3, 4) : λ4 − λ3 = −2 < l34 .
(4, 2) : λ2 − λ4 = −1 < l42 .
(4, 3) : λ3 − λ4 = 2 < l43 .
Iteraţia 2. Pentru fiecare arc (i, j) care verifică relaţia λj −λi > lij reactualizăm
λj = λi + lij .
(1, 2) : λ2 − λ1 = 2 = l12 .
(1, 4) : λ4 − λ1 = 3 = l41 .
(2, 1) : λ2 − λ1 = −2 < l21 .
(2, 3) : λ3 − λ2 = 3 = l23 .
(2, 4) : λ4 − λ2 = 1 = l24 .
(3, 2) : λ2 − λ3 = −3 < l32 .
(3, 4) : λ4 − λ3 = −2 < l34 .
(4, 2) : λ2 − λ4 = −1 < l42 .
(4, 3) : λ3 − λ4 = 2 < l43 .
Drumurile de lungime minimă ı̂ntre nodul 1 şi celelalte noduri ale grafului se
reconstituie din figura 5.5. Drumul de lungime minimă dintre nodul 1 şi nodul 3
este [1, 2, 3] şi are valoarea 5.
70 TEORIA GRAFURILOR
Figura 5.5: Drumurile optime ı̂ntre nodul 1 şi celelalte noduri ale grafului.
Rezolvare. Se aplică algoritmul Bellman-Kalaba. În final rutele cele mai scurte
de la celelalte noduri ale grafului la nodul 1 se reconstituie din arcele din figura 5.7.
APLICAŢII 71
Exerciţiul 5.8.6. Pentru graful din figura 5.8 determinaţi drumurile de lungime
minimă ı̂ntre nodul 0 şi 7. Care este valoarea minimă a acestui drum?
Exerciţiul 5.8.7. Se consideră graful din 5.9. Să se pună ı̂n evidenţă următoarele
elemente:
i) matricea arcelor (sau matricea conexiunilor directe);
ii) matricea drumurilor;
iii) puterea de atingere a fiecărui vârf;
iv) dacă graful are circuite;
iv) determinaţi drumurile hamiltoniene din graf.
72 TEORIA GRAFURILOR
∗ ∗ ∗ ∗
APLICAŢII 73
Exerciţiul 5.8.8. Să se găsească drumurile hamiltoniene din graful din figura
5.10.
PROBLEME DE TRANSPORT
75
76 PROBLEME DE TRANSPORT
Unei probleme de transport ı̂i asociem un tabel de transport care conţine datele
numerice ale problemei de transport. Tabelul de transport 6.1 are m linii şi n
coloane. Fiecare celulă (i, j), 1 ≤ i ≤ m, 1 ≤ j ≤ n, a acestui tabel poate fi asociată
cu costul unitar cij , cu necunoscută xij , cu valoarea xij a variabilei xij dintr-o
anumită soluţie (xij ) a sistemului de ecuaţii 6.1.
TABELUL 6.1
c11 c12 ... c1n a1
c21 c22 ... c2n a2
... ... ... ... ...
cm1 cm2 ... cmn am
b1 b2 ... bn
Tabelul de transport mai conţine o coloană suplimentară ı̂n care sunt trecute ı̂n
mod obişnuit cantităţile disponibile ai , 1 ≤ i ≤ m, şi o linie suplimentară ı̂n care sunt
trecute cererile bj , 1 ≤ j ≤ n. În celula (i, j) este trecut costul unitar cij ; dacă dorim
să scriem şi valoarea xij a variabilei xij , vom ı̂mpărţi celula (i, j) printr-o diagonală
ı̂n două părţi şi vom scrie cij ı̂n partea superioară, iar xij ı̂n partea inferioară.
Tabelului de transport T ı̂i asociem un graf neorientat Γ având drept noduri
mulţimea celulelor (i, j), 1 ≤ i ≤ m, 1 ≤ j ≤ n, ale tabelui de transport T şi drept
muchii mulţimile formate din două celule situate ı̂ntr-o aceeaşi linie sau coloană a
lui T . În cele ce urmează vom considera numai acele subgrafuri parţiale ale lui Γ
care se obţin prin unirea cu muchii a celulelor vecine, adică a celulelor situate pe
o aceeaşi linie sau coloană a lui T ı̂ntre care nu există alte celule din mulţimea de
noduri ale subgrafului. Un subgraf parţial de acest tip al lui Γ se numeşte π-graf.
Un π-graf care este un lanţ (ciclu) elementar având cel mult o muchie ı̂n fiecare
linie sau coloană a tabelului de transport T va fi numit µ-lanţ sau µ-ciclu.
Algoritmul de transport
PASUL 0. Se determină o soluţie de bază admisibilă xij (vom vedea ulterior
cum anume) corespunzătoare unei matrice B formată din m + n − 1 coloane liniar
PROBLEMA CLASICĂ DE TRANSPORT 77
independente ale matricei A şi apoi mulţimea B a celulelor de bază, după care trecem
la pasul următor.
PASUL 1. Se rezolvă sistemul de ecuaţii:
ui + vj = cij , ∀(i, j) ∈ B,
se obţine o soluţie particulară (ui , vj ) a acestui sistem şi se calculează valorile zij −
cij = ui + vj − cij pentru ∀(i, j) ∈ R (mulţimea celulelor care nu sunt ı̂n bază).
Dacă zij − cij ≤ 0 pentru toate celulele (i, j) ∈ R, ne oprim (STOP): soluţia de
bază xij este optimă.
În caz contrar se determină (s, k) ∈ R cu criteriul de intrare ı̂n bază:
min{xij } =xrt ,
unde minimul se ia ı̂n raport cu toate celulele (i, j) de rang par ı̂n µ-ciclul determinat
anterior. Se trece apoi la pasul următor.
∼
PASUL 3. Se consideră matricea B obţinută din B prin ı̂nlocuirea coloanei art
∼ ∼
cu coloana ask . Se determină soluţia de bază admisibilă xij corespunzătoare lui B
cu ajutorul formulelor de schimbare a bazei:
∼
xij − xrt , dacă (i, j) are rang par ı̂n µ − ciclu,
xij = xij + xrt , dacă (i, j) are rang impar ı̂n µ − ciclu,
xij , dacă (i, j) nu aparţine µ − ciclului.
∼ ∼
Se trece apoi la pasul 1 ı̂nlocuind B cu B şi soluţia xij cu xij .
Observaţie. Dacă la terminarea algoritmului avem zij − cij < 0 pentru toate
celulele (i, j) ∈ R, atunci soluţia problemei de transport este unică.
Dacă xij = ai , atunci se elimină din tabelul de transport linia de rang i şi se
0
ı̂nlocuieşte bj prin bj = bj − xij . Dacă xij = bj , atunci se elimină din tabelul de
0
transport coloana de rang j şi se ı̂nlocuieşte ai cu ai = ai − xij . Dacă xij = ai = bj ,
atunci se aplică, la alegere, unul dintre procedeele descrise anterior.
În cele trei situaţii prezentate se obţine un tabel de transport redus, având fiecare
o linie sau o coloană mai puţin decât cel iniţial. Urmând procedeul descris pe
toate tabelele reduse care se obţin ı̂n continuare, se determină evident un program
al problemei de transport. Metoda generală de obţinere a unui program de bază
pentru problema de transport poate fi particularizată dând diverse reguli de selecţie
a celulei (i, j) din tabel care se atribuie valorii xij . Dintre metodele particulare de
determinare a unui program de bază iniţial le menţionăm pe cele care urmează.
i) Metoda colţului de nord-vest. Această metodă constă ı̂n alegerea celulei (i, j)
situate ı̂n prima linie şi prima coloană ale tabelelor de transport utilizate.
ii) Metoda costului minim. La fiecare pas se alege celula (i, j) corespunzătoare
costului minim cij din tabelele de transport utilizate.
X X
ai = bj.
i∈M j∈N
PROBLEMA CLASICĂ DE TRANSPORT 79
Pentru rezolvarea acestei probleme se introduce un depozit fictiv ı̂n care disponi-
bilul de resursă este:
Xn Xm
am+1 = bj − ai ,
j=1 i=1
adică tocmai excedentul cererii totale. Costurile de transport la beneficiarul n+1 pot
fi luate nule sau egale cu costurile de stocare la depozitele i, 1 ≤ i ≤ m. Problema
devine atunci o problemă standard de transport, care se rezolvă prin algoritmul
cunoscut.
Problema de transport cu capacităţi limitate. Forma problemei de trans-
port cu capacităţi limitate este următoarea:
Pm P n
inf cij xij ,
i=1 j=1
Pn
xij = ai , 1 ≤ i ≤ m,
j=1
Pm
xij = bj , 1 ≤ j ≤ n,
i=1
dij ≥ xij ≥ 0, 1 ≤ i ≤ m, 1 ≤ j ≤ n.
unde:
ai ≥ 0, 1 ≤ i ≤ m,
bj ≥ 0, 1 ≤ j ≤ n,
dij ≥ 0, 1 ≤ i ≤ m, 1 ≤ j ≤ n,
Pm P
n
ai = bj .
i=1 j=1
Pm
ai ≥ bj , 1 ≤ j ≤ n,
i=1
P
n
bj ≥ ai , 1 ≤ i ≤ m.
j=1
∼
xij = min{ai , bj , dij }.
PROBLEMA CLASICĂ DE TRANSPORT 81
∼ ∼ ∼
Dacă xij = ai sau xij = bj , atunci procedăm ı̂n mod obişnuit. Dacă xij = dij <
∼
min{ai , bj }, variabila xij nu este considerată variabilă de bază. Dacă xij = dij =
∼
min{ai , bj }, atunci variabila xij nu este considerată variabilă de bază. Valorile (xij )
obţinute ı̂n acest mod nu constituie ı̂ncă un program al problemei: se poate ı̂ntâmpla
ca unele disponibilităţi să nu fie complet epuizate, iar unele cereri să nu fie integral
∼
satisfăcute. Plecând ı̂nsă de la valorile (xij ) astfel determinate, putem obţine un
program de bază pentru problema de transport cu capacităţi limitate cu algoritmul
care urmează.
Să presupunem că există un depozit r, 1 ≤ r ≤ m, ı̂n care a rămas neexpediată
0
cantitatea de resursă ar şi beneficiarii s şi k, unde cererile au rămas nesatisfăcute
0 0 0 0 0 ∼
cu cantităţile bs şi bk ; evident, avem ar = bs + bk . Algoritmul care transformă (xij )
ı̂n programul de bază (xij ) este următorul:
PASUL 1. Se adaugă la linia r o celulă suplimentară ı̂n care valoarea variabilei
0
corespunzătoare xr0 este ar . Analog, se adaugă la coloanele s şi k câte o celulă
0
suplimentară ı̂n care valorile variabilelor corespunzătoare x0s şi x0k sunt bs respectiv
0 0
bk . Se ı̂nlocuiesc costurile unitare iniţiale cij , 1 ≤ i ≤ m, 1 ≤ j ≤ n, cu cij = 0 şi se
0 0 0
atribuie celulelor nou introduse costuri egale cu unitatea, adică cr0 = c0s = c0k = 1.
PASUL 2. Se rezolvă sistemul de ecuaţii:
ur = 1,
v = 1,
s
vk = 1,
0
ui + vj = cij , (i, j) ∈ B, i 6= r, j 6= s, k.
Renunţăm la celulele suplimentare şi revenim la costurile iniţiale cij . Soluţia astfel
obţinută este un program de bază.
Conform rezultatului general stabilit la algoritmul simplex, testul de optimalitate
este următorul: programul (x∗ij ) este optim dacă zij − cij ≤ 0 pentru toate celulele
secundare (i, j) pentru care x∗ij = 0 şi zij − cij ≥ 0 pentru toate celulele secundare
(i, j) pentru care x∗ij = dij.
6.1.7. Aplicaţii
Exerciţiul 6.1.1. Să se găsească, prin metoda colţului de N-V şi prin metoda
costului minim o soluţie de bază pentru problema de transport ale cărei date sunt
82 PROBLEME DE TRANSPORT
prezentate ı̂n tabelul 6.2. Găsiţi pentru aceaste soluţii valorile corespunzătoare ale
funcţiilor obiectiv. Care soluţie este mai bună şi de ce?
TABELUL 6.2
7 8 5 3 11
2 4 5 9 11
6 3 1 2 8
5 9 9 7
7 · 5 + 6 · 8 + 3 · 4 + 5 · 8 + 1 · 1 + 2 · 7 = 150.
8 · 3 + 5 · 1 + 3 · 7 + 2 · 5 + 4 · 6 + 1 · 8 = 92.
Evident soluţia de bază obţinută prin metoda costului minim este mai bună deoarece
costul corespunzător acesteia este mai mic.
Răspuns.
PASUL 0. Soluţia iniţială de bază determinată prin metoda colţului de N-V
este:
x11 = min{5, 10} = 5, eliminăm coloana 1,
x12 = min{3, 5} = 3, eliminăm coloana 2,
x13 = min{7, 2} = 2, eliminăm linia 1,
x23 = min{5, 5} = 5.
Costul aferent acestei soluţii este C = 28.
care se trec ı̂n colţurile din dreapta sus ale fiecărei celule secundare.
iii) Calculăm (criteriul de optim):
Criteriul de optim nu este ı̂ndeplinit, deci celula (2, 2) intră ı̂n bază.
Iteraţia 1, PASUL 2. Pentru a determina care celulă iese din bază determinăm
µ-ciclul format din celula (2, 2) cu o parte a celulelor din bază:
(2, 2), (2, 3)∗ , (1, 3), (1, 2)∗ , (2, 2).
soluţia este optimă, iar aceasta este: x11 = 5, x13 = 5, x22 = 3, x23 = 2.
TABELUL 6.4
2α 3α 4α α 2β
3α 6α 2α 4α 3β
α 4α 5α 3α λ
β 7β β 6β
Răspuns. Cantitatea disponibilă trebuie să fie egală cu cererea deci: 15β = 5β +λ
de unde λ = 10β.
PASUL 0. Determinăm o soluţie de bază prin metoda costului minim. Deci:
x31 = min{β; 10β} = β, eliminăm coloana 1 din tabelul de transport,
x14 = min{7β; 2β} = 2β, eliminăm linia 1 din tabelul de transport,
x23 = min{β; 3β} = β, eliminăm coloana 3 din tabelul de transport,
x34 = min{4β; 9β} = 4β, eliminăm coloana 4 din tabelul de transport,
x32 = min{7β; 5β} = 5β, eliminăm linia 3 din tabelul de transport,
x22 = min{2β; 2β} = 2β, eliminăm coloana 1 din tabelul de transport.
Costul de transport corespunzător acestei soluţii este:
care se trec ı̂n colţurile din dreapta sus ale fiecărei celule secundare.
iii) Calculăm (criteriul de optim):
Criteriul de optim nu este ı̂ndeplinit, deci celula (2, 4) intră ı̂n bază.
Iteraţia 1, PASUL 2. Pentru a determina care celulă iese din bază determinăm
µ-ciclul format din celula (2, 4) cu o parte a celulelor din bază:
(2, 4), (3, 4)∗ , (3, 2), (2, 2)∗ , (2, 4).
86 PROBLEME DE TRANSPORT
Figura 6.3: µ-ciclul format de celula (2,4) cu o parte a celulelor din bază, celulele
de rang par sunt marcate cu ∗.
C1 = 47αβ,
care se trec ı̂n colţurile din dreapta sus ale fiecărei celule secundare.
iii) Calculăm (criteriul de optim):
Exerciţiul 6.1.4. Să se găsească, prin metoda colţului de N-V şi prin metoda
costului minim, o soluţie de bază pentru problema de transport ale cărei date sunt
prezentate ı̂n tabelul 6.5. Găsiţi pentru aceaste soluţii valorile corespunzătoare ale
funcţiilor obiectiv. Care soluţie este mai bună şi de ce? Găsiţi soluţia optimă a
problemei.
TABELUL 6.5
8 3 5 2 10
4 1 6 7 15
1 9 4 3 25
5 10 20 15
TABELUL 6.7
2 3 4 1 2
3 6 2 4 3
1 4 5 3 λ
1 7 1 6
TABELUL 6.8
2 3 4 1 2
3 6 2 4 3
1 4 5 3 λ
2 2 2 2 10 − λ
1 7 1 6
TABELUL 6.9
2 3 4 1 0 2
3 6 2 4 0 3
1 4 5 3 0 λ
1 7 1 6 λ − 10
Exerciţiul 6.1.7. Pentru ce valoare a costului unitar c problema ale cărei date
sunt prezentate ı̂n tabelul 6.10 are optimul egal cu 140?
TABELUL 6.10
8 3 5 2 10
4 1 c 7 15
1 9 4 3 25
5 10 20 15
Definiţia 6.2.1. O reţea de transport flux este un graf orientat G = (X, Γ) ı̂n
care fiecare muchie (u, v) ∈ Γ are o capacitate c(u, v) ≥ 0. Dacă (u, v) ∈
/ Γ, atunci
c(u, v) = 0.
Cantitatea ϕ(u, v), poate fi pozitivă sau negativă şi se numeşte fluxul de reţea de
la u la v.
Vom obţine un nou flux care saturează cel puţin un arc cu relaţia:
½
ϕ(u, v) + ϕi când (u, v) ∈ µi
ϕ(u, v) =
ϕ(u, v) când (u, v) ∈/ µi .
Dacă reţeaua de transport conţine rute neorientate (muchii) ı̂n identificarea aces-
tor drumuri vom avea grijă ca o rută neorientată să nu fie folosită decât ı̂ntr-un
singur sens. Astfel, odată cu identificarea unui drum se orientează şi rutele. Pe
fiecare arc se ı̂nsumează fluxurile propagate.
Fluxul propagat ı̂n reţea este egal cu suma fluxurilor de-a lungul drumurilor
identificate: X
Φ= ϕi .
i
iv) dacă i este un nod marcat şi (i, j) este arc saturat, atunci nodul j nu se
marchează.
Dacă se reuşeşte ca ieşirea t să fie marcată, atunci există un drum sau lanţ de
la s la t. De-a lungul acestui drum sau lanţ notat cu µk se propagă un flux dat de
relaţia:
ϕk = min( min (c(u, v) − ϕ(u, v)), min ϕ(u, v)), ϕk > 0,
(u,v)∈B (u,v)∈C
unde B este mulţimea arcelor pe care se execută marcaj de tip ii), iar C este mulţimea
arcelor pe care se execută marcaj de tip iii).
Se obţine un nou flux ı̂mbunătăţit, cu relaţia:
ϕ(u, v) + ϕk când (u, v) ∈ B
ϕ(u, v) = ϕ(u, v) − ϕk când (u, v) ∈ C
ϕ(u, v) ı̂n rest.
Dacă nu se mai poate marca nodul de ieşire t al reţelei, atunci algoritmul s-a
terminat. Suma fluxurilor propagate de-a lungul drumurilor şi lanţurilor care unesc
nodul de intrare s cu nodul de ieşire t, reprezintă fluxul de valoare maximă ı̂n reţeaua
de transport.
PASUL 3. Se determină tăietura de capacitate minimă.
Fie A mulţimea nodurilor nemarcate ale reţelei, conform procedeului de mar-
care din pasul 2. Mulţimea arcelor (i, j) cu i ∈ / A şi j ∈ A (incidente spre inte-
rior mulţimii A) notată cu ∪ A se va numi tăietură de capacitate minimă ı̂n graf.
Aceasta reprezintă o graniţă ı̂ntre nodurile marcate şi nodurile nemarcate. Capac-
itatea tăieturii se notează c(∪ A) şi se defineşte ca fiind suma capacitatilor arcelor
sale: X
c(∪ A) = c(u, v).
(u,v)∈∪A
Conform teoremei Ford-Fulkerson, ı̂ntr-o reţea de transport dată, fluxul de valoare
maximă este egal cu valoarea tăieturii de valoare minimă, adică:
max Φ(ϕ) = min c(∪ A).
ϕ s∈A,t∈A
/
Dacă nu se mai reuşeşte marcarea nodului de ı̂nceput s, ı̂nseamnă că nu mai există
nici un lanţ de-a lungul căruia fluxul să poată fi diminuat, deci s-a găsit fluxul de
valoare minimă.
6.2.4. Aplicaţii
În acest moment, toate drumurile de la nodul 1 la nodul 9 conţin rute orientate
(fig. 6.6) şi fiecare drum are cel puţin o rută saturată. Fluxul propagat de-a lungul
P 8
acestor drumuri este egal cu: Φ = ϕi = 23.
i=1
În etapa următoare vom aplica procedeul de marcare. Astfel, următoarele noduri
sunt marcate ca ı̂n figura 6.7.
Nodul final 9 nu poate fi marcat, deci fluxul propagat este maxim. Mulţimea
nodurilor nemarcate este: A = {5, 6, 7, 8, 9}, tăietura de capacitate minimă cuprinde
arcele:
∪ A= {(3, 5), (4, 5), (2, 6), (2, 7), (3, 7)},
Fluxul propagat este conform figurii 6.9. Arcele [2, 3] şi [3, 4] nu sunt utilizate.
96 PROBLEME DE TRANSPORT
Noua tăietură de capacitatea egală cu 26, are valoarea minimă şi cuprinde arcele:
{(1, 2), (3, 2), (3, 7), (3, 5), (4, 5)}
FLUX MAXIM INTR-O REŢEA DE TRANSPORT 97
Exerciţiul 6.2.2. Se consideră reţeaua de transport din figura 6.11. Care este
fluxul maxim propagat ı̂ntre nodurile 1 şi 5? (α > 0 parametru real).
Figura 6.11: Fluxul propagat. Este pusă ı̂n evidenţă tăietura de capacitate minimă.
Figura 6.12: Nodul final 5 nu poate fi marcat, deci fluxul nu este maxim.
98 PROBLEME DE TRANSPORT
Tăietura de capacitate maximă este: ∪ A= {(4, 5), (2, 5), (3, 5)}, iar capacitatea
acesteia este c(∪ A) = 48α ceea ce confirmă, conform teoremei Ford-Fulkerson, că
fluxul este maxim. Pentru a mări fluxul trebuie mărită capacitatea unuia sau a mai
multor arce ale tăieturii de capacitate minimă.
Exerciţiul 6.2.3. Un anume tip de produs este disponibil ı̂n trei depozite ı̂n
cantităţile de 30, 40 respectiv 50 t. Acesta este solicitat ı̂n două centre de consum ı̂n
cantităţile de 40 respectiv 80 t. Între sursă şi destinaţie există tronsoane directe, iar
transportul se face cu mijloace auto cu capacităţi limitate (tonaj) conform tabelului
6.11.
TABELUL 6.11
c1 c2
d1 10 2
d2 20 −
d3 10 20
Răspuns. Codificăm problema conform grafului din figura 6.13. Pentru aceasta
am introdus nodul d care constituie intrarea ı̂n reţea şi nodul c care constituie ieşirea
din reţeaua de transport.
Figura 6.13: Codificarea problemei sub forma unei probleme de flux maxim.
sens) care se saturează. În identificarea acestor drumuri vom avea grijă ca o rută
neorientată să nu fie folosită decât ı̂ntr-un singur sens. Astfel, se indică ı̂n continuare
aceste drumuri precum şi fluxul propagat pe fiecare dintre ele. Odată cu identificarea
unui drum se orientează şi rutele. Pe fiecare arc se ı̂nsumează şi fluxurile propagate.
Obţinem deci drumurile:
30 10 40
µ1 : d −→ d1 −→ c1 −→ c, ϕ1 = min{30, 10, 40} = 10,
20 2 80
µ2 : d −→ d1 −→ c2 −→ c, ϕ2 = min{20, 2, 80} = 2,
40 20 30
µ3 : d −→ d2 −→ c1 −→ c, ϕ3 = min{40, 20, 30} = 20,
50 10 10
µ4 : d −→ d3 −→ c1 −→ c, ϕ4 = min{50, 10, 10} = 10,
40 20 78
µ5 : d −→ d3 −→ c2 −→ c, ϕ5 = min{40, 20, 78} = 20.
În acest moment, toate drumurile de la nodul c la nodul d conţin rute orientate
şi fiecare drum are cel puţin o rută saturată. Fluxul propagat de-a lungul acestor
drumuri este egal cu:
X 5
Φ= ϕi = 62.
i=1
În etapa următoare vom aplica procedeul de marcare. Astfel, următoarele noduri
sunt marcate ca ı̂n figura 6.14.
Figura 6.14: Marcarea nodurilor. Nodul final nu poate fi marcat deci fluxul este
maxim.
Nodul final d nu poate fi marcat, deci, fluxul propagat este maxim. Mulţimea
nodurilor nemarcate este:
A = {d1 , d2 , d},
100 PROBLEME DE TRANSPORT
cu valoarea capacităţii:
c(∪ A) = 10 + 2 + 20 + 10 + 20 = 62.
Se observă că valoarea capacităţii tăieturii minime este egală cu valoarea maximă
a fluxului, ceea ce confirmă, conform teoremei Ford-Fulkerson, că fluxul este maxim
(fig. 6.15).
Observăm că cererea nu poate fi satisfăcută, deci pentru mărirea capacităţii tre-
buie mărită capacitatea unuia din arcele tăieturii de capacitate minimă.
> s := 1;
> t := 9;
Se creează reţeaua conform iniţializărilor.
> with(networks) :
> new(G) :
> addvertex(varf uri, G) :
> addedge(muchii, weights = ponderi, G);
Valoarea fluxului maxim.
> f low(G, s, t);
Tăietura de capacitate minimă.
> mincut(G, s, t, vf );
Valoarea tăieturii de capacitate minimă trebuie să fie egală cu valoarea fluxului
maxim (Teorema Ford-Fulkerson).
> vf ;
Graful G.
> draw(G);
Exerciţiul 6.2.5. Pentru ce valoare a parametrului a graful din figura 6.16 ad-
mite un flux maxim ı̂ntre nodurile 1 şi 3 de 40.
8a 3a 4a
µ3 : 1 → 6 → 4 → 3, ϕ3 = 3a.
Fluxul ı̂n reţea fiind Φ = 6a;
b) se marchează nodurile: {1, 2, 5, 6}.
c) tăietura de capacitate minimă fiind: {(5, 3), (6, 3), (6, 4)}, valoarea acesteia
fiind egală cu 6a, deci fluxul este maxim.
Ecuaţia Φmax = 40 duce la a = 20/3.
Exerciţiul 6.2.7. Pentru reţeaua de transport din figura 6.17 cu intrarea 0 şi
ieşirea 7 şi capacităţile scrise pe arce să se determine:
TEORIA STOCURILOR
103
104 TEORIA STOCURILOR
Figura 7.1: Model de stocare a unui produs cu cerere constantă, perioadă constantă
de reaprovizionare şi fără lipsă de stoc.
1
Pentru fiecare perioadă de timp T se fac cheltuielile cl + qT cs (ı̂ntr-o perioadă
2
T se află ı̂n medie cantitatea q/2). Dacă notăm cu ν numărul de reaprovizionări
avem:
Q θ
ν= = .
q T
Funcţia obiectiv C(q) ce trebuie minimizată este:
1 Q 1
(cl + qT cs )ν = cl + qθcs .
2 q 2
MODELE DETERMINISTE 105
obţinem: r
2Qcl
q̂ = .
θcs
00
(C (q̂) > 0 deci extremul este punct de minim).
Obţinem numărul optim de reaprovizionări:
s
Q Qθcs
ν̂ = = ,
q̂ 2cl
perioada optimă: s
θ 2θcl
T̂ = =
ν̂ Qcs
şi gestiunea optimă: p
Ĉ = C(q̂) = 2Qθcs cl .
Figura 7.2: Model de stocare a unui produs cu cerere constantă, perioadă constantă
de reaprovizionare şi cu posibilitatea lipsei de stoc.
Avem:
T1 s
=
T q
şi
T2 q−s
= .
T q
De unde:
s
T1 = T
q
şi
q−s
T2 = T.
q
Deci ı̂nlocuind valorile lui T1 şi T2 ı̂n formula lui C(q, s) obţinem:
Q θ θ
C(q, s) = cl + s2 cs + (q − s)2 cp .
q 2q 2q
Condiţiile de minim pentru funcţia obiectiv sunt:
∂C(q, s)
=0
∂q
şi
∂C(q, s)
= 0.
∂s
MODELE DETERMINISTE 107
Adică:
1 θ θ
− 2
Qcl − 2 s2 cs + 2 (q 2 − s2 )cp = 0,
q 2q 2q
θ θ
scs − (q − s)cp = 0,
q q
de unde obţinem:
2Qcl (cs + cp ) 2
q2 = + s
θcp cp
şi
cp
s= q.
cs + cp
Obţinem pentru valoarea optimă pentru volumul comenzii:
2Qcl cs + cp
qˆ2 = . .
θcp cp
cp
Dacă notăm ρ = (factor de penalizare), obţinem:
cs + cp
s r
2Qcl 1
q̂ = . ,
θcp ρ
perioada optimă: s r
θ 2θcl 1
T̂ = = .
ν̂ Qcp ρ
şi gestiunea optimă: p √
Ĉ = C(q̂, ŝ) = 2Qθcs cl . ρ.
Observaţie. Dacă cp → ∞ atunci ρ → 1 şi obţinem modelul anterior.
108 TEORIA STOCURILOR
Cum funcţiile Ci (qi ) (i = 1, . . . , k) sunt independente, minimul sumei lor are loc
odată cu minimul fiecăreia dintre ele şi deci avem echivalenţă ı̂ntre relaţiile:
∂C(q1 , . . . , qk )
=0
∂qi
şi
∂Ci (qi )
= 0, i = 1, . . . , k.
∂qi
Găsim pentru produsele Pi valorile:
s
2Qi cli
qˆi = ,
θcsi
numărul de reaprovizionări:
s
Qi Qi θcsi
νˆi = = ,
q̂i 2cli
perioada optimă: s
θ 2θcli
T̂ = =
ν̂i Qcsi
110 TEORIA STOCURILOR
X : (x, p(x)), x = 0, 1, 2, . . .
Stocul optim ŝ se obţine din condiţia de minim pentru funcţia obiectiv C(s).
Teorema 7.3.1. (Optim pentru cazul discret). Funcţia C(s) ı̂şi atinge minimul
c2
ı̂n punctul ŝ pentru care F (ŝ − 1) < ρ < F (ŝ), unde ρ = , iar F (s) = P r(x ≤
c1 + c2
Ps
s) = p(x) este o funcţie crescătoare.
x=0
Demonstra¸tie.
C(s) este o funcţie discretă şi ŝ este punct de minim dacă şi numai dacă avem
C(ŝ) < min{C(ŝ − 1), C(ŝ + 1)}. Această dublă inegalitate permite determinarea lui
ŝ ca soluţie a sistemului de inecuaţii:
½
C(s − 1) − C(s) > 0
(7.1)
C(s + 1) − C(s) > 0.
Avem:
s+1
X ∞
X
C(s + 1) = c1 (s + 1 − x)p(x) + c2 (x − s − 1)p(x) =
x=0 x=s+2
s
X ∞
X
= c1 (s + 1 − x)p(x) + c2 (x − s − 1)p(x) =
x=0 x=s+1
Xs s
X ∞
X
= c1 (s − x)p(x) + c1 p(x) + c2 (x − s)p(x) −
x=0 x=0 x=s+1
X∞ s
X X∞
−c2 p(x) = C(s) + c1 p(x) − c2 p(x).
x=s+1 x=0 x=s+1
P
s
Notând F (s) = p(x), avem:
x=0
Analog obţinem:
s−1
X ∞
X
C(s − 1) = c1 (s − 1 − x)p(x) + c2 (x − s + 1)p(x)
x=0 x=s
s−1
X s−1
X ∞
X
= c1 (s − x)p(x) + c1 p(x) + c2 (x − s)p(x)
x=0 x=0 x=s
∞
X s
X ∞
X
+c2 p(x) = c1 (s − x)p(x) + c2 (x − s)p(x)
x=s x=0 x=s+1
+c1 F (s − 1) + c2 (1 − F (s − 1))
sau
de unde:
c2
F (s − 1) < < F (s)
c1 + c2
sau
F (s − 1) < ρ < F (s)
şi teorema este demonstrată.
Observaţii:
i) Dacă F (ŝ − 1) < ρ < F (ŝ) şi deoarece F (s) este crescătoare atunci există ŝ
unic.
ii) Dacă F (ŝ − 1) < ρ = F (ŝ) atunci C(s) are două puncte de minim ŝ şi ŝ + 1.
iii) Dacă F (ŝ − 1) = ρ < F (ŝ) atunci C(s) are două puncte de minim ŝ − 1 şi ŝ.
Cazul continuu. Variabila excedent de stoc Es are repartiţia:
µ ¶
s−x
Es : , x ∈ [0, s],
f (x)
cu media:
Zs
M (Es ) = (s − x)f (x)dx,
0
MODELE PROBABILISTE 113
cu media:
Z∞
M (Ls ) = (x − s)f (x)dx.
s
Zs Z∞
C(s) = c1 (s − x)f (x)dx + c2 (x − s)f (x)dx.
0 s
Stocul optim ŝ se obţine din condiţia de minim pentru funcţia obiectiv C(s).
Teorema 7.3.2. (Optim pentru cazul continuu). Funcţia C(s) ı̂şi atinge mini-
c2 Rs
mul ı̂n punctul ŝ pentru care F (ŝ) = ρ, unde ρ = şi F (s) = = f (x)dx.
c1 + c2 0
Demonstraţie.
Zs Z∞
0
C (s) = c1 f (x)dx − c2 f (x)dx
0 s
0
şi din condiţia C (s) = 0, rezultă:
c1 F (s) − c2 (1 − F (s)) = 0,
de unde:
c2
F (s) = = ρ.
c1 + c2
00
Soluţia ecuaţiei F (s) = ρ o vom nota cu ŝ şi deoarece C (s) > 0, aceasta este
punct de minim.
114 TEORIA STOCURILOR
X : (x, p(x)), x = 0, 1, 2, . . .
pentru care se plătesc cheltuieli unitare de stocare cs pe perioada T1 şi o lipsă medie
de stoc (penurie medie):
X∞
x−s
p(x),
2
x=s+1
penalizată cu un cost unitar de penalizare cp pe perioada T2 .
Funcţia obiectiv a modelului reprezintă cheltuielile medii totale legate de mana-
gementul stocului, pe perioada T , adică:
s
X ∞
X ∞
X
x s x−s
CT (s) = cs T (s − )p(x) + cs T1 p(x) + cp T2 p(x).
2 2 2
x=0 x=s+1 x=s+1
Avem:
T1 s
=
T x
şi
T2 x−s
= ,
T s
de unde:
s
T1 = T
x
116 TEORIA STOCURILOR
şi
x−s
T2 = T
s
Înlocuind valorile lui T1 şi T2 ı̂n formula lui CT (s) găsim:
CT (s) = T C(s),
unde am notat prin C(s) cheltuielile medii totale ı̂n unitatea de timp şi:
s
X ∞
X ∞
X
x 1 p(x) 1 (x − s)2
C(s) = cs (s − )p(x) + cs s2 + cp p(x).
2 2 x 2 x
x=0 x=s+1 x=s+1
Teorema 7.3.3. (Optim pentru cazul discret). Funcţia C(s) ı̂şi atinge minimul
cp
ı̂n punctul ŝ pentru care L(ŝ − 1) < ρ < L(ŝ), unde ρ = şi
cs + cp
s
X ∞
1 X p(x)
L(s) = p(x) + (s + ) .
2 x
x=0 x=s+1
Demonstraţie.
Condiţia de minim pentru funcţia discretă C(s) este
s+1
X ∞
X
x 1 p(x)
C(s + 1) = cs (s + 1 − )p(x) + cs (s + 1)2 +
2 2 x
x=0 x=s+2
∞
X
1 (x − s − 1)2
+ cp p(x).
2 x
x=s+2
s+1
X s+1
X s+1
X
x x
(s + 1 − )p(x) = (s − )p(x) + p(x) =
2 2
x=0 x=0 x=0
s
X s
X
x s+1
= (s − )p(x) + p(x) + p(s + 1),
2 2
x=0 x=0
∞
X ∞
X
p(x) p(x) p(s + 1)
= −
x x s+1
x=s+2 x=s+1
şi
∞
X ∞
X ∞
X
(x − s − 1)2 (x − s − 1)2 (x − s)2
p(x) = p(x) = p(x) −
x x x
x=s+2 x=s+1 x=s+1
X X∞ ∞
X
(x − s)2 p(x) (x − s)2
−2 ∞ p(x) + = p(x) −
x x x
x=s+1 x=s+1 x=s+1
X∞ ∞
X p(x)
−2 p(x) + (2s + 1) .
x
x=s+1 x=s+1
sau
Analog găsim:
C(s − 1) − C(s) = −(cs + cp )L(s − 1) + cp .
Înlocuind aceste relaţii ı̂n sistemul descris obţinem:
½
(cs + cp )L(s) − cp > 0
−(cs + cp )L(s − 1) + cp > 0,
de unde rezultă că L(s − 1) < ρ < L(s) şi teorema este demonstrată. Se arată
00
simplu că C (ŝ) > 0 şi, deci, ŝ soluţia inegalităţilor L(s − 1) < ρ < L(s) este punct
de minim. Gestiunea optimă se obţine calculând pe C(ŝ).
118 TEORIA STOCURILOR
Teorema 7.3.4. (Optim pentru cazul continuu). Funcţia C(s) ı̂şi atinge mini-
cp
mul ı̂n punctul ŝ pentru care L(s) = ρ, unde ρ = şi:
cs + cp
Z∞ Zs
f (x)
L(s) = F (s) + s dx, cu F (s) = f (x)dx.
x
s 0
Demonstraţie.
Avem:
Zs Z∞ Z∞
0 f (x) (x − s)
C (s) = cs f (x)dx + scs dx − cp f (x)dx.
x x
0 s s
0
Ecuaţia C (s) = 0 ne dă:
Z∞
f (x) cp
F (s) + s dx = , sau L(s) = ρ.
x cs + cp
s
00
Soluţia ecuaţiei L(s) = ρ o vom nota cu ŝ şi deoarece C (ŝ) > 0, aceasta este punct
de minim.
7.4. Aplicaţii
Exerciţiul 7.4.1. O unitate comercială are o cerere anuală (365 zile) de 2000t
benzină. Costul de lansare al comenzii este de 150$, iar costul de stocare pe zi este de
0,5$/t. În ipoteza că se admite un consum uniform, aprovizionarea se face ı̂n cantităţi
egale şi că nu se admite lipsa benzinei din stoc, să se determine: volumul optim
al unei comenzi, numărul optim de reaprovizionări, perioada optimă şi gestiunea
optimă.
APLICAŢII 119
Exerciţiul 7.4.2. La un magazin se estimează că cererea lunară (30 zile) pentru
un anume tip de produs este de 6000 kg. Costul zilnic de stocare pentru 10 kg din
marfa respectivă este de 0, 25$, costul de lansare a unei comenzi este de 100$ şi
costul de penalizare de 0, 25$ /kg. În ipoteza că se admite o vânzare uniformă,
aprovizionarea se face ı̂n cantităţi egale şi la intervale egale de timp, să se determine
volumul optim al unei comenzi, stocul optim, numărul optim de reaprovizionări,
perioada optimă şi gestiunea optimă.
Exerciţiul 7.4.5. Cererea (ı̂n tone) pentru o anumită marfă este o variabilă
aleatoare cu densitatea de probabilitate:
½
λ(x + α), x ∈ [0, 5]
f (x) =
0, ı̂n rest.
Ştiind că surplusul de marfă se vinde cu o pierdere de 10$ /t, iar ı̂n cazul lipsei
de marfă se fac cheltuieli suplimentare de aprovizionare de 20$/t, să se optimizeze
stocul. Parametrul α este un număr ı̂ntreg bine precizat.
R5
Răspuns. Determinăm mai ı̂ntâi valoarea λ din condiţia λ(x+α) = 1. Obţinem:
0
2
λ= .
25 + 10α
Zs
s2
F (s) = λ (x + α)ds = λ( + αs),
2
0
APLICAŢII 121
iar ecuaţia
c2
F (s) =
c1 + c2
devine:
2 s2 2
( + αs) = ,
25 + 10α 2 3
care este echivalentă cu:
10(5 + 2α)
s2 + 2αs − = 0.
3
√
Soluţia ŝ(α) = −α + 13 9α2 + 30 ∈ [0, 5] a acestei ecuaţii este stocul optim.
Gestiunea optimă va fi C(ŝ(α)).
Exerciţiul 7.4.6. Cererea (ı̂n tone) pentru o anumită marfă este o variabilă
aleatoare cu densitatea de probabilitate:
½
λ(x + α), x ∈ [0, 5]
f (x) =
0, ı̂n rest.
Ştiind că costul de stocare este de 1$/t, iar ı̂n cazul lipsei de marfă cheltuielile
de penalizare sunt de 10$/t, să se optimizeze stocul. Parametrul α este un număr
ı̂ntreg bine precizat.
R5
Răspuns. Determinăm mai ı̂ntâi valoarea λ din condiţia λ(x+α) = 1. Obţinem:
0
2
λ= .
25 + 10α
Funcţia de repartiţie va fi:
Zs
s2
F (s) = λ (x + α)ds = λ( + αs),
2
0
Ecuaţia
Z∞
f (x) cp
F (s) + s dx =
x cp + cs
0
Z∞
s2 λ(x2 + α) 10
λ( + αs) + s dx =
2 x 11
s
sau
Z∞
s2 λ(x2 + α) 10
λ( + αs) + s dx = ,
2 x 11
s
ecuaţie care nu are soluţii (integrala este divergentă). Acest lucru ne arată că nu se
poate calcula mereu un stoc optim.
Exerciţiul 7.4.7. În vederea efectuării unor studii de marketing, o agenţie comer-
cială cumpără un calculator electronic. Calculatorul este dotat cu un număr de cir-
cuite integrate care ı̂n caz de defectare se schimbă. Se ştie că acest tip de circuite
cumpărate odată cu calculatorul costă 5$ bucata, iar comanda specială costă 10$
bucata. Datele statistice arată următoarea cerere de terminale (tabelul 7.1):
TABELUL 7.1
Circuite ı̂nlocuite (x) 0 1 2 3 4
Număr calculatoare cu x circuite ı̂nlocuite 1 2 4 2 1
În ipoteza costului de stocare neglijabil, să se determine stocul optim de circuite
integrate comandate o dată cu calculatorul precum şi gestiunea optimă.
Exerciţiul 7.4.8. Se ştie că un anumit produs are o cerere lunară aleatoare
conform cu tabelul 7.2:
TABELUL 7.2
cererea x 1 2 3 4
p(x) 0,2 0,3 0,4 0,1
În ipoteza că se admit cheltuieli de stocare pe zi pentru o tonă de 1$ şi că lipsa
de stoc este penalizată cu 3$ pe zi pentru o tonă lipsă, să se determine stocul optim.
PROBABILITĂŢI ŞI
ELEMENTE DE STATISTICĂ
MATEMATICĂ
8
Pr(A) = = 0, 22.
36
b) Schema lui Bernoulli (1700-1782), fără ı̂ntoarcere. Se consideră o urnă ce
conţine N bile de m culori diferite, dintre care N1 de culoarea 1,. . . ,Nm de culoarea
m. Se fac n extrageri succesive din urnă, fără revenire. Probabilitatea ca din cele n
bile extrase n1 să fie de culoarea 1, . . . , nm să fie de culoarea m, este:
123
124 PROBABILITĂŢI ŞI ELEMENTE DE STATISTICĂ MATEMATICĂ
n1 n2 nm
CN1
· CN2
. . . CNm
Pr(n; n1 , . . . , nm ) = n .
CN
n!
Pr(n; n1 , . . . , nm ) = pn1 · pn2 2 . . . pnmm .
n1 ! . . . nm ! 1
unde p = Pr(A), q = 1 − p.
f¯2 este variabila aleatoare care are repartiţia:
µ ¶ µ ¶ µ ¶
0 1 0 1 0 1 2
+ = .
q p q p q 2 2qp p2
1
Frecvenţa relativă ν̄n este variabila aleatoare ν̄n = · f¯n .
n
Prin urmare frecvenţele absolute şi frecvenţele relative pot fi privite ca şiruri
numerice, (fn ) şi (νn ) şi pot fi privite ca varialibele aleatoare (f¯n ) şi (ν̄n ).
aria(A)
Exemplul 8.1.2. Probabilităţi geometrice. (Ω, K, P), A ∈ K, Pr(A) = .
aria(Ω)
Definiţia 8.1.2.
T Două evenimente A şi B din K se numesc incompatibile dacă
şi numai dacă A B = ∅.TDouă evenimente A şi B din K se numesc independente
dacă şi numai dacăPr(A B) = Pr(A)P r(B). Trei evenimente A, B, C se numesc
independente dacă şiTnumai
T dacă oricare două sunt independente şi toate trei sunt
independente (Pr(A B C) = Pr(A) Pr(B) Pr(C)).
Exemplul 8.1.3. (S. Bernstain, 1880-1968). Se consideră un zar care are patru
feţe. Faţa 1 este colorată ı̂n R şi N , faţa 2 este colorată ı̂n R şi V , faţa 3 este colorată
ı̂n N şi V , faţa 4 contine toate culorile R, N şi V . Evenimentele ca la o aruncarea
să iasă o faţă care conţine (R şi N ),(R şi V ),(V şi N ) sunt mutual independente dar
nu sunt independente.
În situaţia ı̂n care câmpul de probabilitate (Ω, K, P) avem un sistem complet de
evenimente A1 , . . . , An probabilitatea unui eveniment X se va exprima prin formula
probabilităţii totale:
n
X
Pr(X) = Pr(Ai ) Pr(X|Ai ).
i=1
Formula lui Bayes exprimă probabilitatea aposteriori a evenimetului Ai ı̂n situaţia
ı̂n care s-a observat evenimentul X:
Pr(Ai ) Pr(X|Ai ) Pr(Ai ) Pr(X|Ai )
Pr(Ai |X) = = n .
Pr(X) P
Pr(Ai ) Pr(X|Ai )
i=1
β−m α−m
normală, atunci: Pr(α ≤ f ≤ β) = Φ( ) − Φ( ).
σ σ
Dacă f este o variabilă aleatoare cu media m şi media pătratică σ, atunci: Pr(|f −
σ2
m| ≥ ²) ≤ 2 , ² > 0.
²
µ ¶
p p
Observaţie. Dacă ν n → p = , deci totdeauna ν n tinde ı̂n probabilitate la
1
µ ¶
p
variabila aleatoare . Evident sunt ”miracole” când νn nu converge la p dar ı̂n
1
”imensa majoritate” a cazurilor νn → p.
Legea numerelor mari dă relaţia dintre p = Pr(A), probabilitatea lui A, calculată
sau estimată ı̂ntr-un anume mod şi probabilitatea lui A ı̂n sens statistic.
TEOREMA LIMITĂ CENTRALĂ 131
Teorema 8.4.1. Fie (fn ) un şir de variabile aleatoare pe (Ω, K, P), astfel ı̂ncât:
1. (fn ) variabile aleatoare independente;
2. (fn ) sunt din aceeiaşi ”lume”, adică au aceiaşi densitate de probabilitate (sau
aceiaşi matrice de repartiţie), deci au aceiaşi medie m şi aceiaşi medie pătratică σ 2 .
β−n·m
Atunci, pentru n ”mare” avem: Pr(α ≤ f1 + . . . + fn ≤ β) ≈ Φ( √ )−
σ n
α−n·m
Φ( √ ).
σ n
Teorema 8.4.2. Fie (fn ) un şir de variabile aleatoare pe (Ω, K, P), astfel ı̂ncât:
1. (fn ) variabile aleatoare independente. µ ¶
0 1
2. (fn ) variabile aleatoare, din aceeiaşi ”lume”, Bernoulliană cu X = .
q p
β−n·p
Atunci, pentru n ”mare” avem: Pr(α ≤ f1 + . . . + fn ≤ β) ≈ Φ( √ )−
npq
α−n·p
Φ( √ ).
npq
132 PROBABILITĂŢI ŞI ELEMENTE DE STATISTICĂ MATEMATICĂ
x1 + . . . + xn
x̄ = ,
n
Fie o populaţie statistică f (ω) cu media m şi dispersia σ 2 . Presupunem faptul că
legea lui f este p(x, θ1 , . . . , θs ), o densitate de probabilitate depinzând de s parametrii
sau X(θ1 , . . . , θs ) o matrice de repartiţie depinzând de s parametrii.
Metoda momentelor estimează parametrii necunoscuţi prin estimarea, din eşantion,
a momentelor de ordinul i E(X i ) şi egalarea acestora cu valoarea (necunoscută)
rezultată din calculul direct.
Metoda verosimilităţii maxime calculează estimaţia parametrilor θ1 , . . . , θs prin
alfarea maximului funcţiei de verosimilitate:
n
Y n
X
L(x1 , . . . , xn ; θ1 , . . . , θs ) = ln p(xi , θ1 , . . . , θs ) = ln p(xi , θ1 , . . . , θs ).
i=1 i=1
INTERVALE DE ı̂NCREDERE 133
α
Φ(z1− α2 ) = Pr(z ≤ z1− α2 ) = 1 − .
2
2. Intervalul de ı̂ncredere pentru media m a unei populaţii normale, cu σ ne-
cunoscut şi n ≤ 30, este:
s s
x̄ − t1− α2 ;n−1 √ < m < x̄ + t1− α2 ;n−1 √
n n
nivelul de ı̂ncredere este 1 − α, iar t1− α2 (n − 1) fiind determinat din relaţia:
α
Pr(t ≤ t1− α2 ;n−1 ) = 1 − ,
2
unde numărul gradelor de libertate al repartiţiei t este n − 1.
134 PROBABILITĂŢI ŞI ELEMENTE DE STATISTICĂ MATEMATICĂ
α
Φ(z1− α2 ) = Pr(z ≤ z1− α2 ) = 1 − ,
2
unde np ≥ 5, nq ≥ 5, p + q = 1.
(n − 1)s2 2 (n − 1)s2
< σ <
χ21− α ;n−1 χ2α ;n−1
2 2
nivelul de ı̂ncredere este 1 − α, iar χ2α ;n−1 fiind determinat din relaţia:
2
α
Pr(χ2 ≤ χ2α ;n−1 ) = ,
2 2
unde numărul gradelor de libertate al repartiţiei χ2 este n − 1.
Valoarea P este cel mai mic prag de semnificaţie (risc de ordinul 1) pentru care
se respinge ipoteza nulă H0 (pe baza valorilor statisticii f (X1 , ..., Xn )) deci:
P ≤α resping H0 la pragul α,
şi
α<P accept H0 la pragul α.
√
n(x̄ − m0 )
z= ≤ zα .
σ
x̄ − ȳ x̄ − ȳ
z=q ≤ z α2 sau z = q ≥ z1− α2 .
σ12 σ22 σ12 σ22
n + m n + m
(n − 1)s2
χ2 = ≥ χ21−α;n−1 .
σ02
(n − 1)s2
χ2 = ≤ χ2α;n−1 .
σ02
TESTE PENTRU EVALUARE 137
(n − 1)s2
χ2 = ≤ χ2α ;n−1
σ02 2
sau
(n − 1)s2
χ2 = ≥ χ21− α ;n−1 .
σ02 2
8.8.1. Testul 1
Exerciţiul 8.8.1.1. a) Enunţaţi teorema celor 3σ.
b) Legea uniformă pe intervalul [10, 20]. Media şi abaterea medie pătratica pentru
o variabilă aleatoare uniform repartizată pe [10, 20].
c) Fie (fn ) variabile aleatoare, care au densităţile de probabiliatate (pn ), respec-
tiv, unde pn are graficul:
8.8.2. Testul 2
8.8.3. Testul 3
8.8.4. Testul 4
Exerciţiul 8.8.4.2. Se alege un triunghi, ı̂n mod aleatoriu, din mulţimea tu-
turor triunghiurilor. Fie A evenimentul ca un unghi al triunghiului ales să fie mai
mare sau egal cu 120◦ . Fie p = Pr(A).
a) Calculaţi p.
b) Se efectuează această experienţă de 1000 ori. Să se determine probabilitatea
ca evenimentul A să se producă de un număr de ori cupris ı̂ntre 100 şi 200 ori.
c) Să se determine de câte ori trebuie efectuată exprienţa, astfel ı̂ncât ν̄n ≈ p, cu
eroare de cel mult 0, 01 cu o probabilitatea de 0, 7.
8.8.5. Testul 5
Exerciţiul 8.8.5.1. a) Teorema celor 3σ. Deduceţi o teoremă analoagă 2σ.
n 1
b) Fie densitatea de probabilitate pn (x) = · 2 .
π x + n2
p
fn variabila aleatoare cu densitatea de probabilitate pn . fn → 0?
8.8.6. Testul 6
p
Exerciţiul 8.8.6.1. a) Definiţi convergenţa ı̂n probabilitate, fn → f.
b) Se consideră (fn ), un şir de variabile aleatoare care au densitatea de probabil-
itate pn , acestea având graficul din figura 8.6.
Exerciţiul 8.8.6.2. Câştigul zilnic al unui jucător la ruletă este repartizat uni-
form ı̂n intervalul [−45, 55]. Care este probabilitatea ca el să câştige 1000 euro ı̂n
100 zile?
142 PROBABILITĂŢI ŞI ELEMENTE DE STATISTICĂ MATEMATICĂ
Repartiţia normală
(x − µ)2
2 1 −
n(x; µ, σ ) = √ e 2σ 2 , x ∈ R.
σ 2π
Teorema 8.9.1. Media şi dispersia unei variabile aleatoare X repartizată nor-
mal de parametrii µ şi σ 2 este:
M (X) = µ,
respectiv
D2 (X) = σ 2 .
Teorema 8.9.2. Dacă X1 şi X2 au o repartiţie N (µ1 , σ12 ), respectiv N (µ2 , σ22 )
atunci
αX1 + βX2 ∼ N (αµ1 + βµ2 , α2 σ12 + β 2 σ22 )
unde α, β ∈ R.
Repartiţia lognormală
Teorema 8.9.3. Media şi dispersia unei variabile aleatoare X repartizată log-
normal de parametrii µ şi σ 2 este:
1 2
M (X) = eµ+ 2 σ ,
respectiv
2 2
D2 (X) = e2µ+σ (eσ − 1).
Teorema 8.9.5. Dacă X1 şi X2 au o repartiţie LN (µ1 , σ12 ), respectiv LN (µ2 , σ22 )
atunci:
eβ X1α1 X2α2 ∼ N (β + α1 µ1 + α2 µ2 , α12 σ12 + α22 σ22 )
Repartiţia uniformă
Definiţia 8.9.3. Vom spune că variabila aleatoare X are o repartiţie uniformă
ı̂n intervalul [a, b] (vom scrie acest lucru prin X ∼ U (a, b)) dacă densitatea sa de
repartiţie este:
1
u(x) = , x ∈ [a, b] şi u(x) = 0, x∈
/ [a, b].
b−a
Teorema 8.9.6. Media şi dispersia unei variabile aleatoare X repartizată U (a, b) :
a+b
M (X) = ,
2
respectiv
(b − a)2
D2 (X) = .
12
144 PROBABILITĂŢI ŞI ELEMENTE DE STATISTICĂ MATEMATICĂ
Repartiţia exponenţială
Definiţia 8.9.4. Vom spune despre variabila aleatoare X că urmează o repartiţie
exponenţială de parametru λ > 0 (vom scrie acest lucru X ∼ Exp(λ)) dacă densi-
tatea de repartiţie este f (t) = λe−λt pentru t ≥ 0 şi f (t) = 0 pentru t < 0.
1
M (X) = ,
λ
1
D2 (X) =
λ2
şi
r!
M (X r ) = .
λr
Repartiţia gama
Definiţia 8.9.5. Vom spune despre o variabilă aleatoare că urmează o repartiţie
gama de parametrii α şi β (vom scrie acest lucru X ∼ γ(α, β)) dacă are densitatea
de repartiţie:
1 −x
f (x) = α xα−1 e β , 0 ≤ x < ∞.
β Γ(α)
unde Γ este funcţia lui Euler definită prin formula:
Z∞
Γ(α) = xα−1 e−x dx.
0
X
b) are densitatea de repartiţie:
Y
Γ(α1 + α2 ) α1 −1
h(x) = x (1 + x)−(α1 +α2 ) , x ≥ 0.
Γ(α1 )Γ(α2 )
Repartiţia beta
Definiţia 8.9.6. Vom spune că variabila aleatoare X urmează o repartiţie beta
de parametrii α şi β (vom scrie acest lucru ca X ∼ Be(α, β)), dacă are densitatea
de repartiţie:
(
Γ(α+β) α−1
Γ(α)Γ(β) x (1 − x)β−1 , 0 < x < 1; α, β > 0
f (x) =
0 ı̂n rest.
X/m
F = ∼ Be(α, β).
Y /n
X
t = q ∼ t(n).
Y
n
CÂTEVA DISTRIBUŢII IMPORTANTE 147
Repartiţia Cauchy
Distribuţia Bernoulli
Distribuţia binomială
µ ¶k µ ¶n−k
a n
P (X = k) = Cnk 1− .
a+b a+b
Distribuţia Poisson
Distribuţia Poisson se obţine din distribuţia Bi(n, p) când n → ∞, p → 0 şi
produsul n · p = λ este constant. Funcţia densitate de probabilitate este dată de:
λk e−λ
P (X = k) = , k = 0, 1, 2, . . .
k!
Distribuţia hipergeometică
Distribuţia hipergeometrică este modelată de o selecţie fără revenire dintr-o urnă
U (a, b) care conţine a bile albe şi b bile negre şi este probabilitatea ca din n extrageri
să se obţină k bile albe:
Cak Cbn−k
P (X = k) = n unde n ≤ a + b şi k ≤ a.
Ca+b
Distribuţia geometrică
Distribuţia geometrică are funcţia de densitate de probabilitate dată de:
P (X = n) = p(1 − p)n , pentru n = 0, 1, . . .
Este numită distribuţia lui Pascal (1623-1662) şi mai este numită distribuţia
primului succes.
CRIPTOLOGIE
151
Capitolul 9
SISTEMUL DE CIFRARE
CEZAR
Rezolvare: Se cifrează literă cu literă, ţinând cont de poziţia ocupată de litere ı̂n
alfabet:
- Literei C ı̂i corespunde x = 2, deci se va cifra ı̂n (2 + 7) mod 26 = 9 adică J;
- Literei R ı̂i corespunde x = 16, deci se va cifra ı̂n (17 + 7) mod 26 = 24, adică
Y;
153
154 SISTEMUL DE CIFRARE CEZAR
Se continuă ı̂n mod analog pentru fiecare literă şi ı̂n final se obţine JYPWA
VNYHM PL.
Rezolvare: Se verifică, pe rând, toate cheile posibile, până când se obţine un text
cu sens. În funcţie de lungimea cheii, corespondenţa dintre literele textului clar şi
cele ale textului cifrat devine:
x 0 1 2 3 4 5 6 ... 25
textul clar A B C D E F G ... Z
k =1 B C D E F G H ... A
k =2 C D E F G H I ... B
k =3 D E F G H I J ... C
k =4 E F G H I J K ... D
k =5 F G H I J K L ... E
... .. .. .. .. .. .. .. .. ..
Răspuns: PLUDFOH.
METODA SUBSTITUŢIEI
A B C D E F G H I J K L M
G H I J K L M N O P Q R S
157
158 METODA SUBSTITUŢIEI
N O P Q R S T U V W X Y Z
T U V W X Y Z A B C D E F
- inversă (alfabetul cifrat are sens invers lexicografic cu alfabetul clar, sunt ı̂n
total 26 de astfel de substituţii). Exemplu de substituţie inversă:
A B C D E F G H I J K L M
U T S R Q P O N M L K J I
N O P Q R S T U V W X Y Z
H G F E D C B A Z Y X W V
Reamintim aici trei exemple celebre (vechile coduri ebraice) de substituţii reciproce
(dacă litera X se substituie cu litera Y atunci Y se va substitui cu X ) şi anume:
- atbash (prima jumătate a literelor alfabetului se mapează ı̂n cea de-a două
jumătate ı̂n ordine invers lexicografică):
A B C D E F G H I J K L M
Z Y X W V U T S R Q P O N
- albam (prima jumătate a literelor alfabetului se mapează ı̂n cea de-a două
jumătate ı̂n ordine lexicografică):
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
- atbah:
A B C D J K L M E S T U V
I H G F R Q P O N Z Y X W
În cele ce urmează vom presupune faptul că substituţia este directă dacă nu este
specificat altfel.
T EST ARESIST EM
0 1 2 3 4 5 6 7 8 9 10 11 12
25 24 23 22 21 20 19 18 17 16 15 14 13
13 14 15 16 17 18 19 20 21 22 23 24 25
12 11 10 9 8 7 6 5 4 3 2 1 0
Rezolvare:
Corepondenţa dintre alfabetul clar şi alfabetul de cifrare (ı̂nainte de realizarea
permutării) este:
A B C D E F G H I J K L M
T E S A R I M B C D F G H
N O P Q R S T U V W X Y Z
J K L N O P Q U V W X Y Z
Corepondenţa dintre alfabetul clar şi alfabetul de cifrare după realizarea per-
mutării este:
A B C D E F G H I J K L M
Z Y X W V U Q P O N L K J
N O P Q R S T U V W X Y Z
H G F D C B M I R A S E T
Mesajul clar se procesează astfel ı̂ncât spaţiul este ı̂nlocuit cu cea mai puţin
frecventă literă:
Rezolvare:
Corespondenţa dintre alfabetul clar şi alfabetul de cifrare este:
A B C D E F G H I J K L M
P A S W O R D B C E F G H
N O P Q R S T U V W X Y Z
I J K L M N Q T U V X Y Z
Exerciţiul 10.3.2. Dezvoltaţi o aplicaţie care să decripteze, prin metoda frecvenţei,
mesajele cifrate prin metoda substituţiei.
Exerciţiul 10.3.3. Dezvoltaţi o aplicaţie care să decripteze, prin metoda atac-
ului cu text clar cunoscut, mesajele cifrate prin metoda substituţiei.
SISTEMUL DE CIFRARE
PLAYFAIR
Observaţia 11.1.1. Dacă o digramă apare ı̂n textul clar ı̂n ordine inversă atunci
163
164 SISTEMUL DE CIFRARE PLAYFAIR
Metoda cea mai freventă de atac a acestui tip de cifru constă ı̂n analiza frecvenţei
digramelor de text clar combinată cu metoda comparaţiei patternurilor din textul
cifrat cu patternuri din dicţionar.
CRIP T OGRAF IE
Rezolvare: Matricea Playfair se obţine trecând literele din parolă o singură dată
ı̂n careul de 5 × 5 iar apoi celelalte litere ale alfabetului ı̂n ordine lexicografică:
C R I/J P T
O G A F E
B D H K L
M N Q S U
V W X Y Z
• QI - ı̂ntrucât literele sunt pe aceeaşi coloană se aplică regula cifrează ı̂n jos,
descifrează ı̂n sus, obţinându-se digrama XA ( X este litera situată sub Q şi A
este litera situată sub I).
Rezolvare: Matricea Playfair este aceeaşi din exerciţiul anterior, fiind formată
pornind de la aceeaşi parolă.
Exemplificăm pentru fiecare caz operaţia de descifrare pe câte o digramă:
• LE - ı̂ntrucât literele sunt pe aceeaşi coloană se aplică regula cifrează ı̂n jos,
descifrează ı̂n sus, obţinându-se digrama ET (E este litera situată deasupra lui
L şi T este litera situată deasupra lui E).
În continuare, respectând regulile de descifrare Playfair mesajul cifrat devine:
SECRET WRITING.
Răspuns: POFDKQDAKB.
Răspuns: RFOYHB.
Răspuns: SINAIA.
Răspuns: PREDEAL.
168 SISTEMUL DE CIFRARE PLAYFAIR
Capitolul 12
SISTEMUL DE CIFRARE
HILL
Observaţia 12.1.2. În cazul alfabetului latin p = 26, cheia de cifrare K trebuie
să fie o matrice inversabilă mod 26.
169
170 SISTEMUL DE CIFRARE HILL
Deci, BL se cifrează ı̂n GL. Se continuă ı̂n mod analog. În final se obţine:
GLFSS MPBDT HB.
Algoritmul utilizat la cifrare este cifrul lui Hill (3 × 3), cheia de cifrare fiind
matricea:
A B C
B C A .
C A B
Răspuns: CRYPTOLOGY.
SISTEME DE CIFRARE
POLIALFABETICE
175
176 SISTEME DE CIFRARE POLIALFABETICE
Rezolvare: Aplicând cifrarea pentru fiecare caracter al textului clar, ţinând cont
de poziţia acestora ı̂n alfabet, se obţine:
Răspuns: UDHLPIQLOQ.
Răspuns: LLQIVRAT.
Exerciţiul 13.3.7. Să se descifreze mesajul UAEGQD OOGAT ştiind că a fost
cifrat cu ajutorul algoritmului Vigenère, parola fiind TANGO.
Exerciţiul 13.3.8. Să se descifreze mesajul XVLGM OXLDC ştiind că a fost
cifrat cu ajutorul algoritmului Vigenère, parola fiind BRIDE.
Exerciţiul 13.3.14. Să se descifreze mesajul VVAI MSYK TJAX ştiind că a
fost cifrat cu ajutorul algoritmului Vigenère, parola fiind TEST.
Răspuns: CRIPTOGRAFIE.
180 SISTEME DE CIFRARE POLIALFABETICE
Capitolul 14
METODA TRANSPOZIŢIEI
CRIP T OGRAF IE
Rezolvare: Vom construi secvenţa numerică de cifrare asociind fiecărei litere din
parolă indicele din ordinea lexicografică: astfel literele din parolă, scrise ı̂n ordine
lexicografică sunt:
181
182 METODA TRANSPOZIŢIEI
1 2 3 4 5 6 7 8 9 10 11 12
A C E F G I I O P R R T
2 10 6 9 12 8 5 11 1 4 7 3
S I Q I N Q C R I P T O
G R A F I E Q T A C E R
E A Q E S T E Q A U R Q
SISTEME MIXTE
Rezolvare: Mai ı̂ntâi textul este cifrat cu sistemul Cezar folosind cheia k = 5, deci
corespondenţa dintre cele 2 alfabete devine:
Astfel se obţine: LJT RJY WNH KNL ZWJ. Apoi, textul obţinut se aşează ı̂ntr-o
tabelă cu 3 coloane:
185
186 SISTEME MIXTE
2 1 3
L J T
R J Y
W N H
K N L
Z W J
Rezolvare: Cum substituţia şi transpoziţia sunt comutative, putem mai ı̂ntâi de-
cripta mesajul folosind Cezar cu cheia k = 2 şi apoi decripta prin metoda transpoziţiei.
Pentru decriptarea mesajului folosind metoda Cezar cu k = 2, fiecare caracter se
ı̂nlocuieşte cu caracterul situat cu 2 poziţii mai ı̂nainte ı̂n alfabet:
După decriptare, textul devine: BITSP SRSZI UDATE CREMA VUTUA MATNO
TSTUE DEFRO TISST IILIA PIANO MODIA CUTE .
Acesta reprezintă un text cifrat prin metoda transpoziţiei. Cum textul are 64 de
caractere şi permutarea este de lungime 3, atunci numărul de litere pe coloane este:
21, 21 si
¸ 22. Coloanele cu numai 21 de caractere sunt cele care corespund valoriilor
luate ı̂n ordine descrescătoare din permutarea inversă σ −1 = (3, 2, 1):
EXERCIŢII PROPUSE 187
3 2 1 1 2 3
B U S S U B
I T S S T I
T U T T U T
S A I I A S
P M I I M P
S A L L A S
R T I I T R
S N A A N S
Z O P P O Z
I T I I T I
U S A A S U
D T N N T D
A U O O U A
T E M M E T
E D O O D E
C E D D E C
R F I I F R
E R A A R E
M O C C O M
A T U U T A
V I T T I V
E E
GENERATOARE
PSEUDOALEATOARE
unde ci ∈ {0, 1}. Conexiunea de feedback a unui LFSR poate fi exprimată printr-un
191
192 GENERATOARE PSEUDOALEATOARE
polinom de feedback:
f (X) = 1 + X + X 2 + X 3 + X 4 ,
Φ(2n − 1)
Np (n) = ,
n
unde Φ(x), cunoscută ca funcţia lui Euler, desemnează cardinalul de numere naturale
mai mici ca x şi relativ prime cu x. Observăm că dacă un polinom f (X) este
primitiv atunci şi polinomul reciproc lui adică X n f ( X1 ) este primitiv. Se ştie că
orice polinom primitiv este ireductibil. Reciproca nu este adevărată. Numărul de
polinoame ireductibile de grad n ı̂n algebra mod p ( p = 2 ) este dat de formula
următoare:
1X d n
NI (n) = p µ( ),
n d
d|n
Q
k
unde µ este funcţia lui Möebius definită ı̂n felul următor pentru n = pαi i : µ(n) = 0
1
Q
k
dacă αi > 1, µ(n) = (−1)k dacă n este produsul a k numere prime distincte şi
i
EXERCIŢII REZOLVATE 193
µ(1) = 1. Legătura ı̂ntre funcţia lui Moebius şi funcţia lui Euler este dată de:
φ(n) X µ(d)
= .
n d
d|n
Dacă k este un număr prim Mersenne, adică k este număr prim de forma 2n − 1
unde n este număr prim, atunci orice polinom ireductibil de grad k (ı̂n algebra
mod 2) este primitiv:
1 X 2n − 1 1 n
NI (k) = 2d µ( )= n [−2 + 22 −1 ]
2n −1 n d 2 −1
d|2 −1
n
Φ(22 −1 − 1)
= = NP (k).
2n −1
197
198 CALCULE ÎN CORPURI GALOIS
1 = (X 3 + X 2 )(X 3 + X 2 + X + 1) + X 6 + X 2 + 1
1 = (X 3 + X 2 )(X 2 (X 6 + X 2 + 1) + X 8 + X 4 + X 3 + X + 1) + X 6 + X 2 + 1
1 = (X 5 + X 4 + 1)(X 6 + X 2 + 1) + (X 3 + X 2 + 1)(X 8 + X 4 + X 3 + X + 1)
deci inversul polinomului X 6 + X 2 + 1 este X 5 + X 4 + 1. Utilizând codificarea
hexa ajungem la concluzia că inversul elementului {45} este {31}.
Exerciţiul 17.2.2. Să se adune elementele {57} şi {83} ı̂n corpul Galois GF (28 )
definit de polinomul 1 + X + X 3 + X 4 + X 8 .
Rezolvare: Scrierea binară a celor două elemente este {57} = {01010111} respec-
tiv {83} = {10000011}. Efectuând calculele obţinem {57} ⊕ {83} = {11010100} =
{D4}.
Exerciţiul 17.2.3. Să se ı̂nmulţească elementele {57} şi {83} ı̂n corpul Galois
GF (28 ) definit de polinomul 1 + X + X 3 + X 4 + X 8 .
Exerciţiul 17.3.2. Care este inversul elementului {33} (reprezentat ı̂n format
hexa) din GF (28 ) definit de polinomul 1 + X + X 3 + X 4 + X 8 .
Răspuns: {6C}.
Exerciţiul 17.3.3. Care este inversul elementului {12} (reprezentat ı̂n format
hexa) din GF (28 ) definit de polinomul 1 + X + X 3 + X 4 + X 8 .
Răspuns: {AA}.
Exerciţiul 17.3.4. Care este inversul elementului {31} (reprezentat ı̂n format
hexa) din GF (28 ) definit de polinomul 1 + X + X 3 + X 4 + X 8 .
Răspuns: {45}.
EXERCIŢII PROPUSE 199
Exerciţiul 17.3.5. Arătaţi că elementele {12} şi {AA} (reprezentate ı̂n format
hexa) sunt inverse ı̂n corpul Galois GF (28 ) definit de polinomul 1+X +X 3 +X 4 +X 8 .
Exerciţiul 17.3.6. Să se adune elementele {5} şi {7} ı̂n corpul Galois GF (24 )
definit de polinomul 1 + X + X 4 .
Răspuns: {2}.
Exerciţiul 17.3.7. Să se ı̂nmulţească elementele {5} şi {7} ı̂n corpul Galois
GF (24 ) definit de polinomul 1 + X + X 4 .
Răspuns: {8}.
ALGORITMUL RIJNDAEL -
STANDARDUL AES
201
202 ALGORITMUL RIJNDAEL - STANDARDUL AES
Rezolvare:
Rutina SubBytes presupune folosirea următorului Sbox:
0 1 2 3 4 5 6 7 8 9 a b c d e f
0 63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76
1 ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0
2 b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15
3 04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75
4 09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84
5 53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf
6 d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8
7 51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2
8 cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73
9 60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db
a e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79
b e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08
c ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a
d 70 3e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e
e e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df
f 8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16
Găsirea octetului din S-box corespunzator octetului din stare se face astfel: pentru
octetul D4 se caută ı̂n SBox elementul aflat la intersecţia liniei D cu coloana 4 şi se
substituie ı̂n stare elementul găsit in Sbox. D4 se va substitui cu 48. Procedeul se
aplică similar pentru ceilalţi octeţi din stare.
Rezultatul aplicării rutinei SubBytes se constituie ı̂n următoarea stare:
48 FC F3 B6
A8 6C 6B B6
84 90 EA 1D
50 C3 27 26
Rutina ShiftRows acţioneaza ı̂n felul următor asupra stării: prima linie rămane
neschimbată, a doua linie se roteşte la stânga cu un octet, a treia linie se roteşte la
stânga cu doi octeţi iar a patra linie se roteşte la stânga cu trei octeţi.
După aplicarea rutinei ShiftRows, starea va fi următoarea:
48 FC F3 B6
6C 6B B6 A8
EA 1D 84 90
26 50 C3 27
EXERCIŢII REZOLVATE 203
Operaţiile care rezultă din ı̂nmulţirea matricilor se fac ı̂n corpul Galois GF(28 )
şi sunt ı̂nmulţiri de polinoame modulo polinomul generator al corpului GF(28 ) care
este h(X) = X 8 + X 4 + X 3 + X + 1. Observăm că singurele ı̂nmulţiri care apar
sunt cele cu 02 şi 03. Inmulţirea cu polinomul 02 in GF (28 ) ı̂nseamnă ı̂nmulţirea cu
polinomul X.
Fie f (X) = b7 X 7 + b6 X 6 + b5 X 5 + b4 X 4 + b3 X 3 + b2 X 2 + b1 X + b0 un polinom
din GF (28 ). Să vedem ce presupune ı̂nmulţirea 02 ∗ f (X) adică X ∗ f (X):
X ∗ f (X) = b7 X 8 + b6 X 7 + b5 X 6 + b4 X 5 + b3 X 4 + b2 X 3 + b1 X 2 + b0 X(modm(X)),
Deci:
X ∗ f (X) = (X 4 + X 3 + X + 1) + b6 X 7 + b5 X 6 + b4 X 5 + b3 X 4 + b2 X 3 + b1 X 2 + b0 X.
Prin urmare, ı̂nmulţirea cu polinomul X poate fi implementată, ı̂n cazul ı̂n care
bitul cel mai semnificativ al polinomului f (X) este 1, ca o operaţie de shift la stânga
cu 1 bit urmată de un XOR cu (00011011), care reprezintă polinomul (X 4 + X 3 +
X + 1).
Dacă bitul cel mai semnificativ al polinomului f (X) este 0, atunci ı̂nmulţirea
presupune doar operaţie de shift la stânga cu un bit.
Pentru a trece starea curentă prin rutina MixColumns, se ı̂nmulţeste pe rând
fiecare coloană din stare cu matricea fixată de mai sus.
Vom prezenta doar modul de efectuare al ı̂nmulţirii:
02 03 01 01 48
01 02 03 01 6C
01 01 02 03 · EA
03 01 01 02 26
204 ALGORITMUL RIJNDAEL - STANDARDUL AES
E8 13 7B 23 EC 14 99 6A 04 07 E2 49
93 5D D0 71 61 25 FF B4 F2 78 2F C5
⊕ =
81 5D 08 4C 4B 75 09 9B CA 28 01 D7
12 C9 A1 B7 85 8C 37 A7 97 45 96 10
EXERCIŢII PROPUSE 205
Care este ieşirea după procesarea rutinelor SubBytes, ShiftRows, MixColumns şi
AddRoundKey?
Care este ieşirea după procesarea rutinelor SubBytes, ShiftRows, MixColumns şi
AddRoundKey?
206 ALGORITMUL RIJNDAEL - STANDARDUL AES
Care este ieşirea după procesarea rutinelor SubBytes, ShiftRows, MixColumns şi
AddRoundKey?
62 62 62 62
63 63 63 63
7C 7C 7C 7C
63 63 63 62
66 D6 17 F9
E0 43 67 CF
D8 E3 13 28
04 F2 5A E9
CRIPTANALIZA
CIFRURILOR BLOC
Răspuns. În cele ce urmează facem o scurtă descriere a cifrului RC5 cu r iteraţii.
Acesta are lungimea blocului de date variabilă dar vom considera ı̂n cele ce urmează
că aceasta a fost setată la 64 biţi. Operaţia de cifrare foloseşte 2r+2 chei dependente
de cuvintele pe 32 biţi S0 , S1 , S2 , . . . , S2r+2 unde r este numărul de iteraţii. Pentru
cifrare blocul de date se ı̂mparte ı̂n două părţi de 32 biţi notate cu L respectiv R
(RC5 face apel la codificarea little-endian pentru ı̂mpachetarea octeţilor ı̂n cuvinte:
primul octet se transformă ı̂n cele mai puţin semnificative poziţii ale lui L, etc.).
Apoi avem:
½
L = L + S0 ,
R = R + S1 .
211
212 CRIPTANALIZA CIFRURILOR BLOC
Pentru i = 1, . . . , r se execută:
½
L = ((L ⊕ R) << R) + S2i ,
R = ((R ⊕ L) << L) + S2i+1 .
Ieşirea constă ı̂n registrele L şi R. Simbolul ⊕ are semnificaţia sumei mod 2, sim-
bolul << semnifică rotire circulară şi ı̂n fine simbolul + are semnificaţia sumei mod
232 . Operaţia de decriptare este similară (intervin operatorii ⊕, >> şi −). Modul de
construcţie al secvenţei S (care derivă din cheie) nu este esenţial ı̂n cadrul acestui
exerciţiu.
Dacă setăm numărul de iteraţii r = 8 şi nu facem nici un fel de rotaţii atunci
pentru i = 1, . . . , 8 se execută:
½
L = (L ⊕ R) + S2i ,
R = (R ⊕ L) + S2i+1 .
Răspuns. Cifrul bloc DES (proiectat ı̂n 1977) este sub controlul unei chei efective
de 56 biţi (cheia de bază este de 64 biţi, 8 biţi fiind pentru detecţia erorilor) iar
mărimea blocului de date este de 64 biţi. Textul clar este permutat iar apoi este
ı̂mpărţit ı̂n două blocuri L şi R de lungime 32 biţi. Se execută apoi iterativ operaţiile
(pentru i = 1, . . . , numărul de iteratii):
½
Li = Ri ,
Ri = Li ⊕ f (Ri−1 , Ki ).
EXERCIŢII PROPUSE 213
În final textul este supus permutării inverse. Ne concentrăm asupra descrierii
funcţiei f : Z32 48 32
2 × Z2 → Z2 . Iniţial blocul R (32 biţi) este extins cu ajutorul
funcţiei E la un bloc pe 48 biţi care este sumat mod2 cu cheia K (extinsă la 48
biţi cu ajutorul algoritmului de producere a subcheilor). Opt aplicaţii S : Z62 → Z42
produc o ieşire pe 32 biţi care este permutată pentru a produce ieşirea finală dintr-o
iteraţie. Dacă aplicaţiile S sunt fixe (se selectează 4 biţi din 6 ı̂n mod fix) atunci se
poate aplica tehnica criptanalizei diferenţiale (biţii de la ieşire sunt biţii de la intrare
(sumaţi mod2 cu cheia K) dar ı̂ntr-o altă ordine).
Algoritmul DES cu 4 cât şi cu 6 iteraţii poate fi spart cu ajutorul tehnicii atacului
cu text clar cunoscut.
Exerciţiul 19.3.2. Ce defect are un algoritm de cifrare care este ı̂nchis (un
algoritm de cifrare se numeşte ı̂nchis dacă pentru orice chei k1 şi k2 există o cheie
k3 astfel ı̂ncât pentru orice text clar M avem Ek1 Ek2 (M ) = Ek3 (M ))?
Exerciţiul 19.3.8. Fie EM (.) şi DK (.) funcţiile de cifrare respectiv descifrare
ale unui cifru. Care este valoarea lui DK (EK (M ))?
214 CRIPTANALIZA CIFRURILOR BLOC
Notă. Descrierea algoritmilor RC5, DES, Skipjack şi FEAL poate fi găsită ı̂n
Schneier [67] sau Menezes [47].
Exerciţiul 19.3.11. Fie E(·, ·) o funcţie de cifrare pe m biţi de cheie şi n biţi
de date. Care este valoarea maximă a lui m astfel ı̂ncât cheia efectivă a cifrului să
fie m?
Capitolul 20
LEMA CHINEZEASCĂ A
RESTURILOR
x ≡ ai mod mi
Q
k
are o soluţie unică modulo mi .
i=1
şi
M
Mi = pentru orice i = 1, . . . , k.
mi
Deoarece (mi , mj ) = 1 pentru orice i 6= j avem (Mj , mj ) = 1 pentru orice j adică
există Nj astfel ca Mj Nj = 1 mod mj . Atunci dacă notăm
k
X
x= ai Mi Ni
i=0
215
216 LEMA CHINEZEASCĂ A RESTURILOR
x = ai Mi Ni mod mi
= ai mod mi pentru orice i.
0 00
Unicitatea soluţiei. Fie x şi x două soluţii atunci
0 00
x = x − x = 0 mod mi pentru orice i
deci
x = 0 mod M.
Rezolvare:
Soluţia sistemului de congruenţe este dată de formula:
3
X
x= aj Mj Nj mod M.
j=1
SISTEMUL DE CIFRARE
MERKLE-HELLMAN
• altfel bk = 0.
221
222 SISTEMUL DE CIFRARE MERKLE-HELLMAN
pentru un rucsac care are aceeaşi soluţie, dar nu este supercrescător. Merkle şi
Hellman au găsit o metodă prin care se poate transforma o problemă a rucsacului
supercrescător ı̂ntr-o problemă normală a rucsacului. Tehnica de conversie face apel
la aritmetica modulară.
Având la dispoziţie o problemă de tip rucsac supercrescător (cheia privată) cu
ponderile {M1 , ..., Mn } atunci aceasta se transformă ı̂ntr-o problemă de tip rucsac
normală (cheia publică) cu şirul ponderilor
unde m şi p sunt numere naturale prime ı̂ntre ele (acestea fac parte din cheia privată)
P
n
şi p > Mi .
i=1
Pentru a cifra un mesaj binar acesta se va ı̂mpărţi ı̂n blocuri de lungimi egale cu
cardinalul mulţimii ponderilor. Cifrarea unui bloc b1 ...bn va fi numărul natural:
n
X
bi (mMi mod p).
i=1
Rezolvare:
Având la dispoziţie cheia privată {M1 , ..., Mn }, cheia publică se obţine astfel
{mM1 mod p, ..., mMn mod p}.
Prin urmare, cheia privată pentru datele de mai sus este {31 · 2 mod 105, 31 ·
3 mod 105, 31 · 6 mod 105, 31 · 13 mod 105, 31 · 27 mod 105, 31 · 52 mod 105} adică
{62, 93, 81, 88, 102, 37}.
Pn
Cifrarea mesajului 101110 ((m1 , ..., m6 )) se face după formula mi (mMi mod
i=1
p), adică pe baza cheii publice. Rezultatul va fi 62 + 81 + 88 + 102, deci mesajul
cifrat este c = 333.
EXERCIŢII PROPUSE 223
Rezolvare: Se determină C · m−1 mod 1717 = 4608 · 507−1 mod 1717 = 4608 ·
657 mod 1717 = 385.
Apoi se rezolvă problema supercrescătoare a rucsacului de dimensiune 385 : 385 =
355 + 19 + 10 + 1. Mesajul clar va conţine 1 pe poziţiile corespunzătoare acestor
ponderi, deci se obţine 100110001.
Răspuns: Cheia publică {62, 93, 81, 88, 102, 37}, mesajul cifrat c = 401.
Răspuns: Cheia publică {62, 93, 81, 88, 102, 37}, mesajul cifrat c = 426.
Răspuns: Cheia publică {62, 93, 81, 88, 102, 37}, mesajul cifrat c = 271.
Răspuns: Cheia publică {62, 93, 81, 88, 102, 37}, mesajul clar 101110.
Răspuns: Cheia publică {154, 43, 166, 61, 208, 163}, m−1 mod p = 191, mesajul
clar 101000.
Răspuns: Cheia publică este {60, 80, 11, 82, 164, 170}, mesajul cifrat 425.
Răspuns: Cheia publică {60, 80, 11, 82, 164, 170}, m−1 mod p = 115, mesajul clar
011011.
Răspuns: Cheia publică este {25, 192, 171, 58, 166, 90}, mesajul cifrat 511.
Răspuns: Cheia publică {25, 192, 171, 58, 166, 90}, m−1 mod p = 181, mesajul
clar 011101.
Capitolul 22
Cu alte cuvinte
d ≡ e−1 mod (p − 1)(q − 1).
Remarcăm faptul că d şi n sunt relativ prime. Perechea (e, n) constituie cheia
publică iar (d, p, q) este cheia privată. Cele două numere p şi q nu mai sunt necesare
la cifrare/descifrare, dar nu vor fi niciodată făcute publice (cunoaşterea lor şi a
exponentului de cifrare e conduce imediat la determinarea coeficientului de descifrare
d, deci sistemul de criptare devine inutil).
Pentru a cifra un mesaj M ı̂l vom diviza ı̂n blocuri de lungime mai mică n (cu
date binare vom alege cea mai mare putere a lui 2 mai mică decât n). Dacă p
şi q sunt numere prime de 100 cifre atunci n va avea sub 200 de cifre iar fiecare
mesaj bloc Mi va avea sub 200 de cifre. Dacă trebuie cifrate blocuri de lungime fixă
225
226 SISTEMUL DE CIFRARE RSA
atunci vom apela la operaţia de padding cu zero. Mesajul cifrat C se va obţine prin
concatenarea mesajelor Ci care au aproximativ aceeiaşi lungime. Formula de cifrare
va fi:
Ci ≡ Mie mod n.
Pentru a descifra un mesaj se calculează:
Mi ≡ Cid mod n,
deoarece
k(p−1)(q−1)+1
Cid ≡ (Mie )d ≡ Mied ≡ Mi
k(p−1)(q−1)
≡ Mi Mi ≡ Mi mod n.
Răspuns: N = 35237, φ(N ) = 34860, d = 23873, mesajul cifrat este: 01154 05746
04357 01154.
Exerciţiul 22.3.2. Să se descifreze mesajul 01154 05746 04357 01154 cu aju-
torul algoritmului RSA (p = 211 şi q = 167), utilizând exponentul public e = 28 + 1.
Elementele din mesajul clar se decodifică conform codului ASCII.
Răspuns: C = 141.
Răspuns: M = 146.
Răspuns: C = 70.
Răspuns: M = 9.
Răspuns: C = 962.
Răspuns: M = 3.
Răspuns: C = 164.
Răspuns: M = 5, d = 35.
SISTEMUL DE CIFRARE
ELGAMAL
Rezolvare: Cheia publică este (y, g, p) = (142 mod 17, 14, 17) = (9, 14, 17), cheia
privată x = 2. Alegem, spre exemplu, k = 7 relativ prim cu 16 = p − 1. Obţinem
mesajul cifrat C = (147 mod 17, 4 · 97 mod 17) = {6, 8}.
Exerciţiul 23.2.2. Să se descifreze mesajul {6, 8}, ştiind că a fost cifrat cu
ajutorul algoritmului ElGamal cu parametrii p = 17, g = 14, x = 2.
Rezolvare: Cheia publică este {y, g, p} = {9, 14, 17}, cheia privată x = 2. Mesajul
clar se obţine aplicând formula y2 y1−x mod p = 4.
231
232 SISTEMUL DE CIFRARE ELGAMAL
Exerciţiul 23.3.7. Să se descifreze mesajul (3, 34) cu ajutorul algoritmului El-
Gamal cu parametrii p = 47, g = 14, x = 3.
ARITMETICA PE CURBE
ELIPTICE
y 2 ≡ x3 + ax + b mod p
unde a şi b sunt constante astfel ı̂ncât 4a3 + 27b2 6= 0 mod p şi p este un număr
prim, ı̂mpreună cu un element singular, notat O şi numit punctul de la infinit. Acest
punct poate fi privit ca fiind punctul din vârful şi de la baza oricărei linii verticale.
233
234 ARITMETICA PE CURBE ELIPTICE
Rezolvare:
Coordoantele punctului P + Q = (x3 , y3 ), sunt date de formulele:
½
x3 = λ2 − x1 − x2
y3 = λ(x1 − x3 ) − y1
y2 −y1
unde λ = x2 −x1 .
EXERCIŢII PROPUSE 235
Pentru calculul λ = 7 · (28−1 mod 71), se foloseşte algoritmul lui Euclid care
gaseşte 33 = 28−1 mod 71, deci λ = 231.
Atunci x3 = 2312 − 15 − 43 mod 71 = 53 iar y3 = 231(15 − 53) − 17 mod 71 = 9.
În concluzie, coordoantele punctului care reprezinta suma celor doua puncte de pe
curba eliptică dată sunt (53, 9).
Exerciţiul 24.2.2. Fie curba eliptică y 2 = x3 +x+3 definită peste F17 . Arătaţi
că punctul (2, 8) este un generator al punctelor de pe curba eliptică.
Rezolvare: Succesiv putem scrie 1P = (2, 8), 2P = (12, 3), 3P = (16, 16), 4P =
(8, 8), 5P = (7, 9), 6P = (6, 15), 7P = (11, 6), 8P = (3, 13), 9P = (3, 4), 10P =
(11, 11), 11P = (6, 2), 12P = (7, 8), 13P = (8, 9), 14P = (16, 1), 15P = (12, 14),
16P = (2, 9), 17P = O.
Răspuns: 1P = (2, 7), 2P = (5, 2), 3P = (8, 3), 4P = (10, 2), 5P = (3, 6),
6P = (7, 9), 7P = (7, 2), 8P = (3, 5), 9P = (10, 9), 10P = (8, 8), 11P = (5, 9),
12P = (2, 4), 13P = O.
Răspuns: Succesiv obţinem 1P = (4, 6), 2P = (6, 1), 3P = (5, 0), 4P = (6, 6),
5P = (4, 1), 6P = O.
Răspuns: Cele 2 puncte satisfac fiecare ecuaţia curbei eliptice. Suma lor este
(3, 5).
SISTEMUL DE CIFRARE
ELGAMAL PE CURBE
ELIPTICE
237
238 SISTEMUL DE CIFRARE ELGAMAL PE CURBE ELIPTICE
p+1
apoi se calculează rădăcinile pătrate ale acestor reziduri prin formula y = ±z 2 mod
p). Punctele curbei eliptice vor fi: {(2, 7), (2, 4), (3, 5), (3, 6), (5, 2), (5, 9), (7, 2), (7, 9),
(8, 3), (8, 8), (10, 2), (10, 9), O}.
Grupul E este grup ciclic (numărul de elemente este al grupului este număr prim)
şi se ia ca generator pentru acesta elementul (public) α = (2, 7). Cheia privată de
descifrare, notată prin d, este o valoare ı̂ntre 1 şi numărul de puncte de pe o curbă
eliptică −1. Cheia publică, notată prin β, se obţine din α şi exponentul secret d prin
formula β = dα.
Operaţia de cifrare a mesajul M cu ajutorul cheii (secrete) k este:
Dk (y1 , y2 ) = y2 − dy1 .
Exerciţiul 25.2.2. Să se descifreze mesajul ((10, 2), (3, 5)) ştiind că a fost cifrat
cu algoritmul ElGamal utilizând curba eliptică(publică) E : y 2 = x3 + x + 6 pe Z11
şi cheia privată d = 3.
Răspuns: Valoarea cheii publice este β = dα = (3, 6). Mesajul cifrat este
(kα, M + kβ) = ((8, 3), (10, 9) + (5, 2)) = ((8, 3), (5, 9)).
Răspuns: Dk (y1 , y2 ) = (y2 − dy1 ) = ((5, 9) − 5(8, 3)) = ((5, 9) − (5, 2)) = ((5, 9) +
(5, 9)) = (10, 9).
Răspuns: Valoarea cheii publice este β = dα = (3, 7). Mesajul cifrat este
(kα, M + kβ) = ((9, 4), (3, 7) + (4, 10)) = ((9, 4), (2, 9)).
Răspuns: Dk (y1 , y2 ) = (y2 −dy1 ) = ((2, 9)−3(9, 4)) = ((2, 9)−(4, 10)) = ((2, 9)+
(4, 3)) = (3, 7).
Răspuns: Valoarea cheii publice este β = dα = (7, 13). Mesajul cifrat este
(kα, M + kβ) = ((7, 4), (8, 4) + (1, 5)) = ((7, 4), (16, 2)).
Răspuns: Dk (y1 , y2 ) = (y2 − dy1 ) = ((16, 2) − 7(7, 4)) = ((16, 2) − (1, 5)) =
((2, 9) + (1, 12)) = (8, 4).
Răspuns: Valoarea cheii publice este β = dα = (1, 3). Mesajul cifrat este
(kα, M + kβ) = ((14, 9), (10, 9) + (14, 9)) = ((14, 9), (5, 20)).
240 SISTEMUL DE CIFRARE ELGAMAL PE CURBE ELIPTICE
Răspuns: Dk (y1 , y2 ) = (y2 − dy1 ) = ((5, 20) − 5(14, 9)) = ((5, 20) − (14, 9)) =
((5, 20) + (14, 20)) = (10, 9).
Răspuns: Dk (y1 , y2 ) = (y2 − dy1 ) = ((2, 6) − 5(16, 2)) = ((2, 6) − (16, 2)) =
((2, 6) + (16, 15)) = (8, 12).
Capitolul 26
SISTEMUL DE CIFRARE
MENEZES-VANSTONE
Rezolvare: Curba eliptica are 13 puncte deci grupul E este ciclic şi orice element
este generator.
241
242 SISTEMUL DE CIFRARE MENEZES-VANSTONE
Răspuns: Curba are 13 puncte. Cum numărul de puncte este prim, grupul E
este ciclic şi deci orice punct din E este generator. Folosind sistemul ElGamal se
pot cifra numai punctele de pe curbă, deci 13. Cu Menezes-Vanstone se poate cifra
orice punct din Z13 × Z13 .
FUNCŢII DE DISPERSIE
Definiţia 27.1.3. Funcţia hash este o funcţie care se aplică unui şir de lungime
oarecare obţinându-se un şir de lungime fixată (de obicei, mai mică decât lungimea
şirului de intrare).
245
246 FUNCŢII DE DISPERSIE
0 0
2) este greu de găsit o pereche oarecare M , M astfel ı̂ncât H(M ) = H(M ).
Funcţiile hash unidirecţionale care ı̂ndeplinesc condiţia (1) se numesc funcţii hash
unidirecţionale slabe (sau universale), iar cele care ı̂ndeplinesc condiţia (2) se numesc
funcţii hash unidirecţionale tari (sau fără coliziuni).
Prima condiţie este uşor de justificat: dacă A a semnat mesajul M cu H(M ),
0 0
iar B obţine M astfel ı̂ncât H(M ) = H(M ), atunci B ar putea pretinde că A ar fi
0
semnat mesajul M .
A doua condiţie este justificată de existenţa atacului birthday, metodă generală
de atac aplicabilă oricărei funcţii hash, atac inspirat de paradoxul matematic al zilei
de naştere.
Datorită atacului birthday, pentru o funcţie hash care are la ieşire un şir cu o
lungime de m biţi (2m posibilităţi) se pot găsi coliziuni generând doar 2m/2 perechi
de mesaje-valori hash.
În aceste condiţii, algoritmii hash care produc valori hash de 64 biţi se consideră
nesiguri deoarece, cu tehnologia actuală, se pot genera 264/2 = 232 mesaje şi deci
este posibilă găsirea de mesaje care să intre ı̂n coliziune. De aceea se recomandă ca
valoarea hash să fie de lungime de cel puţin 128 biţi.
În cele ce urmează vom descrie funcţia de dispersie Chaum -van Heijt-Pfitzmann.
p−1
Fie p un număr prim mare astfel ca q = să fie de asemenea prim. Considerăm
2
α, β ∈ Zp elemente primitive. Calculul valorii logaritmului discret logα β este dificil
din punct de vedere computaţional. Vom defini funcţia de dispersie Chaum -van
Heijt-Pfitzmann h : Zq × Zq → Z∗p prin
Dacă există o coliziune pentru funcţia Chaum -van Heijt-Pfitzmann atunci cal-
culul logaritmului discret logα β este uşor.
Să vedem cum anume se poate determina valoarea logaritmului discret logα β. Să
presupunem că avem coliziunea h(x1 , x2 ) = h(x3 , x4 ) cu (x1 , x2 ) 6= (x3 , x4 ). Deci
αx1 β x2 = αx3 β x4 mod p sau echivalent αx1 −x3 = β x4 −x2 mod p. Fie d = (x4 −x2 , p−
1). Deoarece p − 1 = 2q iar q este număr prim avem d ∈ {1, 2, q, p − 1}.
Cazul d = 1. Deoarece (x4 − x2 , p − 1) = 1 există y = (x4 − x2 )−1 mod p. Deci:
1
Fiind dată o pereche validă (x, y) este dificil de aflat x1 6= x astfel ı̂ncât f (x1 ) = f (x).
248 FUNCŢII DE DISPERSIE
Capitolul 28
SEMNĂTURA ELGAMAL
Fie p un număr prim pentru care problema logaritmului discret ı̂n Zp este dificilă
şi α ∈ Zp ∗ un element primitiv. Cheia publică β se construieşte din cheia privată a:
β = αa mod p.
Semnătura mesajului x, calculată cu ajutorul valorii aleatoare (secrete) k ∈ Zp−1 ,
este definită ca fiind (γ, δ) unde:
γ = αk mod p şi δ = (H(x) − aγ)k −1 mod (p − 1),
H(·) fiind o funcţie hash (H(x) = x dacă nu este specificată funcţia hash).
Semnătura (γ, δ) a mesajului x este verificată dacă are loc:
β γ γ δ = αH(x) mod p.
γ = αk mod p = 2213 mod 467 = 29 şi δ = (101 − 127 · 29) · 431 mod 466 = 16.
249
250 SEMNĂTURA ELGAMAL
SEMNĂTURA DSA/ECDSA
253
254 SEMNĂTURA DSA/ECDSA
Rezolvare: Se calculează:
γ = (αk mod p) mod q = (17050 mod 7879) mod 101 = 2518 mod 101 = 94.
δ = (x + aγ)k −1 mod q = (100 + 75 · 94)50−1 mod 101 = 7150 · 50−1 mod 101 =
7150 · 99 mod 101 = 42.
S-a folosit 50−1 (mod101) = −2 mod 101 = 99 (fiindcă 101 = 50 · 2 + 1).
Verificare:
β = αa mod p = 17075 mod 7879 = 4567.
e1 = xδ −1 mod q = 100 · 42−1 mod 101 = 100 · 89 mod 101 = 12.
e2 = γδ −1 mod q = 94 · 42−1 mod 101 = 94 · 89 mod 101 = 84.
Se obţine:
(αe1 β e2 mod p) mod q = (17012 · 456784 mod 7879) mod 101 = 2518 mod 101 =
94 = γ.
Răspuns: Semnătura mesajului este (γ, δ) = (94, 40). Cheia publică este β =
4567.
EXERCIŢII PROPUSE 255
Răspuns: Semnătura mesajului este (γ, δ) = (94, 38). Cheia publică este β =
4567.
PROTOCOLUL
DIFFIE-HELLMAN
Răspuns: k = 21554.
Rezolvare:
PASUL 1. A trimite lui B valoarea RA = αa (modp) = 22009 mod 25307 =
5755.
PASUL 2. B trimite lui A valoarea RB = αb (modp) = 22010 mod 25307 =
11510.
257
258 PROTOCOLUL DIFFIE-HELLMAN
Răspuns: k = 3694.
Exerciţiul 30.3.2. Să se specifice cheia rezultată ı̂n urma aplicării protocolului
Diffie-Hellman specificat de parametrii: p = 25307, α = 2, a = 1989, b = 2009.
Răspuns: k = 12034.
Exerciţiul 30.3.3. Să se specifice cheia rezultată ı̂n urma aplicării protocolului
Diffie-Hellman specificat de parametrii: p = 17, α = 7, a = 9, b = 3.
Răspuns: k = 14.
Exerciţiul 30.3.4. Să se specifice cheia rezultată ı̂n urma aplicării protocolului
Diffie-Hellman specificat de parametrii: p = 10163, α = 652, a = 6026, b = 3510.
Răspuns: k = 7944.
Exerciţiul 30.3.5. Să se specifice cheia rezultată ı̂n urma aplicării protocolului
Diffie-Hellman specificat de parametrii: p = 63299, α = 49297, a = 5671, b = 59073.
Răspuns: k = 57286.
Exerciţiul 30.3.6. Să se specifice cheia rezultată ı̂n urma aplicării protocolului
Diffie-Hellman specificat de parametrii: p = 1319, α = 527, a = 1088, b = 584.
Răspuns: k = 352.
Exerciţiul 30.3.7. Să se specifice cheia rezultată ı̂n urma aplicării protocolului
Diffie-Hellman specificat de parametrii: p = 2099, α = 1023, a = 1496, b = 648.
Răspuns: k = 612.
EXERCIŢII PROPUSE 259
Exerciţiul 30.3.8. Să se specifice cheia rezultată ı̂n urma aplicării protocolului
Diffie-Hellman specificat de parametrii: p = 1823, α = 776, a = 1515, b = 476.
Răspuns: k = 1555.
Exerciţiul 30.3.9. Să se specifice cheia rezultată ı̂n urma aplicării protocolului
Diffie-Hellman specificat de parametrii: p = 2207, α = 371, a = 839, b = 1358.
Răspuns: k = 731.
PROTOCOLUL BLOM
261
262 PROTOCOLUL BLOM
gA (rB ) = 7 + 14 · 7 mod 17 = 3.
gB (rA ) = 6 + 4 · 12 mod 17 = 3.
PROTOCOLUL SHAMIR DE
PARTAJARE A SECRETELOR
k−1
X
P (X) = ai X i + S mod q.
i=1
265
266 PROTOCOLUL SHAMIR DE PARTAJARE A SECRETELOR
Exerciţiul 32.3.3. Să se reconstituie secretul S, din valorile {12, 4, 15}, ştiind
că acestea au fost obţinute cu ajutorul schemei majoritare (5, 3) a lui Shamir speci-
ficată de q = 17 şi valorile publice {1, 4, 5}.
Răspuns: S = 0.
Exerciţiul 32.3.4. Să se reconstituie secretul S, din valorile {1, 8, 2}, ştiind că
acestea au fost obţinute cu ajutorul schemei majoritare (5, 3) a lui Shamir specificată
de q = 17 şi valorile publice {3, 4, 5}.
Răspuns: S = 4.
EXERCIŢII PROPUSE 267
Exerciţiul 32.3.5. Să se reconstituie secretul S, din valorile {10, 0, 11}, ştiind
că acestea au fost obţinute cu ajutorul schemei majoritare (5, 3) a lui Shamir speci-
ficată de q = 17 şi valorile publice {3, 4, 5}.
Răspuns: S = 13.
SCHEME DE PARTAJARE A
SECRETELOR BAZATE PE
CRT
Secretul
Qk S, ce trebuie Qk−2partajat, trebuie să aparţină intervalului1 (β, α), unde
α = i=0 pi şi β = i=0 pn−i . Valorile ce se distribuie fiecăruia dintra cei n
participanţi sunt S mod pi , i = 1, . . . , n. Recuperarea secretului se realizează, de
către k participanţi, prin rezolvarea, cu ajutorul CRT, a sistemului S = Sij mod pi ,
j = 1, . . . , k.
Exerciţiul 33.2.1. Fie şirul {5, 7, 9, 11, 13} o secvenţă (5, 3) Mignotte , α =
11 · 13, β = 5 · 7 · 9, secretul S = 235 ∈ (α, β). Care sunt secretele ce sunt distribuite
celor cinci participanţi?
1
Dacă lungimea intervalului este mică, atunci schema nu este practică, existând posibilitatea ca
printre valorile distribuite să este coliziuni.
269
270 SCHEME DE PARTAJARE A SECRETELOR BAZATE PE CRT
CANALE SUBLIMINALE
Rezolvare:
PASUL 0. A calculează β = αy mod q = 29 mod 11 = 6.
PASUL 1. Se determină γ ca soluţie a ecuaţiei x = p · β + y · γ mod (q − 1),
echivalent cu 5 = 0+9γ mod 10 de unde rezultă γ = 5·9−1 mod 10 = 5·9 mod 10 = 5.
PASUL 2. A trimite lui B tripletul (x, β, γ) = (5, 6, 5).
271
272 CANALE SUBLIMINALE
PRINCIPII CRIPTOGRAFICE
275
276 PRINCIPII CRIPTOGRAFICE
Arătaţi că valorile rezultate ı̂n urma protocolului, adică {x, r, y}, definesc o
distribuţie ce poate fi simulată fără a-l folosi pe s. Explicaţi de ce acest lucru
asigură protocolului o securitate foarte bună.
Exerciţiul 6. Se dă o cutie neagră care rulează algoritmul AES (12 runde pentru
o cheie de 192 biţi); cutia conţine o cheie necunoscută k şi acceptă ca parametru
un ı̂ntreg r a cărui valoare poate fi setată la 12, 11 sau 10 de către utilizator. Vi se
permite să introduceţi ı̂n cutie texte clare după cum doriţi. Cum aţi proceda pentru
a ataca această implementare?
Exerciţiul 10. Să presupunem că cineva trimite mesaje cifrate utilizând DES ı̂n
modul de operare OFB cu o valoare iniţială secretă (fixată) IV .
1) Arătaţi cum poate fi efectuat un atac cu text clar pentru a decripta mesajele
transmise?
2) Este mai bun modul de operare CFB?
3) Dar modul de operare CBC?
277
Exerciţiul 12. Să presupunem că Alice şi Bob folosesc chei publice RSA cu acelaşi
modul n dar cu exponenţi publici diferiti e1 şi e2 .
1) Arătaţi că Alice poate decripta mesajele trimise lui Bob;
2) Arătaţi că un interceptor pasiv poate decripta mesaje trimise către Alice şi
Bob dacă gcd(el , e2 ) = 1.
Exerciţiul 14. Să construim un MAC folosind modul CFB de implementare, ı̂n
loc de modul CBC: fiind date blocurile de text clar α1 , . . . , αn , definim vectorul de
inţializare β0 = α1 . Apoi cifrăm secvenţa de blocuri α2 , . . . , αn după formulele:
În final, M AC(α1 || . . . αn ) = E(βi−1 ; K). Arătaţi că acesta este identic cu CBC
MAC.
Exerciţiul 15. Pentru S-boxul S5 din DES calculaţi tendinţa variabilei aleatoare:
X2 ⊕ Y1 ⊕ Y2 ⊕ Y3 ⊕ Y4 .
Exerciţiul 16. Într-un sistem de cifrare simetric, o cheie k este slabă dacă ek = dk .
Determinaţi toate cheile slabe ale sistemelor afine peste Z15 .
278 PRINCIPII CRIPTOGRAFICE
Capitolul 36
279
280 ATACURI ÎN MEDIUL DE IMPLEMENTARE
Exerciţiul 36.2.4. Numiţi 3 factori care determină forma graficului puterii con-
sumate de un microprocesor.
RESURSE SOFTWARE
37.1. CrypTool
CrypTool este un pachet software dedicat simulării şi analizei de mecanisme crip-
tologice ı̂ntr-un mod ilustrativ. De la rolul iniţial de instruire ı̂n domeniul secu-
rităţii personalului diverselor companii private, CrypTool a evoluat ı̂ntr-un proiect
educaţional de tip open source cu aplicaţii ı̂n domeniul criptografiei şi majoritatea
domeniilor conexe. Produsul vizează ı̂n primul rând studenţii facultăţilor de matem-
atică şi informatică, a firmelor ce activează ı̂n domeniul securitaţii informaţiilor pre-
cum şi a dezvoltatorilor de aplicaţii sau utlizatorilor de calculatoare ı̂n general care
doresc sa-şi dobândească bagajul minimal de cunoştinţe criptografice.
În prezent produsul este gratuit şi disponibil ı̂n mai multe versiuni, prima dintre
acestea fiind CrypTool 1.4.x dezvoltată integral ı̂n mediul C++. Aceasta s-a extins
ulterior ı̂n alte două versiuni, ı̂ncă aflate la nivel beta, ce folosesc standarde de
dezvoltare de ultimă generaţie aflându-se ı̂ntr-o continuă actualizare. Astfel, ı̂n iulie
2008, s-a lansat CryptTool 2.0 dezvoltat ı̂n mediul C#, versiune ce furnizează o
paleta mai largă de funcţionalităţi combinată cu o interfaţă grafică cu facilităţi de tip
”drag-and-drop”. La ı̂nceputul lui 2010 s-a lansat versiunea JCrypTool dezvoltată ı̂n
mediul Java, avantajele acestei versiuni fiind că este independentă de platforma pe
care rulează (Windows, Linux, Mac) şi că foloşeşte din plin puternicul instrument
FlexiProvider prin care se pot ı̂ncărca cu uşurinţă module criptografice ı̂n orice
aplicaţie construită peste JCA (Java Cryptography Architecture).
CrypTool a fost dezvoltat ı̂n colaborare cu instituţii de ı̂nvăţământ devenind ast-
fel un soft educaţional şi un bun instrument de iniţiere ı̂n domeniul criptologiei,
folosindu-se ı̂n prezent cu succes in multe universităţi de prestigiu. Datorită ma-
nipulării facile a mecanismelor criptologice precum şi a vizualizării şi prezentării
ı̂ntr-o manieră facilă şi inedită a rezultatelor, CrypTool poate reprezenta compo-
281
282 RESURSE SOFTWARE
nenta practică a cursurilor teoretice din domeniul criptologiei precum şi o metodă
rapidă de familiarizare cu componente esenţiale ale acestui domeniu.
Produsul acoperă ambele ramuri ale criptologiei şi anume criptografia şi crip-
tanaliza.
Sunt tratate majoritatea aspectelor fundamentale ale criptografiei. Astfel, pro-
dusul are implementate facilităţi ı̂n cadrul fiecărui subdomeniu după cum urmează:
• criptografia clasică: cifrurile Caesar, substituţie monoalfabetică, substituţie
omofonică, Vigenère, Hill, Playfair, ADFGVX, Addition, XOR, Vernam, Solitaire
etc;
• criptografia simetrică modernă: cifrurile IDEA, RC2, RC4, DES, 3DES, DESX
precum şi toţii finaliştii cifrului AES şi anume MARS, RC6, Rijndael, Serpent and
Twofish;
• criptografia asimetrică: RSA;
• criptografia hibridă: cifrarea datelor realizâdu-se cu algoritmi simetrici (AES),
protecţia cheii de cifrare fiind asigurată prin metode asimetrice (RSA);
• semnături digitale: RSA, DSA, ECDSA (Elliptic Curve Digital Signature Al-
gorithm), Nyberg-Rueppel;
• funcţii hash: MD2, MD4, MD5, SHA, SHA-1, SHA-2, RIPEMD-160;
• generatoare aleatoare: secude, x2 mod n, LCG (linear congruence generator),
ICG (inverse congruence generator).
În cadrul criptanalizei se regăsesc implementate majoritatea atacurilor standard
după cum urmează:
• atac cu text cifrat: Caesar, Vigenère, Addition, XOR, Substitution, Playfair;
• atac cu text clar: Hill, Single-column transposition;
• atac manual: substituţie mono alfabetică, Playfair, ADFGVX, Solitaire;
• atac prin forţă brută: pentru toţi algoritmii; se presupune fie că entropia textu-
lui clar este mică sau cheia este parţial cunoscută sau alfabetului textului clar este
cunoscut;
• atacuri asupra RSA: bazate pe factorizare sau tehnici care apelează la structurile
algebrice (latice);
• atacuri asupra sistemelor hibride: atacuri asupra RSA sau AES(side channels
attacks);
• atacuri asupra semnaturilor digitale: RSA prin factorizare; viabil până la
lungime de 250 biţi (adica 75 cifre);
• atacuri asupra funcţiilor hash: generare coliziuni texte ASCII cu paradoxul
zilelor de naştere (până la 40 biţi);
• analiză aleatorism: bateria de teste FIPS-PUB-140-1, periodicitate, Vitany,
entropie, histograme, autocorelaţii, testul de compresie ZIP etc.
În sprijinul utilizatorilor, CrypTool are implementate o serie de demo-uri şi
OPENSSL 283
animaţii prin care sunt exemplificate diverse facilităţi pe care produsul le oferă
folosindu-se primitive criptografice suportate şi implementate ı̂n aplicaţie ca de ex-
emplu Caesar, Vigenère, Nihilist, DES (toate patru cu ANIMAL), Enigma (Flash),
Rijdael/AES (Flash and Java), criptare hibridă şi decriptare (AES-RSA şi AES-
ECC), generare şi verificare de semnături digitale, protocolul de schimb de chei
Diffie-Hellman, secret sharing (CRT sau Shamir), metoda challenge-response (aut-
entiicare), atacuri tip side-channel, securizarea e-mail-ului prin protocolul S/MIME
(Java şi Flash), prezentări grafice 3D pentru date (pseudo)aleatoare, sensibilitatea
funcţiilor hash privind modificări ale textului clar, teoria numerelor şi cripto sisteme
RSA (Authorware).
CrypTool conţine şi un modul educaţional interactiv dedicat aplicaţiilor crip-
tografice ce necesită aspecte elementare de teoria numerelor denumit ”NT”. Acest
modul introduce utilizatorul ı̂n probleme elementare de teoria numerelor precum
algoritmul lui Euclid pentru găsirea celui mai mare divizor comun, testul Fermat
pentru primalitate, factorizarea Fermat, factorizarea Pollard Rho şi altele.
Un alt avantaj al produslui CrypTool ı̂l reprezintă existenţa unui meniu de doc-
umentare consistent şi o extindere online a acestuia conţinând ı̂n plus explicaţii
privind noţiuni generale de criptografie, o cronologie privind dezvoltarea domeniu-
lui, exemple de utilizare a facilităţilor aplicaţiei, index sortat pe topicuri criptografice
şi listă de referinţe.
Faptul că pachetul software este open source, că acoperă aspecte legate atât
de criptografia clasică cât şi cea modernă, a modalităţilor multiple de simulare şi
vizualizare originale, precum şi a modului facil de aplicare şi analiză a mecanis-
melor criptografice ne conduc la concluzia ca pachetul CrypTool reprezintă atât o
modalitate rapidă de iniţiere ı̂n domeniul criptografiei cât şi un instrument de lucru
puternic pentru specialişti ı̂n vederea studierii şi aplicării ı̂n acelaşi mediu a a diverse
probleme concrete ce pot apărea in criptografie şi criptanaliză.
37.2. OpenSSL
OpenSSL este o suită de aplicaţii ce implementează protocoalele Secure Sockets
Layer (SSL v2/v3) şi Transport Layer Security (TLS v1) precum şi o librărie dedi-
cată ce acoperă o gamă largă de primitive criptografice. Proiectul este manageriat
de o comunitate de voluntari din ı̂ntreaga lume ce comunică, folosind Internetul,
ı̂n vederea planificării şi dezvoltării continue a toolkit-ului OpenSSL precum şi a
documentaţiei aferente.
OpenSSL este bazat pe librăria SSLeavy dezvoltată de Eric A. Young şi Tim
J. Hudson, proiect ı̂ncheiat la sfârşitul anului 1998. Asupra produsului acţionează
o dublă licenţiere, atât cea de OpenSSL cât şi cea originală a librăriei SSLeavy.
284 RESURSE SOFTWARE
Ambele tipuri de licenţe sunt de tipul BSD open-source, toolkit-ul putând astfel
fi folosit atât pentru scopuri comerciale cât şi non-comerciale. Pachetul sofware
foloseşte instrumente criptografice puternice, fiind dezvoltat continuu şi distribuit
legal de câteva tări europene, supunându-se ı̂nsă unor restricţii de import/export
şi uz ı̂n unele ţări din lume.
OpenSSL este disponibil ı̂n numeroase versiuni fiind ı̂ntr-o continuă dezvoltare,
bug-uri fiind des semnalate şi corectate. Versiunea stabilă curentă este OpenSSL
0.9.8m aceasta fiind disponibilă din luna februarie 2010; in plus utilizatorii benefi-
ciază de acces online permananent pentru studierea dezvoltărilor ulterioare ultimei
versiuni stabile. Versiunile sunt disponibile pentru majoritatea sistemelor de oper-
are tip UNIX (incluzând Solaris, Linux, Mac OS X şi cele patru sisteme de operare
BSD open source), Open VMS şi Microsoft Windows.
OpenSSL implementeaza protocoalele SSL şi TSL. Transport Layer Security
(TLS) şi predecesorul său Secure Sockets Layer (SSL), sunt protocoale criptografice
ce furnizează securitatea comunicaţiilor peste reţele similare Internetului. Cele
două protocoale permit aplicaţiilor de tip client/server să comunice securizat. TLS
furnizează autentificare endpoint precum şi confidenţialitatea comunicaţiilor peste
Internet folosindu-se securizare RSA suportând lungimi de chei de până la 2048
de biţi. Protocoale sunt utilizate pentru navigare pe Internet, poştă electronică,
voice-over-IP (VoIP) etc.
Librăria criptografică OpenSSL implemenează o gamă largă de algoritmi utilizaţi
ı̂n diverse standarde utilizate ı̂n Internet. Facilităţile furnizate de această librărie
sunt folosite pentru a implementa SSL, TLS şi S/MIME, precum şi pentru SSH,
OpenPGP şi alte standarde criptografice. Librăria are implementate o varietate de
primitive criptografice şi alte facilităţi după cum urmează:
• Algoritmi de cifrare simetrice: Blowfish, CAST, DES, IDEA, RC2, RC4, RC5;
• Algoritmi de cifrare asimetrici: RSA (bazat pe factorizarea numerelor mari),
DSA (bazat pe problema logaritmului discret), EC (curbe eliptice) Diffie-Hellman
key exchange;
• Certificate digitale: X509, X509v3;
• Funcţii hash şi coduri de autentificare: HMAC, MD2, MD4, MD5, MDC2,
RIPEMD, SHA;
• Funcţii de control a intrărilor şi ieşirilor, funcţii de codificare a datelor: PKCS7,
PKCS12, ASN1, BIO, EVP, PEM.
Utilitarul OpenSSL este un tool linie comandă utilizat ı̂n gestionarea diverselor
funcţii criptografice din librăria OpenSSL. Acesta poate fi folosit pentru:
• Creare şi management de chei private, chei publice şi parametrii;
• Operaţii ce implică criptografia cu chei publice;
• Creare de certificate X.509 , CSRs şi CRLs;
MAPLE 285
37.3. MAPLE
În cadrul acestei secţiuni vom exemplifica, printr-o serie de exemple, modalităţile
de rezolvare a problemelor propuse, ı̂n cadrul acestei culegeri, cu ajutorul aplicaţiei
software MAPLE.
> alpha:=14;
> a:=2;
> m:=4;
> k:=4;
> text_cifrat:=(y1,y2);
> alpha:=2;
> a:=127;
> x:=102;
> k:=15;
x mesajul;
k număr aleatoriu (secret);
sign = (γ, δ) unde γ = (αk mod p) mod q şi δ = (x + a ∗ γ) ∗ k −1 mod q.
> p:=7879;
> q:=101;
> alpha:=170;
> a:=75;
> x:=1234;
> k:=50;
Caracteristicile protocolului:
p număr prim (minim 1024 biţi), q divizor prim al lui q − 1 (minim 160 biţi);
α element de ordin q;
a număr generat de A şi trimis lui B;
b număr generat de B şi trimis lui A;
cheia comună este k := αa∗b mod p.
> p:=25307;
> alpha:=2;
> a:=3578;
> b:=19956;
> a:=1;
> b:=2;
> c:=3;
> n:=3;
> r:=array(1..n,[13,11,17]);
> f(X,Y):=a+b*(X+Y)+c*X*Y;
> g:=array(1..n);
> print(K);
n numărul de participanţi;
k numărul minim de participanţi care pot reconstitui secretul;
q număr prim (identifică corpul Z[q] ı̂n care se lucrează);
S secretul care se doreşte partajat;
xi (publice) se distribuie utilizatorilor, i = 1, . . . , n;
ai (aleatoare), i = 1, . . . , k − 1.
> n:=5;
> k:=3;
> q:=17;
> S:=13;
> x[1]:=1;
> x[2]:=2;
> x[3]:=3;
MAPLE 289
> x[4]:=4;
> x[5]:=5;
> a[1]:=10;
> a[2]:=2;
> p:=S+a[1]*x+a[2]*x^2 mod q;
> for i from 1 to n do subs(x=x[i],p) mod q
> od;
n numărul de participanţi;
k numărul minim de participanţi care pot reconstitui secretul; q număr prim
(identifica corpul Z[q] ı̂n care se lucreaza);
S secretul care se doreste partajat;
xi (publice) se distribuie utilizatorilor, i = 1, . . . , n;
si secretul distribuit, i = 1, . . . , k − 1;
> n:=5;
> k:=3;
> q:=17;
> x[1]:=1;
> x[2]:=2;
> x[3]:=3;
> x[4]:=4;
> x[5]:=5;
> s[1]:=8;
> s[2]:=7;
> s[3]:=10;
> p:=S+a[1]*x+a[2]*x^2 mod q;
> solve({subs(x=x[1],p)=s[1],subs(x=x[2],p)=s[2],subs(x=x[3],p)=s[3]
> },{S,a[1],a[2]});
q număr prim;
α element primitiv;
x mesaj cifrat;
y mesaj subliminal;
290 RESURSE SOFTWARE
k cheia secretă;
β autentificator;
γ autentificator;
mesajul subliminal (x, β, γ).
> q:=11;
> alpha:=2;
> y:=9;
> x:=5;
> k:=0;
> beta:=alpha^y mod q;
> gama:=y^(-1)*(x-k*beta) mod (q-1);
> M:=(x,beta,gama);
q număr prim;
α element primitiv;
x mesaj cifrat;
y mesaj subliminal;
k cheia secretă;
β autentificator;
γ autentificator;
mesajul subliminal (x, β, γ).
> q:=11;
> alpha:=2;
> k:=0;
> x:=5;
> beta:=6;
> gamma:=5;
> a:=alpha^x mod q;
> b:=((alpha^k)^beta)*beta^gamma mod q;
> if( a= b) then print("Mesaj_Auth_OK");
> Mesaj_subliminal:=(x-k*beta)*gamma^(-1) mod (q-1);
> else print("Mesaj_Auth_FAIL")
> fi;
Capitolul 38
APLICAŢII PRACTICE
În acest capitol ne propunem să facem o scurtă descriere a celor 4 probleme
date la MITRE Cyber Challenge 1 , ı̂n perioada 9-12 ianuarie 2012. Pentru fiecare
problemă prezentăm şi câte o sugestie de rezolvare.
Primele trei probleme sunt legate ı̂ntre ele, ı̂n sensul că pentru rezolvarea celei de-a
doua probleme este nevoie de parola obţinută ı̂n urma rezolvarii primei probleme, iar
rezolvarea celei de-a doua probleme ne conduce la un indiciu folositor ı̂n rezolvarea
problemei cu numărul trei. Ultima problemă este independentă de primele trei,
aceasta având de fapt rolul de a scoate ı̂n evidenţă o vulnerabilitate a ECDSA
(acelaşi tip de vulnerabilitate care a fost folosită şi pentru aflarea cheii de semnare
de la PlayStation3).
291
292 APLICAŢII PRACTICE
Problema 2. Această problemă ı̂şi propune să arate posibilele locuri ı̂n care un
adversar poate ascunde informaţii, precum şi modurile ı̂n care acest lucru se poate
face. Mai precis problema presupune găsirea unor informaţii ascunse ı̂n interiorul
unei imagini.
Presupunem că avem o imagine hiding.gif. Cerinţa problemei este aceea de
a găsi informaţia ascunsă ı̂n această imagine, ştiind că aceasta ı̂ncepe cu ”h”, se
termină cu ”l”, iar mărimea fiecărei litere contează. De asemenea, aşa cum am
menţionat anterior, vom avea nevoie de parola obţinută la prima problemă.
Uitându-ne la proprietăţile imaginii hiding.gif, observăm că aceasta are 13.3
MB, ceea ce ni se pare suspect de mult. Pentru a vedea mai multe detalii, deschidem
hiding.gif cu UltraEdit şi observăm că apare ”PK”ı̂n format hexa 50 4B), ceea
ce ı̂nseamnă că este vorba despre o arhivă (PK reprezintă iniţialele lui Phil Katz).
Prin urmare schimbăm extensia şi obţinem hinding.zip. Deschizând această
arhivă găsim alte imagini, una dintre ele (care atrage atenţia ı̂n mod deosebit) fiind
look at me.gif. Pentru a putea vedea această imagine ı̂nsă, avem nevoie de parola
obţinută la problema 1.
Găsim ı̂n final şi informaţia pe care o căutam, şi anume hollenger.dll.
Problema 3. Cea de-a treia problemă este legată de analiza traficului de date.
Presupunem că avem la dispoziţie o captură de trafic de date, day3.pcap.
Se cere să se găsească, cu ajutorul răspunsului de la problema anterioră, fişierul
transferat din calculatorul personal către o sursă necunoscută. Răspunsul pentru
293
această problemă ı̂l va constitui informaţia ascunsă ı̂n fişierul respectiv. Ştim că
ı̂ncepe cu ”P”, se termină cu ”k” şi mărimea fiecărei litere este importantă.
Pentru a putea deschide day3.pcap vom folosi Wireshark. În continuare căutăm
hollenger.dll astfel: Edit à Find Packet à Filter : hollenger.dll (selectăm Packet
bytes şi String) Ã Find, iar apoi Follow TCP stream.
Observăm din nou PK şi folosim opţiunea Save as pentru a obţine day3.zip.
Arhiva conţine mai multe fişiere, printre care şi hollenger.dll.
Deschidem hollenger.dll cu UltraEdit şi observăm ”numărul magic” GIF87a
(ı̂n format hexa 47 49 46 38 37 61), ceea ce ı̂nseamnă că este vorba de o imagine.
Schimbând deci extensia obţinem hollenger.gif, aceasta fiind o imagine care
conţine următoarea frază : ”The Root Password is Pengu1nsR0ck”.
Problema 4. Obiectivul acestei probleme este recuperarea unei chei private ECDSA
care a fost folosită pentru semnarea a două mesaje diferite.
Înainte ı̂nsă de a continua prezentarea acestei ultime probleme, reamintim algo-
ritmul de semnătură ECDSA:
294 APLICAŢII PRACTICE
Parametrii publici ı̂n acest caz sunt: un număr prim p, o curbă eliptică E(Fp ) şi
un punct G ∈ E(Fp ) cu ordG = q, q prim.
Cheia publică (de verificare) V ∈ E(Fp ) se construieşte cu ajutorul cheii private
(de semnare) 1 ≤ s ≤ q − 1 astfel: V = sG.
Semnătura mesajului m (mod q), calculată cu ajutorul unei chei efemere e (mod
q), este definită ca fiind perechea (s1 , s2 ) = (xeG mod q , (m + ss1 )e−1 mod q), unde
prin xeG ı̂nţelegem coordonata x a punctului eG ∈ E(Fp ).
Semnătura (s1 , s2 ) a mesajului m este verificată dacă are loc următoarea egalitate
(ı̂n care v1 = ds−1 −1
2 mod q şi v2 = s1 s2 mod q ) : xv1 G+v2 V mod q = s1 .
Revenim acum la problema noastră. Datele care ne sunt puse la dispoziţie se află
ı̂n trei fişiere: signatures.txt,parameters.der şi public.oct.
Primul fişier conţine valorile hash-urilor şi semnăturile pentru cele două mesaje
(ı̂n format hexa):
295
m1 =DE37B3145DB7359A0ACC13F0A4AFBD67EB496903
s11 =ACB2C1F5898E7578A8A861BDF1CA39E7EF41EAC0B6AAA49468DD70E2
s12 =BE4FA99C9D261C5F387A3ACE025702F6FB7884DD07CE18CAD48654B8
m2 =28469B02BF0D2CFC86FF43CB612EE8FC05A5DBAA
s21 =ACB2C1F5898E7578A8A861BDF1CA39E7EF41EAC0B6AAA49468DD70E2
s22 =D3540E2B13E51605F5FEB8C87EE8E176E59213F31EA8B8FFDAD077E2
Pentru a putea vedea informaţiie din cel de-al doilea fişier,parameters.der, vom
folosi OpenSSL astfel:
openssl ecparam -inform DER -in /cygdrive/e/parameters.der
-outform PEM -out /cygdrive/e/parameters.pem
openssl ecparam -text -in /cygdrive/e/parameters.pem -noout
Field Type: prime-field
Prime:
00:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:
ff:ff:ff:ff:ff:ff:ff:ff:ff:fe:ff:ff:e5:6d
A: 0
B: 5 (0x5)
Generator (uncompressed):
04:a1:45:5b:33:4d:f0:99:df:30:fc:28:a1:69:a4:
67:e9:e4:70:75:a9:0f:7e:65:0e:b6:b7:a4:5c:7e:
08:9f:ed:7f:ba:34:42:82:ca:fb:d6:f7:e3:19:f7:
c0:b0:bd:59:e2:ca:4b:db:55:6d:61:a5
Order:
01:00:00:00:00:00:00:00:00:00:00:00:00:00:01:
dc:e8:d2:ec:61:84:ca:f0:a9:71:76:9f:b1:f7
Cofactor: 1 (0x1)
Prin urmare, parameters.der conţine de fapt parametrii publici:
• numărul prim p:
p=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFE56D.
• curba eliptică E : y 2 = x3 + 5 considerată peste Fp .
• coordonatele punctului G ( 04 semnifică faptul că asupra coordonatelor punc-
tului G nu s-a aplicat o compresie, prin urmare jumătate din octeţii care urmează
vor constitui coordonata x a punctului G, iar cealaltă jumătate coordonata y a
punctului G):
xG =85CEE9C98EFDFDFCF64CB522A773F1435D568173677D1D28FC00643
yG =58A105CC1AB1A53D77B278850776E144197F3FA4E27AA676408DFE22
• numărul prim q, acesta fiind ordinul punctului G:
q=010000000000000000000000000001DCE8D2EC6184CAF0A971769FB1F7.
• cofactorul, care ı̂n acest caz este 1, ceea ce ı̂nseamnă că punctul G este generator
pentru grupul punctelor curbei eliptice considerate.
296 APLICAŢII PRACTICE
Pentru ultimul fişier, public.oct, folosim UltraEdit şi găsim reprezentarea hexa
a informaţiei conţinute ı̂n interiorul său:
04:85:CE:EE:9C:98:EF:DF:DF:CF:64:CB:52:2A:77:3F:14:35:D5:
68:17:36:77:D1:D2:8F:C0:06:43:58:A1:05:CC:1A:B1:A5:3D:77:
B2:78:85:07:76:E1:44:19:7F:3F:A4:E2:7A:A6:76:40:8D:FE:22
Aceasta este cheia publică, mai precis punctul V de coordonate:
xV =85CEEE9C98EFDFDFCF64CB522A773F1435D568173677D1D28FC00643
yV =58A105CC1AB1A53D77B278850776E144197F3FA4E27AA676408DFE22
Avem acum toate datele necesare pentru a afla cheia privată s.
Observaţia importantă pe care se bazează ı̂nsă ı̂ntreaga rezolvare este aceea că
valorile s11 şi s21 sunt egale. În acest caz, dacă notăm cu e1 , respectiv e2 cheile
efemere folosite pentru semnarea mesajelor m1 , respectiv m2 , rezultă fie că e1 =
e2 = e, fie că e1 + e2 = q.
Vom arăta cum putem afla cheia privată s dacă presupunem că este vorba de
primul caz, anume că pentru semnarea celor două mesaje diferite m1 şi m2 s-a folosit
aceeaşi cheie efemeră e. Notând cu r valoare comună s11 = s21 , avem următoarele
două relaţii:
s21 = (m1 + sr)e−1 mod q = r1 şi s22 = (m2 + sr)e−1 mod q = r2
de unde putem afla cheia privată s astfel:
r1 r2 −1 = (m1 + sr)(m2 + sr)−1 mod q ⇒ s = (m2 r1 − m1 r2 )[r(r2 − r1 )]−1 mod q
În continuare vom lucra ı̂n PARI/GP, prin urmare transformăm mai ı̂ntâi toate
valorile de care avem nevoie din baza 16 ı̂n baza 10. O metodă de a face acest lucru
poate fi următoarea:
gp> n=length(w);
gp> for(i=1,n,if(w[i]==A,w[i]=10,if(w[i]==B,w[i]=11,if(w[i]==C,w[i]=12,
if(w[i]==D,w[i]=13,if(w[i]==E,w[i]=14,if(w[i]==F,w[i]=15)))))));
gp> W=sum(i=1,n,16^ (i-1)*w[n+1-i]);
Aflăm acum, ı̂n ipoteza că s-a folosit aceeaşi cheie efemeră e, cheia privată s:
gp> q=26959946667150639794667015087019640346510327083120074548994958668279;
gp> m1=1268638092138210163260758055822429538066610350339;
gp> m2=229934186335685840756719395324394646288453721002;
gp> r=18187250800097972010521080073937585100154901858571130778437166133474;
gp> r1=20042106687643588872389242180506526832832251371631259823173622191288;
gp> r2=22255471905305126694378074733040389009439136736542793238977855911906;
gp> s=(((m2*r1-m1*r2)%q))*(bezout((r*(r2-r1))%q,q)[1])%q
15010575815029851772642085218329323233091815558722670713086641180071
Verificăm că aceasta este corectă, adică vrem să vedem dacă ı̂ntr-adevăr are loc
egalitatea V = sG. Pentru aceasta iniţiallizăm curba eliptică E peste care vrem să
lucrăm, iar apoi calculăm punctul sG:
297
gp> p=2695994666715063979466701508701963067363714442254057248109931527511;
gp> E=ellinit([0,0,0,0,5]*Mod(1,p));
gp> xG=16983810465656793445178183341822322175883642221536626637512293983324;
gp> yG=13272896753306862154536785447615077600479862871316829862783613755813;
gp> G=[xG,yG];
gp> ellpow(E,G,s);
Obţinem că:
xsG = 14091661710852556870833728605751404033863675975464814254659297347139
yeG = 9333722541138719487032926806284603775374491724501611657294489976354
Aceste valori sunt egale cu xV , respectiv yV , prin urmare, cheia privată s pe care
am găsit-o este bună.
Deoarece problema cerea cheia privată s ı̂n format hexa, facem ı̂n final şi trans-
formarea numărului s din baza 10 ı̂n baza 16:
gp> v=vector(60);
gp> v[1]=divrem(s,16)[1];
gp> for(i=2,60,v[i]=divrem(v[i-1],16)[1]);
gp> w=vector(60);
gp> w[1]=divrem(s,16)[2];
gp> for(i=2,60,w[i]=divrem(v[i-1],16)[2]);
gp> S=vector(60,i,w[61-i]);
gp> for(i=1,60,if(S[i]==10,S[i]=A,if(S[i]==11,S[i]=B,if(S[i]==12,S[i]=C,
if(S[i]==13,S[i]=D,if(S[i]==14,S[i]=E,if(S[i]==15,S[i]=F)))))));
Obţinem că S=8E88B0433C87D1269173487795C81553AD819A1123AE54854B3C0DA7.
298 APLICAŢII PRACTICE
Capitolul 39
PROBLEME DE SINTEZĂ
39.1. Enunţuri
1. Completaţi: Scopul cifrării este de a asigura . . . . . . unei comunicaţii.
(a) autenticitatea
(b) confidentialitatea
(c) integritatea
(d) nerepudierea
2. Următorul text a fost obţinut utilizând sistemul de cifrare Cezar (au fost elim-
inate accentele, spaţiile si semnele de punctuaţie): MHPEUDVVHPRQULY-
DOPDLVFHVWSRXUOHWRXIIHU. Care este decriptarea sa?
A B C D E F G H I J K L M
J G F K P R M T S V Z D Q
N O P Q R S T U V W X Y Z
I Y B C W A O X E H N U L
299
300 PROBLEME DE SINTEZĂ
(a) JOOJCXPJDJXGP
(b) SHHSMYVSWSYPV
(c) JOOJCXPJBJXGP
(d) SHHSMYVSZSYPV
(a) ı̂n aplicarea succesivă a mai multor substituţii alfabetice pe acelaşi text.
(b) ı̂n aplicarea de substituţii alfabetice care nu cifrează niciodată o literă ı̂n
ea ı̂nsăşi.
(c) ı̂n cifrarea literelor care apar cel mai frecvent (cum ar fi e) ı̂n mai multe
simboluri diferite.
(d) ı̂n alegerea mai multor alfabete de sustituţie independente şi schimbarea
alfabetului folosit, la fiecare literă, ı̂n mod ciclic.
(a) 10010110100
(b) 11011000001
(c) 11001100011
(d) 6C1
6. Propunem următorul algoritm de cifrare: Alice şi Bob doresc să schimbe un
mesaj m care reprezintă un număr ı̂ntreg ı̂ntre 0 şi N − 1. Pentru aceasta, ei
partajează o cheie secretă comună k extrasă aleator ı̂ntre 0 şi N − 1. Mesajul
cifrat se obţine ca c = m + k mod N . Ce părere aveţi despre securitatea
sistemului?
7. Alice ı̂i trimite lui Bob un mesaj cifrat c obţinut cu ajutorul algoritmului
precedent. Cum determină Bob mesajul original m?
(a) m = c + k mod N
ENUNŢURI 301
(b) m = c − k mod N
(c) m = c × k mod N
(d) m = ck mod N
(a) AES
(b) HMAC
(c) SHA-1
(d) NIST
10. Am ı̂n posesia mea un mesaj m pe care nu vreau ı̂ncă să ı̂l divulg, dar doresc
să pot dovedi peste câţiva ani că ı̂l cunoşteam deja ı̂n 2010 (conform amprentei
de timp). Pentru aceasta, este suficient să public astăzi:
11. Funcţia de dispersie (hash) SHA-512 ı̂ntoarce valori ı̂ntre 0 şi 2512 − 1. Se
calculează imagini prin această funcţie ı̂n mod aleator. Care este ordinul de
mărime al numerelor pentru care trebuie calculate valorile prin aceasta funcţie
pentru a găsi 2 valori care să aibă primii 20 de biţi egali?
(a) 20
(b) 1000
(c) 1000000
(d) 2512
302 PROBLEME DE SINTEZĂ
(a) Pentru a produce numere aleatoare ı̂ntre 0 şi 999, dacă nu prezintă interes
nivelul de securitate.
(b) Pentru generarea unei chei de tip one-time pad.
(c) Pentru construcţia unei funcţii de dispersie.
(d) Niciodată.
13. Cum este obţinută cheia secretă necesară pentru criptarea comunicaţiei, la
conectarea la un site web securizat?
14. Care este dificultatea de a factoriza un număr prim pe 1024 de biţi astăzi?
16. Fie generatorul Geffe descris de trei registre de deplasare LFSRi (ale căror
polinoame de feedback sunt primitive de grad 19, 21 şi respectiv 24) iar ieşirea
de formula: y(t) = a1 (t) · a3 (t)⊕ a1 (t) · a2 (t). Care este complexitatea LC şi
perioada P a acestui generator?
(a) Atac reuşit asupra a două preimagini ale unei funcţii hash implică reuşita
atacului de generare de coliziuni.
304 PROBLEME DE SINTEZĂ
(b) Atac reuşit de generare de coliziuni asupra unei funcţii hash implică
reuşita atacului asupra a două preimagini a aceleiaşi funcţii hash.
(a) 2−m .
(b) 2−n .
(c) 2−mn .
(d) 2m−n .
(e) 2n−m .
(f) Niciuna din valorile de mai sus.
(a) 8.
(b) 4.
(c) 2.
(d) 5.
(e) 6.
(f) Niciuna din valorile de mai sus.
µ ¶
6278
22. Simbolul lui Jacobi este:
9975
(a) −1.
(b) 0.
(c) 1.
(d) Niciuna din valorile de mai sus.
ENUNŢURI 305
23. În cadrul unui acţiuni judiciare urmează a fi desemnat unul dintre cei doi
judecătorii de serviciu. Deoarece niciunul dintre cei doi nu doreşte să facă acest
lucru ı̂n mod benevol, se propune modalitatea de decizie bazată pe rezultatul
obţinut din aruncarea unei monede. Astfel, judecătorul A alege ”stema” sau
”banul” iar judecătorul B aruncă moneda, decizia fiind luată ı̂n urma rezul-
tatului obţinut. Având ı̂n vedere faptul că A şi B ı̂n locaţii fizice diferite se
propune, de către criptograf, următorul protocol.
PASUL 1. Participantul A alege x = 0 (”stema”) sau x = 1 (”banul”)
şi o cheie aleatoare k. Se cifrează cu ajutorul algoritmului DES valoarea x:
y = DES(x; k).
PASUL 2. A transmite y către B.
PASUL 3. B aruncă o monedă şi comunică lui A rezultatul obţinut.
PASUL 4. A comunică lui B cheia k.
PASUL 5. B descifrează y, cu ajutorul algoritmului DES şi ob¸tine ceea ce a
ales A.
Criptograful afirmă faptul că ”participantul A nu ı̂şi poate schimba opţiunea”
datorită valorii transmise y. Arătaţi următoarele:
a) Utilizând ”birthday attack” utilizatorul A poate trişa;
b) Care este complexitatea atacului de la punctul a)?
c) Care este cerinţa primitivei criptografice ce asigură valabilitatea afirmaţiei
”participantul A nu ı̂şi poate schimbă opţiunea”;
d) Corectaţi protocolul astfel ı̂ncât să nu mai fie posibil atacul de la punctul
a).
24. Fie p un număr prim şi G mulţimea tuturor elementelor x ∈ Zp2 care satisfac
relaţia x ≡ 1 mod p. Arătaţi faptul că:
a) G este grup multiplicativ;
b) |G| = p;
c) L : G → Zp definit de L(x) = (x − 1)p−1 mod p este un izomorfism de
grupuri;
d) p + 1 este un generator al lui G şi izomorfismul este logaritmul ı̂n baza p + 1
a lui G. Cu alte cuvinte avem: (p + 1)L(x) mod p2 ≡ x pentru orice x.
25. Să considerăm algoritmul de semnare DSS cu parametrii p, q, g, o funcţie hash
H şi o cheie secretă x. În cadrul implementării se precalculează perechea
(k, r) ce satisface relaţia r = (g k mod p) mod q, aceasta fiind utilizată pentru
generarea semnăturilor. Recuperaţi cheia privată de semnare.
306 PROBLEME DE SINTEZĂ
26. Protocolul Wired Equivalent Privacy (WEP) utilizat ı̂n standardul IEEE 802.11
este utilizat pentru a proteja datele ı̂n cadrul transmisiilor wireless. Protocolul
WEP are o cheie K de 40 de biţi, partajată ı̂ntre entităţile ce comunică şi
este utilizată pentru protecţia fiecărui ”frame”1 transmis. În cadrul acestui
exerciţiu vom presupune faptul că cheia K este fixă şi nu ı̂şi schimbă valoarea.
Pentru ca utilizatorul A să transmită un ”frame” la B va proceda după cum
urmează:
PASUL 1. Codificarea CRC: Dându-se un mesaj de n-biţi M (n este con-
stant), A calculează o sumă de control de 32 de biţi L(M ), unde L este o
funcţie liniară 2 ce nu depinde de K. Textul clar, de lungime (n + 32) biţi,
este P = M ||L(M ).
PASUL 2. A cifrează P cu algoritmului RC4, cheia K şi vectorul IV de 24 de
biţi specific fiecărui ”frame” transmis. Textul cifrat va fi C = P ⊕RC4(IV, K).
PASUL 3. A transmite pe canalul radio (IV, C) către B.
Întrebări:
a) Anumiţi producători specifică faptul că protocolul WEP are o securitate de
40+24=64 biţi de cheie. Ce părere aveţi de acest fapt. Justificaţi răspunsul.
b) Care este modalitatea prin care B extrage mesajul original M ?
c) În cadrul unor implementări, vectorul IV de 24 de biţi, este ales aletoriu
la fiecare ”frame” transmis. Arătaţi că acest lucru conduce la probleme de
securitate atunci când traficul de date este mare. Propuneţi o modalitate de
remediere a problemei apărute.
d) Să examinăm o altă problemă de securitate a protocolului WEP. Vom
presupune faptul că atacatorul interceptează datele (IV, C) transmise de A.
Arătaţi faptul că adversarul, chiar dacă nu cunoaşte cheia K, poate calcula
uşor un text cifrat C ∗ (C ∗ 6= C) şi retransmite (IV, C ∗ ) fără ca B să poată de-
tecta acest lucru. Câte posibilităţi de alegere avem pentru C ∗ ? Ce proprietate
a securităţii este violată?
28. Fie numerele prime q = 7541 şi p = 2q + 1. Fie α = 604 şi β = 3791.
a) Arătaţi că ord(α) = ord(β) = q ı̂n Zq . Mai mult, arătaţi că α şi β generează
acelaşi subgrup G ı̂n Z∗p .
b) Definim funcţia hash h : Zq × Zq → G prin h(x1 , x2 ) = xα1 xβ2 . Calculaţi
h(7431, 5564) şi h(1459, 954).
c) La punctul precedent aţi obţinut o coliziune pentru h. Folosiţi-o pentru a
calcula logaritmul discret dlogα β.
d) Folosind logaritmul discret calculat, determinaţi şi alte coliziuni pentru h.
308 PROBLEME DE SINTEZĂ
39.2. Răspunsuri
1. Răspuns: (b). Pentru autenticitate, se folosesc MAC sau semnăturile electron-
ice. Pentru integritate, ı̂n funcţie de nivelul de exigenţă, se pot utiliza sume
de control, funcţii hash, MAC, etc.
2. Răspuns: (c). Vă puteţi ajuta de poziţia literelor dublate. Întrebare supli-
mentară: de unde provin aceste versuri?
3. Răspuns: (a). Literele de pe a doua linie sunt imaginile celor din prima linie,
şi nu invers.
5. Răspuns: (b). Este de ajuns să se calculeze restul ı̂mpărţirii lui 1729 la 4
pentru a elimina (a) şi (c). (d) este 1729 ı̂n hexazecimal (i.e. ı̂n baza 16).
8. Răspuns: (a). HMAC este MAC, SHA-1 este o funcţie de dispersie şi NIST
este o agenţie americană de standardizare.
10. Răspuns: (c). La momentul divulgării mesajului, toată lumea va putea ver-
ifica faptul că hash-ul este corect şi că se cunoştea mesajul m la momentul
calcululării acestui hash. Metoda nu permite dezvăluirea mesajului m.
O cifrare a lui m cu o cheie cunoscută doar de cel care face criptarea nu garan-
tează nimic: se poate de asemenea publica un cuvânt aleator pentru ca ulterior
să se aleagă cheia care să corespundă unei criptări corecte. Aceeaşi problemă
apare ı̂n cazul MAC.
RĂSPUNSURI 309
11. Răspuns: (b). Conform paradoxului naşterilor, pentru obţinerea unei coliziuni
pe primii 20 de biţi ai√funcţiei de dispersie, este necesar să se calculeze valoare
funcţiei hash pentru 220 , adică aproximativ 1000 numere.
12. Răspuns: (d). Valoarea lui xn este constantă, egală cu 289, ı̂ncepând cu al
treilea termen. Deci nu este vorba despre apariţii aleatoare.
13. Răspuns: (d). Cheia de sesiune este determinată printr-un schimb de chei.
15. Răspuns: (c). Proprietatea de homomorfism este aceea că cifrarea RSA a
produsului a 2 mesaje (modulo N ) este produsul cifrărilor corespunzătoare
celor 2 numere.
Restul variantelor sunt eronate, fiindcă RSA este un cifru cu cheie publică,
deci asimetric.
17. Răspuns: (c). În această situaţie secvenţa supusă testării este ideală, numărul
de biţi de 0 este egal cu numărul de biţi de 1 şi anume 1024.
20. Răspuns: (a). Numărul de ieşiri posibile, ale unei funcţii hash ideale cu ieşirea
pe m biţi, este 2m .
ii) A va căuta coliziuni ı̂n cadrul acestor liste şi va obţine k, k ∗ astfel ı̂ncât:
DES(”banul”; k) = DES(”stema”; k ∗ ).
iii) După ce se aruncă moneda A comunică lui B cheia k sau k ∗ după caz.
b) Complexitatea atacului anterior este reprezentată de căutarea coliziunilor ı̂n
cadrul celor două liste, pe 64 de biţi, DES(”banul”; k) şi DES(”stema”; k ∗ ).
Conform ”birthday attack” este nevoie numai de 232 evaluări ale algoritmului
DES pentru a determina o coliziune.
c) Cerinţa primitivei criptografice este ca funcţiile:
k → DES(”banul”; k) şi k → DES(”stema”; k)
să fie rezistente la coliziuni.
d) Se poate utiliza un algoritm de cifrare bloc pe 128 de biţi, spre exemplu
AES (ı̂n acest caz ”birthday attack” are nevoie de 264 evaluari ale AES). Ca
o alternativă se poate utiliza o funcţie hash h rezistentă la coliziuni. Partic-
ipantul A alege x ∈ {”stema”, ”banul”}, o valoare aleatoare r şi calculează
y = h(x||r). După ce B face alegerea, A poate dezvălui x şi r.
24. Răspuns: a) Vom arăta faptul că G = {x ∈ Zp2 |x ≡ 1 mod p} ı̂n raport cu
multiplicarea modul p2 este grup. Pentru aceasta se vor verifica următoarele:
operaţia este parte stabilă, asociativitatea, elementul neutru şi elementul simetriz-
abil.
2
b) Orice element a din Zp se poate scrie ı̂n mod unic a = a1 + a2 p, unde a1
şi a2 sunt numere ı̂ntregi ce satisfac relaţia 0 ≤ a1 , a2 ≤ p − 1. Orice element
2
a din Zp este ı̂n G dacă şi numai dacă elementul corespunzător a1 este egal
cu 1, de aici rezultă faptul că |G| = p.
c) Fie a = 1 + kp, 0 ≤ k < p şi b = 1 + lp, 0 ≤ l < p elemente din G. Se
verifică faptul că L este homomorfism: L(a · b) = k + l mod p şi L(a) + L(b) =
k + l mod p, deci L(a · b) = L(a) + L(b). Direct se verifică injectivitatea şi
sujectivitatea lui L, deci L este izomorfism de grupuri.
d) Avem de arătat faptul că orice element a ∈ G poate fi scris ca o putere a
lui p + 1. Din binomul lui Newton rezultă:
Xn µ ¶
2 2 n i
(p + 1) mod p = p mod p2 = 1 + np.
i
i=0
x−1
y= mod p = L(x).
p
H(m) + xr
s= mod q
k
H(m∗ ) + xr
s∗ = mod q.
k
Deducem
H(m) − H(m∗ )
k= mod q.
s − s∗
Vom calcula apoi r = (g k mod p) mod q şi ı̂n final vom recupera x prin formula:
ks − H(m)
x= mod q.
r
26. Răspuns: a) Nu este corect să se calculeze dimensiunea cheii prin sumarea
dimensiunii celor două intrări ı̂n algoritm deoarece numai una este secretă.
Deci dimensiunea cheii este de 40 de biţi nu de 64 de biţi.
b) Mai ı̂ntâi B reconstruieşte textul clar P ∗ = C ⊕ RC4(IV, K). Ulterior P ∗
este ı̂mpărţit ı̂n două părţi P ∗ = M ∗ ||Q∗ , unde M ∗ este de n biţi iar Q∗ de 32
de biţi. B calculează L(M ∗ ) şi compară cu Q∗ . B acceptă mesajul M ∗ dacă
şi numai dacă L(M ∗ ) = Q, altfel va respinge mesajul M ∗ .
c) Conform ”birthday paradox” alegând IV aleatoriu la fiecare ”frame” rezultă
24
că la fiecare 2 2 ≈ 5000 ”frame”-uri există o coliziune pentru două IV din
cele 5000 transmise de la/către acelaşi utilizator. În această situaţie avem o
coliziune ı̂n şirurile cheie, ceea ce poate conduce la informaţie despre textul
clar ([83]). O alternativă este de a incrementa IV .
312 PROBLEME DE SINTEZĂ
27. Raspuns: Prin calcule directe vom obţine: d = e−1 = 0001 0669 8614 3685
7802 4442 8687 7132 8920 1547 8070 9906 6339 3786 2801 2262 2449 6631
0631 2591 1774 4708 7334 0168 5974 6230 6553 9685 4451 3277 1090 5360
6095 mod(p − 1)(q − 1).
Apoi, prin calcul direct sau utilizând CRT:
M = C d = 20 0805 0013 0107 0903 0023 1518 0419 0001 1805 0019 1721 0501
1309 1908 0015 1919 0906 1801 0705 modN , N = p · q.
Folosind codificarea spaţiu= 00, A = 01, B = 02, . . . , Z = 26 obţinem textul
clar:
”THE MAGIC WORDS ARE SQUEAMISH OSSIFRAGE”.
Bibliografie
[2] Anand P., Foundations of Rational Choice Under Risk, Oxford: Oxford Uni-
versity Press, 1993.
[3] Akerlof G. A., Yellen J. L., Rational Models of Irrational Behavior, 1987.
[4] Aumann R. J., Hart S., Handbook of Game Theory with Economic Appli-
cations, 3 vols. Amsterdam: North-Holland, 2002.
[5] Aumann R. J., Maschler M. B., Repeated Games with Incomplete Infor-
mation, Cambridge, Mass.: MIT Press, 1995.
[6] Atanasiu A., Securitatea Informaţiei, vol. 1, Criptografie, ed. InfoData, Cluj,
2008.
[8] Baker K., Kropp D., Management Science: An Introduction to the Use of
Decision Models, 1985.
[9] Baase S., Van Gelder A., Computer Algorithms, Introduction to Design
and Analysis, Addison Wesley Longman, 2000.
[12] Berge C., Théorie des graphes et ses applications, Dunod, 1967.
[13] Berger J., Statistical decision theory and Bayesian Analysis, 2nd ed., New
York: Springer Verlag, 1985.
313
314 BIBLIOGRAFIE
[14] Bertsekas D. P., Dynamic Programming and Optimal Control, 2nd ed.,
Athena Scientific, 2000.
[15] Bertsekos A., Linear Network Optimization, Algorithms and Codes, MIT
Press, 1991.
[16] Biggs N., Lloyd E., Wilson R., Graph Theory, Oxford University Press,
1986.
[18] Baird D., Gertner R. H., Picker R. C. , Game Theory and the Law,
Cambridge, Mass.: Harvard University Press, 1994.
[19] Browson R., Operational Research, 2nd edition, Prentice Hall, 1997.
[25] De Groot M., Optimal Statistical Decisions, Wiley Classics Library, 2004.
[27] Dimand M. A., Robert W. D., The History of Game Theory, Vol. 1: From
the Beginnings to 1945, London and New York: Routledge, 1996.
[28] Dreyfus S. E., Law A. M., The art and theory of dynamic programming,
Academic Press, 1977.
[29] Dugatkin L. A., Hudson K. R., Game Theory and Animal Behavior, New
York: Oxford University Press, 1998.
[31] Goodwin P., Wright G. Decision Analysis for Management Judgment, 3rd
ed., Chichester: Wiley 2004.
[33] Giegerich R., Meyer C., Steffen P., A Discipline of Dynamic Program-
ming over Sequence Data, Science of Computer Programming 51 (3), 2004.
[34] Golumbic M., Algorithmic Graph Theory and Perfect Graphs, Academic
Press, 1980.
[36] Harary F., Palmer E., Graphical Enumeration, New York, NY: Academic
Press,1973.
[38] Heims S. J., John Von Neumann and Norbert Wiener: From Mathematics
to the Technologies of Life and Death, Cambridge, Mass.: MIT Press, 1980.
[40] Hiller F., Introduction to Operational Research, Mc. Graw Hill, 1995.
[41] Kaufmann A., Metode şi modele ale cercetării operaţionale, Editura Tehnică,
Bucureşti, 1967.
[42] Kaufmann A., Desbazeile G., La methode du chemin critique, Paris, 1969.
[43] Kirby M. W., Operational Research in War and Peace, Imperial College
Press, London, 2003.
[44] Mahadev N.V.R., Peled U. N., Threshold Graphs and Related Topics,
North-Holland, 1995.
[45] Mathur K., Solow D., Management Science: The Art of Decision Making,
1994.
[48] Meyn S., Control Techniques for Complex Networks, Cambridge University
Press, 2007.
[49] Nasar S., A Beautiful Mind: A Biography of John Forbes Nash, Jr., Winner
of the Nobel Prize in Economics, 1994. New York: Simon and Schuster, 1998.
[50] Nash J. F. Jr., Essays on Game Theory, Cheltenham, U.K., and Brookfield,
Vt.: Edward Elgar, 1996.
[51] Naccache D., Mihăiţă A., Olimid R. F., Oprina A. G., Simion E.,
Criptografie şi Securitatea Informaţiei. Aplicaţii, MATRIXROM, 2011.
[53] Pidd M., Tools for Thinking: Modelling in Management Science, J. Wiley &
Sons Ltd., Chichester; 2nd. Edition, 2003.
[55] Popescu O. şi al. Matematici pentru economişti, Editura Didactică şi Ped-
agogică, Bucureşti, 1992.
[56] Preda V., Teoria deciziilor statistice, Editura Academiei, Bucureşti, 1991.
[57] Raiffa H., Decision Analysis: Introductory Readings on Choices Under Un-
certainty, McGraw Hill, 1997.
[58] Rapoport A., Albert M. C., Prisoners Dilemma: A Study in Conflict and
Cooperation, Ann Arbor: University of Michigan Press, 1965.
[60] Robert C., The Bayesian Choice, 2nd ed., New York: Springer, 2007.
[64] Samuelson L., Evolution and Game Theory, Journal of Economic Perspec-
tives 16, 2002.
[65] Schelling T., The Strategy of Conflict, Cambridge, Mass.: Harvard University
Press, 1960.
[66] Schotter A., The Economic Theory of Social Institutions, Cambridge, U.K.:
Cambridge University Press, 1981.
[68] Seiz J. A., Game Theory and Bargaining Models, In The Elgar Compan-
ion to Feminist Economics, edited by Janice Peterson and Margaret Lewis.
Cheltenham, U.K., and Northampton, Mass.: Edward Elgar, 1999.
[69] Shafer G., Pearl J., Readings in uncertain reasoning, San Mateo, CA: Mor-
gan Kaufmann,1990.
[70] Shapiro C., The Theory of Business Strategy, RAND Journal of Economics
20, 1989.
[71] Shapley L. S., A Value for n−Person Games, In Harold Kuhn and Albert
W. Tucker, eds., Contributions to the Theory of Games, Vol. 2, Annals of
Mathematics Studies, no. 28. Princeton, N.J.: Princeton University Press,
1953.
[72] Shapley L. S., Shubik M., A Method for Evaluating the Distribution of
Power in a Committee System, American Political Science Review 48, 1954.
[74] Sierksma G., Linear and Integer Programming: Theory and Practice 2nd ed.
New York: Marcel Dekker, 2002.
[75] Simion E., Oprişan Gh., Elemente de Cercetări Operaţionale şi Criptologie,
Politehnica Press, ISBN 973-8449-006, 2002.
[76] Simion E., Preda V., Popescu A., Criptanaliza. Rezultate şi Tehnici
Matematice, Universitatea din Bucureşti, ISBN 973575975-6, 2004.
[78] Smith J.Q., Decision Analysis: A Bayesian Approach, Chapman and Hall,
1988.
[82] Tomescu I., Introducere ı̂n combinatorică, Editura Tehnică, Bucureşti, 1970.
[84] Wald A., Contributions to the Theory of Statistical Estimation and Testing
Hypotheses, Annals of Mathematical Statistics 10 (4), 1939.