Sunteți pe pagina 1din 331

Emil Simion Mircea Andraşiu

David Naccache Gheorghe Simion

CERCETĂRI OPERAŢIONALE,
PROBABILITĂŢI ŞI CRIPTOLOGIE
APLICAŢII

EDITURA ACADEMIEI TEHNICE MILITARE


Bucureşti, 2011
Referenţi ştiinţifici:
Prof. univ. dr. Octavian STĂNĂŞILĂ
Prof. univ. dr. Victor-Valeriu PATRICIU
Conf. univ. dr. Ovidiu ŞANDRU

Descrierea CIP a Bibliotecii Naţionale a României


Cercetări operaţionale, probabilităţi şi criptologie: aplicaţii / Emil Simion,
Mircea Andraşiu, David Naccache, Gheorghe Simion. - Bucureşti : Editura
Academiei Tehnice Militare, 2011
Bibliogr.
ISBN 978-973-640-208-1

I. Simion, Emil
II. Andraşiu, Mircea
III. Naccache, David
IV. Simion, Gheorghe

004.056.55
621.928

Editat: Academia Tehnică Militară


Redactor-şef: lt. col. ing. Stelian SPÎNU

Corectură: Mihaela ZAHARIOIU


Operaţiuni tipografice: plt. adj. Petru ANTOCHI,
Silvia STROE, Viorica TOMA, Adrian STĂNICĂ

Bun de tipar: 08.08.2011


Hârtie ofset: 70 × 100 Format: 32 / 70 × 100
Coli tipar: 18,4 Coli editură: 9,2
Tiparul: Academia Tehnică Militară
Lucrarea conţine 292 pagini
0208 C. C-8
i

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.

Dr. mat. Emil Simion


Dr. mat. Mircea Andraşiu
ii

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.

Prof. David Naccache


Université Paris II, Pantheon-Assas, PRES Sorbonne Universités
Membru al laboratorului informatic al Ecole normale superiéure. Paris, Franţa.
Cuprins

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

4 TEORIA DECIZIILOR STATISTICE 45


4.1. Prezentarea problemelor . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2. Strategii Bayes şi strategii minimax . . . . . . . . . . . . . . . . . . . 46
4.3. Cazul efectuării unor experienţe unice . . . . . . . . . . . . . . . . . 47
4.4. Decizii optime ı̂n caz de incertitudine . . . . . . . . . . . . . . . . . . 49
4.4.1. Criteriul lui Hurwicz . . . . . . . . . . . . . . . . . . . . . . . 49
4.4.2. Criteriul lui Savage . . . . . . . . . . . . . . . . . . . . . . . . 49
4.4.3. Criteriul Bayes-Laplace . . . . . . . . . . . . . . . . . . . . . 50
4.4.4. Criteriul lui Wald . . . . . . . . . . . . . . . . . . . . . . . . 50
4.5. Aplicaţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

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

7 TEORIA STOCURILOR 103


7.1. Formularea modelului matematic . . . . . . . . . . . . . . . . . . . . 103
7.2. Modele deterministe . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.2.1. Model de stocare a unui produs cu cerere constantă, perioadă
constantă de reaprovizionare şi fără lipsă de stoc . . . . . . . 104
7.2.2. Model de stocare a unui produs cu cerere constantă, perioadă
constantă de reaprovizionare şi cu posibilitatea lipsei de stoc 105
7.2.3. Model de stocare a unui produs cu cerere constantă, perioadă
constantă de reaprovizionare şi fără lipsă de stoc, luând ı̂n
considerare şi costul de achiziţie . . . . . . . . . . . . . . . . 108
7.2.4. Model de stocare a mai multor produse . . . . . . . . . . . . 109
7.3. Modele probabiliste . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
7.3.1. Model de stocare a unui produs cu cerere aleatoare, cu pierdere
ı̂n cazul surplusului de stoc, cu cheltuieli suplimentare ı̂n cazul
lipsei de stoc şi cu cost de stocare neglijabil . . . . . . . . . . 110
7.3.2. Model de stocare a unui produs cu cerere aleatoare, cu cost
de stocare şi cost de penalizare pentru lipsă de stoc . . . . . 114
7.4. Aplicaţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

8 PROBABILITĂŢI ŞI ELEMENTE DE STATISTICĂ MATEM-


ATICĂ 123
8.1. Probabilitatea unui eveniment . . . . . . . . . . . . . . . . . . . . . . 123
8.1.1. Cazul finit dimensional şi al evenimetelor elementare echiprob-
abile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.1.2. Probabităţi geometrice . . . . . . . . . . . . . . . . . . . . . . 124
8.1.3. Frecvenţă absolută. Frecvenţă relativă . . . . . . . . . . . . . 125
8.1.4. Definiţia statistică a probabilităţii . . . . . . . . . . . . . . . 126
8.1.5. Definiţia axiomatică a probabilităţii . . . . . . . . . . . . . . 126
8.2. Variabile aleatoare normal distribuite . . . . . . . . . . . . . . . . . . 128
8.2.1. Densitatea de probabilitate normală . . . . . . . . . . . . . . 128
8.2.2. Funcţia Laplace-Gauss . . . . . . . . . . . . . . . . . . . . . . 128
8.2.3. O formulă analitică pentru calculul probabilităţii . . . . . . . 129
8.2.4. Inegalitatea lui Cebı̂şev (1821-1894) . . . . . . . . . . . . . . 130
8.2.5. Teorema celor 3σ . . . . . . . . . . . . . . . . . . . . . . . . . 130
8.3. Legea numerelor mari . . . . . . . . . . . . . . . . . . . . . . . . . . 130
8.4. Teorema limită centrală . . . . . . . . . . . . . . . . . . . . . . . . . 131
8.4.1. Forma Leapunov (1857-1918) a Teoremei Limită Centrală . . 131
8.4.2. Forma Moivre (1667-1754)-Laplace a Teoremei Limită Centrală 131
8.5. Elemente de teoria estimaţiei . . . . . . . . . . . . . . . . . . . . . . 132
8.5.1. Estimatori punctuali ai mediei şi dispersiei . . . . . . . . . . 132
vi CUPRINS

8.5.2. Estimarea parametrilor . . . . . . . . . . . . . . . . . . . . . 132


8.6. Intervale de ı̂ncredere . . . . . . . . . . . . . . . . . . . . . . . . . . 133
8.7. Teste statistice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
8.8. Teste pentru evaluare . . . . . . . . . . . . . . . . . . . . . . . . . . 137
8.8.1. Testul 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
8.8.2. Testul 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
8.8.3. Testul 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
8.8.4. Testul 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
8.8.5. Testul 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
8.8.6. Testul 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
8.9. Câteva distribuţii importante . . . . . . . . . . . . . . . . . . . . . . 142
8.9.1. Repartiţii continue . . . . . . . . . . . . . . . . . . . . . . . . 142
8.9.2. Distribuţii discrete . . . . . . . . . . . . . . . . . . . . . . . . 147
8.9.3. Calculul numeric al cuantilelor . . . . . . . . . . . . . . . . . 148

II CRIPTOLOGIE 151

9 SISTEMUL DE CIFRARE CEZAR 153


9.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
9.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
9.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

10 METODA SUBSTITUŢIEI 157


10.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
10.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
10.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

11 SISTEMUL DE CIFRARE PLAYFAIR 163


11.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
11.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
11.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

12 SISTEMUL DE CIFRARE HILL 169


12.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
12.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
12.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
CUPRINS vii

13 SISTEME DE CIFRARE POLIALFABETICE 175


13.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
13.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
13.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

14 METODA TRANSPOZIŢIEI 181


14.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
14.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
14.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

15 SISTEME MIXTE 185


15.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
15.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
15.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

16 GENERATOARE PSEUDOALEATOARE 191


16.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
16.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
16.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

17 CALCULE ÎN CORPURI GALOIS 197


17.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
17.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
17.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

18 ALGORITMUL RIJNDAEL - STANDARDUL AES 201


18.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
18.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
18.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

19 CRIPTANALIZA CIFRURILOR BLOC 211


19.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
19.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
19.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

20 LEMA CHINEZEASCĂ A RESTURILOR 215


20.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
20.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
20.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
viii CUPRINS

21 SISTEMUL DE CIFRARE MERKLE-HELLMAN 221


21.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
21.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
21.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

22 SISTEMUL DE CIFRARE RSA 225


22.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
22.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
22.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

23 SISTEMUL DE CIFRARE ELGAMAL 231


23.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
23.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
23.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

24 ARITMETICA PE CURBE ELIPTICE 233


24.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
24.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
24.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

25 SISTEMUL DE CIFRARE ELGAMAL PE CURBE ELIPTICE 237


25.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
25.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
25.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

26 SISTEMUL DE CIFRARE MENEZES-VANSTONE 241


26.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
26.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
26.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

27 FUNCŢII DE DISPERSIE 245


27.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
27.2. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

28 SEMNĂTURA ELGAMAL 249


28.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
28.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
28.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
CUPRINS ix

29 SEMNĂTURA DSA/ECDSA 253


29.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
29.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
29.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

30 PROTOCOLUL DIFFIE-HELLMAN 257


30.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
30.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
30.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

31 PROTOCOLUL BLOM 261


31.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
31.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
31.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262

32 PROTOCOLUL SHAMIR DE PARTAJARE A SECRETELOR 265


32.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
32.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
32.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266

33 SCHEME DE PARTAJARE A SECRETELOR BAZATE PE CRT269


33.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
33.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

34 CANALE SUBLIMINALE 271


34.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
34.2. Exerciţii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
34.3. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

35 PRINCIPII CRIPTOGRAFICE 275

36 ATACURI ÎN MEDIUL DE IMPLEMENTARE 279


36.1. Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
36.2. Exerciţii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

37 RESURSE SOFTWARE 281


37.1. CrypTool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
37.2. OpenSSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
37.3. MAPLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

38 APLICAŢII PRACTICE 291


x CUPRINS

39 PROBLEME DE SINTEZĂ 299


39.1. Enunţuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
39.2. Răspunsuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

BIBLIOGRAFIE 313
Partea I

CERCETĂRI
OPERAŢIONALE

1
Capitolul 1

PROGRAMARE LINIARĂ

1.1. Folosirea eficientă a resurselor limitate


O problemă practică ce apare frecvent ı̂n activitatea de conducere economică
este următoarea: sunt disponibile mai multe resurse (materii prime, forţă de muncă,
resurse financiare) ı̂n cantităţi limitate. Cu ajutorul acestor resurse se pot desfăşura
mai multe activităţi economice. Problema constă ı̂n determinarea nivelurilor ac-
tivităţilor luate ı̂n considerare care să se ı̂ncadreze ı̂n limitările precizate ale resur-
selor şi să asigure satisfacerea optimă a unui anumit criteriu.
Să notăm cu i, 1 ≤ i ≤ m, tipul resursei şi cu bi cantitatea de resursă de tipul
i care este disponibilă. Vom nota prin j, 1 ≤ j ≤ n, tipul activităţii (procesului
de subproducţie) şi prin xj nivelul (necunoscut) la care urmează să se desfăşoare
această activitate. În sfârşit, vom nota prin aij cantitatea de resursă de tipul i,
1 ≤ i ≤ m, necesară pentru producerea unei unităţi din produsul realizat ı̂n procesul
de producţie de tipul j, 1 ≤ j ≤ n, (ı̂n general, activitatea de tipul j). Presupunem
aici că aij depinde numai de tipul resursei şi de tipul procesului de producţie şi nu
de nivelul la care urmează să se desfăşoare această activitate.
Cu notaţiile introduse, rezultă că putem exprima cantitatea totală de resursă de
tipul i care va fi efectiv utilizată ı̂n procesele de producţie:

ai1 x1 + ai2 x2 + . . . + ain xn .

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Ă

Deoarece xj reprezintă nivelul la care se desfăşoară activitatea de tipul j, rezultă


că trebuie să fie de asemenea satisfăcute condiţiile:

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

Problema care se pune este de a afla soluţiile sistemului de inegalităţi liniare


1.1, 1.2 care asigură obţinerea valorii maxime pentru beneficiul total 1.3. Cu alte
cuvinte, din punct de vedere matematic se cere rezolvarea problemei:
 P
n

 sup cj xj


 j=1
Pn

 aij xj ≤ bi , 1 ≤ i ≤ m,


 j=1
xj ≥ 0, 1 ≤ j ≤ n,
care este numită problema de programare liniară sau program liniar. Funcţia liniară
ce se doreşte maximizată se numeşte funcţie obiectiv sau funcţia criteriu sau, ı̂ncă,
funcţia de eficienţă a problemei.
Problema menţionată poate fi rezolvată cu ajutorul algoritmului simplex sau
simplex dual. Acesta este prezentat pe larg ı̂n literatura de specialitate (Zidăroiu). O
serie de produse soft ca MATLAB sau MAPLE au rutine specializate de rezolvare
a problemelor de optimizare cu ajutorul acestor metode. Din acest motiv, omitem
prezentarea rezolvării complete a problemelor prin aceste metode.
FORME ALE PROBLEMELOR DE PROGRAMARE LINIARĂ 5

1.2. Forme ale problemelor de programare liniară


Forma standard a unei probleme de programare liniară este:

 min(max)c0 x
Ax = b

x≥0
Remarcăm că o problemă de maxim se poate transforma ı̂ntr-o problemă de minim
prin folosirea formulei max(−f ) = − min(f ).
Forma canonică a unei probleme de programare liniară este:

 min c0 x
Ax ≥ b

x≥0
sau 
 max c0 x
Ax ≤ b

x≥0
Sintaxa MAPLE de scriere a formei canonice pentru problema de maxim este:
> standardize(mulţime de restricţii);
sau
> convert(mulţime de restricţii, stdle);
O restricţie a unei probleme de programare liniară este numită concordantă dacă
este o inegalitate de tipul ≥ pentru problema de minim şi o inegalitate de tipul ≤
pentru problema de maxim.
Forma mixtă a unei probleme de programare liniară conţine restricţii şi sub formă
de ecuaţii.
Deoarece prin operaţii matematice orice problemă de programare liniară se poate
aduce ı̂n forma canonică a problemei, pentru cazul de minim vom lucra numai cu
astfel de probleme, adică cu probleme ı̂n forma canonică.

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Ă

Definim soluţia de bază a sistemului Ax = b ca o soluţie x ∈ Rn căreia compo-


nentelor sale nenule ı̂i corespund coloane liniar independente. Dacă B este o bază
formată cu coloanele aj1 , . . . , ajm ale matricei A atunci sistemul de ecuaţii Ax = b
se poate scrie ı̂n forma explicită:
xB = B−1 b − B−1 RxR
ı̂n care R este matricea obţinută din A prin eliminarea coloanelor j1 , . . . , jm . Notând:
B
B−1 b =x , B−1 aj = yjB , 1 ≤ j ≤ n,
rezultă că: X
B
xB =x − yjB xj
j∈R
sau X
B
xB
i =xi −
B
yij xj , i ∈ B
j∈R

unde B = {j1 , . . . , jm } şi R = {1, . . . , n}− B. Soluţia de bază corespunzătoare bazei


B
B este xB =x şi xR = 0. Este clar că această soluţie de bază este un program dacă
este ı̂ndeplinită condiţia:
B−1 b ≥ 0.
O bază B care verifică inegalitatea de mai sus se numeşte bază primal admisibilă.
În problemele practice o astfel de bază se determină prin metoda bazei artificiale.
De foarte multe ori ı̂nsă, aceasta este disponibilă direct, baza primal admisibilă fiind
matricea unitate.
Avem următoarea teoremă numită teorema fundamentală a programării liniare.

Teorema 1.2.1. i) Dacă problema de programare liniară:



 min(max)c0 x
Ax = b

x≥0
are un program optim, atunci ea are un program de bază.
ii) Dacă problema de mai sus are un program optim, atunci ea are un program
optim de bază.

Algoritmul fundamental pentru rezolvarea problemelor de programare liniară


menţionate se numeşte algoritmul simplex primal şi a fost elaborat de George Dantzig
ı̂n anul 1951. Algoritmul este descris ı̂n orice carte fundamentală de programare
liniară şi este implementat ı̂n majoritatea softurilor matematice de prelucrare de
date.
ALGORITMUL SIMPLEX (DANTZIG) 7

1.3. Algoritmul simplex (Dantzig)


Pentru rezolvarea problemelor de programare liniară s-a impus algoritmul simplex
datorat lui G.B. Dantzig (1951). Această metodă ne permite să explorăm ı̂n mod
sistematic mulţimea programelor de bază a unei probleme de programare liniară
ı̂n forma standard prin trecerea de la un program de bază la un program de bază
vecin, care este cel puţin la fel de bun ca cel precedent. Metoda furnizează, de
asemenea, criterii pentru punerea ı̂n evidenţă a situaţiei când problema are optim
infinit precum şi a cazului ı̂n care mulţimea programelor este vidă.
PASUL 0. Se pune problema de optimizat ı̂n forma standard:

 inf cT x
Ax = b,

x ≥ 0.

(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}

şi se trece la pasul următor.


PASUL 3. Dacă există j ∈ R+ pentru care yjB ≤ 0 ne oprim (STOP): problema
are optim infinit. În caz contrar, determinăm k ∈ R+ cu criteriul de intrare ı̂n bază:

max(zjB − cj ) = zkB − ck
j

B > 0} cu criteriul de ieşire din bază:


şi r ∈ B+ = {i ∈ B|yik

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.

1.4. Duala unei probleme de programare liniară


Având o problemă de programare liniară, problema construită după următoarele
reguli se numeşte problema duală:
a) termenii liberi din problema primală devin coeficienţi ai funcţiei obiectiv ı̂n
problema duală;
b) coeficienţii funcţiei obiectiv din problema primală devin termeni liberi ı̂n prob-
lema duală;
c) o problemă de maximizare (minimizare) devine o problemă de minimizare
(maximizare);
d) matricea coeficienţilor sistemului de restricţii din problema duală este trans-
pusa matricei coeficienţilor sistemului de restricţii primale;
e) variabile duale (primale) asociate unor restricţii primale (duale) concordante
sunt supuse condiţiilor de nenegativitate;
f) variabile primale (duale) asociate unor restricţii duale (primale) care sunt
restricţii neconcordante sunt supuse condiţiei de nepozitivitate;
g) variabile duale (primale) asociate unor restricţii primale (duale) care sunt
ecuaţii nu sunt supuse nici unei condiţii privind semnul.
Remarcăm că duala unei probleme ı̂n forma canonică este tot ı̂n forma canonică.
Enunţăm ı̂n continuare teorema fundamentală a dualităţii:
Teorema 1.4.1. Fiind dat cuplul de probleme duale:

 min c0 x
Ax ≥ b

x≥0

ş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:

> dual(funcţia liniară, mulţime de restricţii, nume variabila duală);

1.5. Problema de transport


Să presupunem că există m centre de aprovizionare (depozite) şi n centre de
consum (beneficiari). Un produs omogen este depozitat ı̂n cantităţile ai , 1 ≤ i ≤ m,
ı̂n centrele de aprovizionare şi este cerut ı̂n cantităţile bj , 1 ≤ j ≤ n, la beneficiari.
Vom presupune că sunt ı̂ndeplinite condiţiile:
½
ai ≥ 0, 1 ≤ i ≤ m, bj ≥ 0, 1 ≤ j ≤ n,
(1.4)
a1 + . . . + am = b1 + . . . + bn .
Cu alte cuvinte, presupunem că disponibilitaţile şi cererile sunt nenegative, iar
disponibilitatea egalează cererea totală. O astfel de problemă de transport se numeş-
te problemă de transport echilibrată.
Problema constă ı̂n organizarea transportului de la depozite la beneficiari astfel
ı̂ncât să se obţină cheltuieli minime de transport.
Să notăm cu xij cantitatea (necunoscută) care urmează să fie transportată de la
depozitul i la beneficiarul j. Cantitatea ce se transportă de la depozitul i la toţi
beneficiarii trebuie să egaleze disponibilitatea de la depozitul respectiv, adică:
n
X
xij = ai , 1 ≤ i ≤ m. (1.5)
j=1

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

Evident, cantităţile transportate sunt nenegative, adică:

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

Problema constă ı̂n determinarea soluţiilor sistemului de ecuaţii şi inegalităţi


1.5-1.7 pentru care costul total de transport este minim, adică:

 Pm P n

 inf cij xij ,

 i=1 j=1



 P n
xij = ai , 1 ≤ i ≤ m,
j=1

 P m



 xij = bj , 1 ≤ j ≤ n,


 i=1
xij ≥ 0, 1 ≤ i ≤ m, 1 ≤ j ≤ n.

1.6. Aplicaţii

Exerciţiul 1.6.1. Să se scrie duala problemei de programare liniară:




 min(2x1 + 3x2 + x3 ),


 x1 + x2 + 3x4 ≥ 3,
2x2 + 5x3 + 4x4 = 5,



 x + x3 ≤ −2,
 1
x1 , x2 ≥ 0, x3 arbitrar, x4 ≤ 0.
Găsiţi soluţia optimă a problemei primale.

Răspuns: Respectând regulile de formare a problemei duale obţinem:




 max(3u1 + 5u2 − 2u3 ),
 u + u ≤ 2,


 1 3

u1 + 2u2 ≤ 3,

 5u2 + u3 = 1,



 3u1 + 4u2 ≥ 0,

u1 ≥ 0, u2 arbitrar, u3 ≤ 0.
12 PROGRAMARE LINIARĂ

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.

Exerciţiul 1.6.2. Rezolvaţi următoarea problemă de programare liniară pre-


cum şi duala acesteia:


 min(2αx1 + 3αx2 + αx3 ),


 x1 + x2 + 3x4 ≥ 3,
2x2 + 5x3 + 4x4 = 5,



 x + x3 ≤ −2,
 1
x1 , x2 ≥ 0, x3 arbitrar, x4 ≤ 0.
unde α este un parametru real.

Exerciţiul 1.6.3. Rezolvaţi următoarea problemă de programare liniară pre-


cum şi duala acesteia:


 min(2x1 + 3x2 + x3 ),


 x1 + x2 + 3x4 ≥ 3 + α,
2x2 + 5x3 + 4x4 = 5 − α,



 x + x3 ≤ −2 + 2α,
 1
x1 , x2 ≥ 0, x3 arbitrar, x4 ≤ 0.
α este un parametru real.

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.

Exerciţiul 1.6.4. Să se rezolve cu algoritmul simplex problema de programare


liniară: 

 max(2x1 + x2 ),


 x1 − x2 ≤ 4,
3x1 − x2 ≤ 18,



 −x 1 + 2x2 ≤ 6,

x1 , x2 ≥ 0.
APLICAŢII 13

Exerciţiul 1.6.5. Să se minimizeze expresia 2x1 + 3x2 cu sistemul de restricţii:




 x1 − x2 + x3 = 1,


 1 + x2 − x4 = 1,
x
x1 − 2x2 + x5 = 1,



 2x1 + x3 − x4 = 2,

xi ≥ 0, i = 1, . . . , 5.

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.

Exerciţiul 1.6.6. Rezolvaţi problema următoare:




 min(x1 + 6x2 ),

2x1 + x2 ≥ 3,
 x1 + 3x2 ≥ 4,


x1 , x2 ≥ 0.

Răspuns. Vom rezolva problema grafic. Se va reprezenta ı̂ntr-un sistem de axe


de coordonate domeniul de admisibilitate. Pe acelaşi grafic reprezentăm şi ecuaţia
x1 + 6x2 = 0. Obţinem figura 1.1.

Figura 1.1: Domeniul de admisibilitate şi funcţia obiectiv.

1
Vom duce drepte paralele cu x2 = − x1 până se intersectează cu domeniul
6
14 PROGRAMARE LINIARĂ

de admisibilitate. Prima dreaptă care realizează această intersecţie ne furnizează


minimul funcţiei obiectiv zmin = 4.
Soluţia optimă este x∗1 = 4, x∗2 = 0.

Exerciţiul 1.6.7. Găsiţi minimul funcţiei 2x1 + 3x2 + x3 cu restricţiile:




 x1 + x2 + 3x4 ≥ 3,

2x2 + 5x3 + 4x4 = 5,
 x1 + x3 ≤ −2,


x1 , x2 , x3 , x4 ∈ {0, 1}.

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

Variabila artificială x8 nu mai poate fi eliminată dintre variabilele de bază, deoa-


rece toţi coeficienţii y8j , 1 ≤ j ≤ 5, sunt egali cu zero. Acest fapt ne arată că
ecuaţia a patra din problema iniţială este o consecinţă a celorlalte patru ecuaţii
(ecuaţia a patra este suma primelor două ecuaţii, situaţie ce putea fi observată de
la ı̂nceput). În acest caz, ecuaţia a patra poate fi neglijată şi deci linia a patra
a tabelului simplex poate fi eliminată; partea rămasă a tabelului simplex nu mai
conţine variabile artificiale de bază şi, ca urmare, prima fază este terminată.
Vom trece acum la faza a doua a metodei, adică la rezolvarea problemei iniţiale,
folosind drept bază iniţială ultima bază obţinută din tabelul 1.4, după eliminarea
ultimei linii.
16 PROGRAMARE LINIARĂ

Tabelul simplex corespunzător este tabelul 1.5:

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

Deoarece zj − cj ≤ 0 pentru toţi j, 1 ≤ j ≤ 5, rezultă că am obţinut programul


optim de bază (degenerat): x∗1 = 1, x∗2 = 0, x∗3 = 0, x∗4 = 0, x∗5 = 0, iar valoarea
optimă a funcţiei obiectiv este z ∗ = 2.
Capitolul 2

PROGRAMARE DINAMICĂ

2.1. Forma unei probleme de optimizare secvenţială


Programarea dinamică este o metodă de rezolvare a unei clase de probleme,
al căror model matematic prezintă caracteristicile unui sistem secvenţial. Într-o
astfel de problemă, la fiecare fază t ∈ T, cu T ⊂ R, se alege o soluţie (decizie,
strategie, politică) xt dintr-o mulţime de soluţii admisibile Xt , Xt ⊆ M nt , unde
M ⊆ R, iar nt ∈ N∗ , putându-se de fiecare dată măsura eficienţa (sau utilitatea)
ut a soluţiei alese. Problema de optimizare constă ı̂n determinarea soluţiei globale
x = (xt )t∈T care optimizează o funcţie de eficienţă globală f care este definită cu
ajutorul funcţiilor de eficienţă parţială ut , t ∈ T. Evoluţia sistemului este descrisă
şi de familia parametrilor de stare (st )t∈T a căror lege de variaţie este cunoscută
şi dependentă de deciziile alese (dacă legea este deterministă avem o problemă de
programare dinamică deterministă, iar dacă legea este probabilistă avem o problemă
de programare stochastică). Să notăm cu St mulţimea stărilor la momentul t.

Definiţia 2.1.1. (Caracteristicile unui sistem secvenţial.) O funcţie s : T → St


cu s(t) = st ∀t ∈ T, st ∈ St se numeşte traiectoria, corespunzătoare deciziei globale
x = (xt )t∈T , a sistemului secvenţial. Aceasta descrie starea sistemului de-a lungul
ı̂ntregii perioade de timp T , ı̂n condiţiile alegerii deciziei x.

Avem ı̂n general:



 xt = xt (st )
ut : Sti−1 × Xti → R, uti = uti (sti , xti )
 i
τti : Sti−1 × Xti → Sti , τti = τti (sti−1 , xti ).

Traiectoria s depinde de starea iniţială st0 = s0 ∈ St0 , t0 fiind momentul iniţial.

17
18 PROGRAMARE DINAMICĂ

Definiţia 2.1.2. Se numeşte traiectorie optimă traiectoria s∗ corespunzătoare


unei decizii optime x∗ care optimizează funcţia obiectiv.

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.

Problema de optimizare astfel definită se numeşte efectiv decompozabilă, adică


vectorul de stare si , la ieşirea din faza i, nu depinde decât de vectorul de stare si−1
şi de decizia xi , luată ı̂n faza i. Funcţiile ui sunt funcţiile de eficienţă la faza i când
se ia decizia xi ştiind că vectorul de stare este si .
Toate elementele descriptive ale unei probleme de optimizare sunt determinate
de o decizie aleasă şi de starea iniţială s0 :
∼ ∼ ∼
s1 = τ1 (s0 , x1 ) =τ 1 (s0 , x1 ), u1 (s0 , x1 ) =u1 (s0 , x1 ), x1 ∈ X1 (s0 ) =X 1 (s0 )


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

Funcţia obiectiv se scrie:

∼ ∼ ∼ ∼
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ă.

2.2. Teorema de optim


Pentru a formula teorema de optim trebuie să definim mai ı̂ntâi noţiunea de
funcţie decompozabilă. În esenţă, acest lucru ı̂nseamnă că problema se poate de-
scompune ı̂ntr-un număr de faze.

Definiţia 2.2.1. O funcţie f : D = S × X × Y → R, unde X, Y şi S sunt


mulţimi nevide se numeşte decompozabilă dacă există funcţiile u, v : D → R, u fiind
constantă ı̂n raport cu variabila y ∈ Y (există u : S ×X → R astfel ı̂ncât u (s, x, y) =
u(s, x), ∀(s, x, y) ∈ D) şi o funcţie F :u (D)×v(D) → R, F (α, .) monoton crescătoare
pentru fiecare α ∈u (D), astfel ı̂ncât f (s, x, y) = F (u(s, x), v(s, x, y)) ∀(s, x, y) ∈ D.

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

atunci pentru orice s ∈ S avem:

min f (s, x, y) = min F (u(s, x), min v(s, x, y)).


x,y x y
20 PROGRAMARE DINAMICĂ

2.3. Programare dinamică regresivă


2.3.1. Ecuaţiile programării dinamice regresive
Pentru a pune sub forma unui algoritm problema secvenţială trebuie să existe o
anume legătură de tip recursiv ı̂ntre funcţiile de eficienţă trunchiate ale procesului
la fazele i:
fn−i+1 (ui (si−1 , xi ), . . . , un (sn−1 , xn )) =
= Fn−i+1 (ui (si−1 , xi ), fn−i (ui+1 (si , xi+1 ), . . . , un (sn−1 , xn )),
unde prin fn−i+1 s-a notat funcţia de eficienţă asociată procesului de decizie trun-
chiat la fazele i, i + 1, . . . , n pentru i = 1, 2, . . . , n − 1, cu f1 (un ) = un şi fn = f.
Această proprietate se numeşte proprietatea de decompozabilitate a funcţiei obiectiv.
Ecuaţia se rescrie:

∼ ∼
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 )),

∀i = 1, n − 1, ∀si−1 ∈ Si−1 , ∀xi ∈ Xi (si−1 ), ∀xn ∈ Xn (sn−1 ),


∼ ∼ ∼
cu f 1 = un şi f n =f = f.

Aplicăm teorema de optim funcţiilor f n−i+1 pentru i = 1, 2, . . . , n − 1 :

min{f n−i+1 (si−1 , xi , . . . , xn )|xi , . . . , xn } =

= min Fn−i+1 (ui (si−1 , xi ), min{ f n−i (τi (si−1 , xi ), xi+1 , . . .
xi
. . . , xn )|xi+1 , . . . , xn }).

Notăm cu gn−i+1 (si−1 ) = min{f n−i+1 (si−1 , xi , . . . , xn )|xi , . . . , xn }, valoarea opti-
mului procesului de decizie trunchiat la fazele i, i + 1, . . . , n. Avem:
gn−i (si−1 ) = gn−i (τi (si−1 , xi ))
şi obţinem:
gn−i+1 (si−1 ) = min Fn−i+1 (ui (si−1 , xi ), gn−i (τi (si−1 , xi )), i = 1, n − 1
xi
cu
g1 (sn−1 ) = min un (sn−1 , xn ).
xi
Aceste ecuaţii se numesc ecuaţiile programării dinamice regresive.
PROGRAMARE DINAMICĂ REGRESIVĂ 21

2.3.2. Rezolvarea problemelor de programare regresivă


Elementele prezentate ı̂n paragrafele precedente ne permit să elaborăm următorul
algoritm de rezolvare a problemelor de optimizare dinamice regresive.
PASUL 0. Problema matematică se codifică sub forma unei probleme de pro-
gramare liniară, punându-se ı̂n evidenţă funcţia obiectiv şi sistemul de restricţii
corespunzător.
PASUL 1. Se pune problema sub forma unui proces secvenţial de decizie urmă-
rindu-se următoarele elemente:
i) forma funcţională a funcţiilor de transfer τi : Si−1 × Xi → Si :

si = τi (si−1 , xi ), i = 1, n.

ii) spaţiul stărilor posibile: S0 , S1 , . . . , Sn ;


iii) spaţiul deciziilor: Xi (si−1 );
iv) funcţiile parţiale de eficienţă ui (si−1 , xi ), i = 1, 2, . . . , n;

v) funcţiile obiectiv ale proceselor trunchiate la fazele i, i+1, . . . , n : f i (xi , . . . , xn )
pentru i = 1, 2, . . . , n.
PASUL 2. Se rezolvă problema din faza n, adică se calculează:


min{f 1 (sn−1 , xn )|xn ∈ Xn (sn−1 )} = min{un (sn−1 , xn )|xn ∈ Xn (sn−1 )} = g1 (sn−1 ),

unde sn−1 este parametru.


Deci pentru sn−1 ∈ Sn−1 se determină x∗n−1 (sn−1 ) ∈ Xn (sn−1 ), astfel ı̂ncât:

g1 (sn−1 ) = un (sn−1 , x∗n−1 (sn−1 )).

Se atribuie contorului i valoarea n − 1. Acest contor are semnificaţia fazei i a


procesului secvenţial.
PASUL 3. Se rezolvă problema din faza i a cărei necunoscută este xi , iar si−1
este parametru. Deci pentru si−1 ∈ Si−1 , se determină valorile x∗i (si−1 ) ∈ Xi (si−1 )
pentru care:

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Ă

unde x∗2 (s0 ) = x∗2 (τ1 (s0 , x∗1 (s0 )) etc.


PASUL 5. Se optimizează pe mulţimea vectorilor iniţiali pentru a afla s∗0 :

f (s∗0 , x∗1 (s∗0 ), . . . , x∗n (s∗0 )) = min gn (s0 ) = gn (s∗0 ),
s0 ∈S0

atins pentru starea iniţială s∗0 .


PASUL 6. Se scrie soluţia optimă:

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

Exerciţiul 2.3.1. O unitate comercială trebuie să răspundă unei cereri de 25


unităţi dintr-un anumit tip de produs, cerere eşalonată pe o perioadă de 4 luni. La
ı̂nceputul fiecărei luni, unitatea se poate aproviziona cu orice cantitate din produsul
respectiv, la un preţ ce variază de la lună la lună, conform datelor din tabelul 2.1:

TABELUL 2.1
luna i 1 2 3 4
cererea 5 7 α 5
preţ 12β 10β 9β 10β

Să se determine politica optimă de reaprovizionare a unităţii cu produsul respec-


tiv, astfel ı̂ncât toate cererile să fie satisfăcute, ştiind că ı̂n depozitul respectiv se
găsesc la ı̂nceputul primei luni 3 unităţi de produs şi că nu pot fi păstrate ı̂n depozit
mai mult de 9 unităţi de produs, iar la sfârşitul ultimei luni toate produsele au fost
vândute. Parametrul β este un număr real strict pozitiv.

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:

12βx1 + 10βx2 + 9βx3 + 10βx4 ,

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

Avem: 3 + x1 + x2 + x3 + x4 = 25 sau x1 + x2 + x3 + x4 = 22.


3 + x1 ≤ 9 şi 3 + x1 − 5 ≥ 0 deci x1 ∈ [2, 6],
3 + x1 − 5 + x2 ≤ 9 şi 3 + x1 − 5 + x2 − 7 ≥ 0 deci x1 + x2 ∈ [9, 11],
3+x1 −5+x2 −7+x3 ≤ 9 şi 3+x1 −5+x2 −7+x3 −8 ≥ 0 deci x1 +x2 +x3 ∈ [17, 18]
3 + x1 − 5 + x2 − 7 + x3 − 8 + x4 ≤ 9 (echivalent cu 5 ≤ 9 inegalitate care spune
că după ce s-a efectuat comanda la ı̂nceputul lunii a 4-a mai este de satisfăcut o
cerere de 5 unităţi de produs) şi 3 + x1 − 5 + x2 − 7 + x3 − 8 + x4 − 5 = 0 (ecuaţie
ce constituie o verificare parţială).
Problema de minimizat devine:


 min(12x1 + 10x2 + 9x3 + 10x4 )


 2 ≤ x1 ≤ 6
9 ≤ x1 + x2 ≤ 11



 4 ≤ x4 ≤ 5

x1 + x2 + x3 + x4 = 22.

PASUL 1. Se determină spaţiul stărilor Si , i = 0, 4:


s0 = 3 ∈ S0 = {3},
s1 = s0 + x1 − 5 = x1 − 2 ∈ S1 = [0, 4],
s2 = s1 + x2 − 7 = x1 + x2 − 9 ∈ S2 = [0, 2],
s3 = s2 + x3 − 8 = x1 + x2 + x3 − 17 ∈ S3 = [0, 1],
s4 = s3 + x4 − 5 = x1 + x2 + x3 + x4 − 17 − 5 = 0 ∈ S4 = {0}.
Se determină spaţiul deciziilor Xi (si−1 ), i = 1, n :
x1 ∈ X1 (s0 ) = [5 − s0 , 9 − s0 ] = [2, 6],
x2 ∈ X2 (s1 ) = [7 − s1 , 9 − s1 ],
x3 ∈ X3 (s2 ) = [8 − s2 , 9 − s2 ],
x4 ∈ X4 (s3 ) = {5 − s3 }.
Funcţiile de transfer: τi (si−1 , xi ), i = 1, n :
τ1 (s0 , x1 ) = s0 + x1 − 5,
τ2 (s1 , x2 ) = s1 + x2 − 7,
τ3 (s2 , x3 ) = s2 + x3 − 8,
τ4 (s3 , x4 ) = s3 + x4 − 5 = 0.
Funcţiile parţiale de eficienţă sunt:
u1 (s0 , x1 ) = 12x1 ,
u2 (s1 , x2 ) = 10x2 ,
u3 (s2 , x3 ) = 9x3 ,
u4 (s3 , x4 ) = 10x4 , şi funcţiile de eficienţă ale proceselor de decizie trunchiate la
fazele {i, . . . , 4} (pentru i = 1, . . . , 4) sunt:

f 4 = 12x1 + 10x2 + 9x3 + 10x4 ,

f 3 = 10x2 + 9x3 + 10x4 ,
24 PROGRAMARE DINAMICĂ


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 ,

minim atins pentru x∗4 (s3 ) = 5 − s3 .


PASUL 3/4. Se rezolvă problema:

min{f 3 |x3 ∈ X3 (s2 )} = min{9x3 + 50 − 10s3 |x3 ∈ [8 − s2 , 9 − s2 ]} =
= min{9x3 + 50 − 10(s2 + x3 − 8)|x3 ∈ [8 − s2 , 9 − s2 ]} =
= min{−x3 − 10s2 + 130|x3 ∈ [8 − s2 , 9 − s2 ]} = −(9 − s2 ) − 10s2 + 130 =
= 121 − 9s2 ,
minim atins pentru x∗3 (s2 ) = 9 − s2 .
Se rezolvă problema:

min{f 2 |x2 ∈ X2 (s1 )} = min{10x2 + 121 − 9s2 |x2 ∈ [7 − s1 , 9 − s1 ]} =
= min{10x2 + 121 − 9(s1 + x2 − 7)|x2 ∈ [7 − s1 , 9 − s1 ]} =
= min{x2 − 9s1 + 184|x2 ∈ [7 − s1 , 9 − s1 ]} = 7 − s1 − 9s1 + 184 = −10s1 + 191,

minim atins pentru x∗2 (s1 ) = 7 − s1 .


Se rezolvă problema:

min{f 1 |x1 ∈ X1 (s0 )} = min{12x1 + 191 − 10s1 |x1 ∈ [2, 6]} =
= min{12x1 + 191 − 10(s0 + x1 − 5)|x1 ∈ [2, 6]} =
= min{2x1 − 10s0 + 241|x1 ∈ [2, 6]} = 243 − 10s0 ,

minim atins pentru x∗1 (s∗0 ) = 2, s∗0 = 3.


PASUL 5. Avem:
s∗1 = s∗0 + x∗1 − 5 = 0 deci x∗2 (s1 ) = 7,
s∗2 = s∗1 + x∗2 − 7 = 0 deci x∗3 (s2 ) = 9,
s∗3 = s∗2 + x∗3 − 8 = 1 deci x∗4 (s3 ) = 4.
PASUL 6. Soluţia optimă x∗ = (2, 7, 9, 4) iar traiectoria optimă este s∗ =
(0, 0, 1, 0).

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.

Indicaţie. Se notează cu xi numărul de unităţi de produs comandate la ı̂nceputul


livrării i şi cu si stocul existent după livrarea i. Problema de programare ce trebuie
rezolvată este:

 Pm

 min βi xi



 P m
i=1

 xi = α − γ + ε,
i=1

 Pj Pj j−1
P



 α i − γ ≤ xi ≤ αi + δ − γ ∀j = 1, m,

 i=1 i=1 i=1

xi ≥ 0 ∀i = 1, m.

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.

Exerciţiul 2.3.3. Să se găsească o planificare optimă unei investiţii de 5 mili-


oane dolari pentru construirea a trei obiective cunoscând randamentele investiţiilor
pe obiective, aşa cum sunt prezentate ı̂n tabelul 2.2.

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

Răspuns. Modelul matematic al problemei este:



 max(r1 (x1 ) + r2 (x2 ) + r3 (x3 ))
x1 + x2 + x3 = 5,

xi ∈ {0, 1, 2, 3, 4, 5}, i = 1, 2, 3, 4, 5.
26 PROGRAMARE DINAMICĂ

În vederea rezolvării problemei cu ajutorul programării dinamice, se pune mai


ı̂ntâi problema sub forma unui proces secvenţial de decizie. Pentru realizarea acestui
scop, se notează cu si , i = 1, 2, 3, suma investită ı̂n primul obiectiv, ı̂n primul şi al
doilea, şi respectiv suma investită ı̂n cele trei obiective. Avem: s0 = 0, s1 = s0 + x1 ,
s2 = s1 + x2 , s3 = s2 + x3.
Folosind aceste egalităţi, obţinem cu ajutorul sistemului de restricţii, S0 = {0},
S1 = S2 = {0, 1, 2, 3, 4, 5}, S3 = {5}.
X1 (s0 ) = {0, 1, 2, 3, 4, 5}, X2 (s1 ) = {0, . . . , 5 − s1 }, X3 (s2 ) = {5 − s2 }.
Remarcăm că avem următoarele funcţii de transfer:
τ1 (s0 , x1 ) = s0 + x1 , τ2 (s1 , x2 ) = s1 + x2 , τ3 (s2 , x3 ) = s2 + x3 .
Funcţiile parţiale de eficienţă, precum şi funcţiile de decizie ale proceselor de
decizie trunchiate la fazele {i, . . . , 3} (pentru i = 1, . . . , 3) sunt următoarele:
u1 (s0 , x1 ) = r1 (x1 ), u2 (s1 , x2 ) = r2 (x2 ), u3 (s2 , x3 ) = r3 (x3 ),
∼ ∼ ∼
f 3 = r1 (x1 ) + r2 (x2 ) + r3 (x3 ), f 2 = r2 (x2 ) + r3 (x3 ), f 1 = r3 (x3 ).
Se constată că problema este decompozabilă regresiv cu Fi (α, β) = α + β, unde
i = 2, 3. Se trece acum la rezolvarea problemelor de optim corespunzătoare fiecărei
faze, folosind ecuaţiile programării regresive şi obţinem:
Faza 3. Avem:

g1 (s2 ) = max{r3 (x3 )|x3 ∈ X3 (s2 )} = r3 (5 − s2 ),

obţinut pentru x∗3 (s2 ) = 5 − s2 .


Faza 2. Avem:

g2 (s1 ) = max{r2 (x2 ) + g1 (s1 + x2 )|x2 ∈ X2 (s1 )}


= max{r2 (x2 ) + r3 (5 − s1 − x2 )|x2 ∈ X2 (s1 )}.

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:

g3 (s0 ) = max{r1 (x1 ) + g2 (s0 + x1 )|x1 ∈ X1 (s0 )} =


= max{0, 88; 0, 92; 0, 95; 0, 93; 0, 91; 0, 75} = 0, 95,

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).

2.4. Programare dinamică progresivă


2.4.1. Ecuaţiile programării dinamice progresive
Procedura iterativă descrisă ı̂n paragraful anterior este valabilă fără nici o res-
tricţie asupra stării iniţiale sau finale. Aceste două stări au ı̂n mod evident, roluri
importante, aşa cum s-a văzut pentru starea s0 . În timp ce s1 , . . . , sn−1 sunt stări
de intrare şi ieşire, s0 este numai stare de intrare pentru faza 1 a problemei, iar sn
numai stare de ieşire pentru faza n a problemei.
Din punct de vedere matematic singurul lucru care deosebeşte s0 de sn este sensul
de parcurs adoptat pentru procedura de rezolvare, sens care a fost impus de ecuaţiile:

si = τi (si−1 , xi ), i = 1, n,

ce conduc la o procedură de rezolvare de la ultima fază spre prima fază a problemei,


altfel spus, am mers spre trecut. În anumite probleme se pot pune restricţii asupra
stărilor s0 şi/sau sn .
Dacă s0 este impusă, optimizarea din ultima fază a problemei conduce la un
singur gn (s0 ) deoarece s0 nu mai este parametru, iar ı̂n faza 1 luăm direct s0 = s∗0 .
Deci schema propusă este viabilă.
Dacă sn este impusă, adică sn = s∗n cu s∗n dat, trebuie ca starea iniţială s0 şi
soluţia optimă x∗ (s0 ) să satisfacă relaţia:

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.

Funcţiile elementare de eficienţă ui , pentru i = 1, . . . , n, respectiv funcţia obiectiv


globală f , devin ui (τ i (si , xi ), xi ) =ui (si , xi ), pentru i = 1, . . . , n, respectiv:
− −
f (u1 (s0 , x1 ), . . . , un (sn−1 , xn )) = f (u1 (s1 , x1 ), . . . , un (sn , xn ))

= f (sn , x1 , . . . , xn ),
28 PROGRAMARE DINAMICĂ

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.

2.4.2. Rezolvarea problemelor de programare progresivă


Elementele prezentate ı̂n paragrafele precedente ne permit să elaborăm următorul
algoritm de rezolvare a problemelor de optimizare dinamice progresive.
PASUL 0. Problema matematică se codifică sub forma unei probleme de pro-
gramare liniară, punându-se ı̂n evidenţă funcţia obiectiv şi sistemul de restricţii
corespunzător.
PASUL 1. Se pune problema sub forma unui proces secvenţial de decizie avându-
se ı̂n vedere următoarele elemente:

i) forma funcţională a funcţiilor reciproce de transfer τ i : Si × Xi → Si−1 :

si−1 =τ i (si , xi ), i = 1, n.

ii) spaţiul stărilor posibile: S0 , S1 , . . . , Sn ;



iii) spaţiul deciziilor: X i (si );

iv) funcţiile parţiale de eficienţă ui (si , xi ), i = 1, 2, . . . , n;


v) funcţiile obiectiv ale proceselor secvenţiale trunchiate la fazele 1, . . . , i : f i
(x1 , . . . , xi ) pentru i = 1, 2, . . . , n.
PASUL 2. Se rezolvă problema din faza 1, adică se calculează:

− − −
min{f 1 (s1 , x1 )|x1 ∈X 1 (s1 )} = min{u1 (s1 , x1 )|x1 ∈X 1 (s1 )} = g1 (s1 ),

unde sn−1 este parametru. Deci pentru s1 ∈ S1 se determină valoarea x∗1 (sn ) ∈X 1
(s1 ), astfel ı̂ncât:

g1 (s1 ) =u1 (s1 , x∗1 (s1 )).
Se atribuie contorului i valoarea 2. Acest contor are semnificaţia fazei i a procesului
secvenţial.
PASUL 3. Se rezolvă problema din faza i a cărei necunoscută este xi , iar si

este parametru. Deci pentru si ∈ Si , se determină x∗i (si ) ∈X i (si ) astfel ı̂ncât:
− − −
gi (si ) =F i (ui (si , x∗i (si )), gi−1 (τ i (si , x∗i (si )))).

actualizează i := i + 1;
PROGRAMARE DINAMICĂ PROGRESIVĂ 29

PASUL 4. Dacă i < n goto PASUL 3.


PASUL 5. Se determină x∗n (sn ) ∈X n (sn ) cu sn = s∗n şi avem:

− ∼
f (s∗n , x∗1 (s∗n ), . . . , x∗n (s∗n )) = min{f n (s∗n , x1 , . . . , xn )|x1 , . . . , xn } =g n (s∗n ),

unde x∗n−1 (s∗n−1 ) = x∗n−1 = x∗n−1 (τ n (s∗n , x∗n )) etc.


PASUL 6. Se scrie soluţia optimă:

x∗ = (x∗1 , . . . , x∗n )

unde x∗n = x∗n (s∗n ), x∗n−1 = x∗n−1 (τ n (s∗n , x∗n )) etc.


Observaţii. i) Dacă stările s0 sau sn sunt cunoscute, se merge de la starea ne-
cunoscută spre starea cunoscută.
ii) Dacă ambele stări sunt impuse şi dacă se pot defini funcţiile de transfer atât
ı̂ntr-un sens cât şi ı̂n celălalt atunci se poate opta pentru oricare dintre cele două
metode de rezolvare, adică progresiv sau regresiv.

2.4.3. Aplicaţii

Exerciţiul 2.4.1. Aplicaţia similară celei de la paragraful de aplicaţii core-


spunzător programării dinamice regresive.

Răspuns. Pasul 0 este identic cu cel de la rezolvarea aplicaţiei de la capitolul


programării regresive.
PASUL 1. Se determină funcţiile reciproce de transfer:
τ 1 (s1 , x1 ) = s1 − x1 + 5,
τ 2 (s2 , x2 ) = s2 − x2 + 7,
τ 3 (s3 , x3 ) = s3 − x3 + 8,
τ 4 (s4 , x4 ) = s4 − x4 + 5.
Funcţiile parţiale de eficienţă sunt:
u1 (s1 , x1 ) = 12x1 ,
u2 (s2 , x2 ) = 10x2 ,
u3 (s3 , x3 ) = 9x3 ,
u4 (s4 , x4 ) = 10x4 .
Funcţiile de eficienţă ale proceselor trunchiate la fazele 1, . . . , i (pentru i =
1, . . . , 4) sunt:

f 1= 12x1 ,

f 2 = 12x1 + 10x2 ,
30 PROGRAMARE DINAMICĂ


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.

Indicaţie. Vom nota cu xi numărul de unităţi de produs comandate la ı̂nceputul


livrării i şi cu si stocul existent după livrarea i. Problema de programare ce trebuie
rezolvată este:

 Pm

 min βi xi




i=1
 P x = α − γ,
 m
i
i=1

 P j Pj j−1
P



 α i − γ ≤ xj ≤ αi + δ − γ ∀j = 1, m,


 i=1 i=1 i=1
xi ≥ 0 ∀i = 1, m.

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.

Indicaţie. Aplicând exerciţiul precedent restricţia a doua devine:

α1 − γ ≤ x1 ≤ δ − γ,
32 PROGRAMARE DINAMICĂ

sau 10 − 3 ≤ x1 ≤ 10 − 3 deci x1 = 7. Restricţia a treia devine:

α1 + α2 − γ ≤ x1 + x2 ≤ α1 + δ − γ,

sau 10 + 8 − 3 ≤ 3 + x2 ≤ 10 + 10 − 3 deci 12 ≤ x2 ≤ 20 etc.

Exerciţiul 2.4.4. Generalizaţi problema de la exerciţiul 2.4.2 la o problemă cu


n depozite. Rezolvaţi această problemă prin metoda programării dinamice şi apoi
prin metoda de rezolvare a problemelor clasice de transport.

Exerciţiul 2.4.5. Un tren de marfă cu capacitatea maximă z trebuie să trans-


porte diferite cantităţi de N mărfuri diferite. Să notăm cu vi valoarea celui de al i-lea
tip de marfă şi cu wi greutatea sa. Să se determine ı̂ncărcătura de valoare maximă.
Aplicaţie numerică N = 3, z = 100 t, v1 = 10$, v2 = 30$, v3 = 5$, w1 = 150 t,
w2 = 20 t, w3 = 30 t.

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 .

Problema se poate rezolva prin metodele programării dinamice sau cu algoritmul


simplex.
Capitolul 3

TEORIA JOCURILOR

3.1. Noţiuni introductive

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

pierderilor celor doi jucători este:

LA (a, b) + LB (a, b).

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:

Definiţia 3.1.1. Se numeşte joc tripletul J = (X, Y, L) unde X = {a1 , . . . , am }


şi Y = {b1 , ..., bn } sunt mulţimile de strategii pure ale celor doi jucători, iar L :
X × Y → R este funcţia de câştig care se poate exprima sub forma matriceală:
 
q11 ... q1n
Q =  ... ... ... 
qm1 ... qmn

ı̂n care qij = L(ai , bj ), i = 1, m, j = 1, n. Forma matriceală a unui joc se numeşte


forma normală. Matricea jocului este alcătuită ı̂n raport cu jucătorul A numit
jucător maximizant. Jucătorul B se va numi jucător minimizant, iar matricea sa va
avea elementele −qij .

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

3.2. Principiul minimax


Teoria jocurilor are ca rol elaborarea unor planuri raţionale de acţiune pentru
cazurile conflictuale. Astfel, principiul adoptat este principul minimizării pierderii
maxime numit şi principiul minimax. Jucătorul A acţionează astfel ı̂ncât să maxi-
mizeze cel mai mic câştig pe care-l poate obţine de la jucătorul B, iar jucătorul B
acţionează astfel ı̂ncât să minimizeze pierderea sa maximă.
Valoarea:
α = max min qij
i j
STRATEGII MIXTE ŞI VALOAREA JOCULUI 35

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:

β = min max qij


j i

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.

3.3. Strategii mixte şi valoarea jocului


Jocurile cu punct şa reprezintă o clasă particulară de jocuri şi se pune ı̂n mod
natural ı̂ntrebarea dacă, ı̂n ipoteza repetării partidelor, nu se poate găsi o strategie
prin care jucătorul A să obţină un câştig mai mare decât cel asigurat prin criteriul
minimax. Vom numi strategie mixtă o combinaţie probabilistă de strategii pure.
Strategiile mixte au dublu rol:
1. de a ı̂mpiedica adversarul să cunoască strategia aleasă;
2. de a mări câştigul garantat de valoarea inferioară a jocului.
0
Fie X = (x1 , ..., xm ) vectorul probabilităţilor cu care jucătorul A alege strategiile
0
pure {a1 , ..., am } şi Y = (y1 , ..., yn ) vectorul probabilităţilor cu care jucătorul B
alege strategiile pure {b1 , ..., bn }. Avem:

 xi ≥ 0, i = 1, m
P
m
 xi = 1,
i=1

şi 
 yj ≥ 0, j = 1, n
Pn
 yj = 1.
j=1

Câştigul mediu realizat de către A când el foloseşte strategia mixtă X, iar B


strategia bj va fi:
Xm
M (X, j) = qij xi .
i=1
36 TEORIA JOCURILOR

Similar, câştigul mediu realizat de A când el foloseşte strategia ai , iar B foloseşte


strategia mixtă Y va fi:
n
X
M (i, Y ) = qij yj .
j=1

Valoarea medie a jocului va fi:


n X
X m m X
X n
M (X, Y ) = qij xi yj = qij xi yj ,
j=1 i=1 i=1 j=1

sau matriceal:
0
M (X, Y ) = X QY.

3.4. Teorema fundamentală a teoriei jocurilor

Teorema 3.4.1. (Valoarea inferioară şi valoarea superioară a jocului). Fie X,


Y submulţimi ale lui R şi fie L : X × Y → R. Dacă există mărimile:

max[min L(x, y)],


x∈X y∈Y
min[max L(x, y)],
y∈Y x∈X

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ă:

L(x, y0 ) ≤ L(x0 , y0 ) ≤ L(x0 , y).

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:

max[min L(x, y)],


x∈X y∈Y
min[max L(x, y)],
y∈Y x∈X

atunci condiţia necesară şi suficientă ca L să aibă punctul (x0 , y0 ) punct şa este:

max[min L(x, y)] = min[max L(x, y)] = L(x0 , y0 ).


x∈X y∈Y y∈Y x∈X
REZOLVAREA JOCURILOR MATRICEALE 37

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ă.

Teorema 3.4.3. (Teorema fundamentală a teoriei jocurilor). Fie jocul J =


(X, Y, L). Atunci există o pereche X0 , Y0 de strategii mixte optime astfel ı̂ncât:

max [ min M (X, Y )] = min [ max M (X, Y )] = M (X0 , Y0 ) = v,


X∈Sm Y ∈Sn Y ∈Sn X∈Sm

unde Sm şi Sn sunt submulţimi ale spaţiilor euclidiene m-dimensionale respectiv


n-dimensionale.
Valoarea v se numeşte valoarea jocului.

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:

M (i, Y0 ) ≤ v ≤ M (X0 , j), 1 ≤ i ≤ m, 1 ≤ j ≤ n.

3.5. Rezolvarea jocurilor matriceale


3.5.1. Formularea problemei de optimizare
Fie un joc cu matricea Q = (qij ). Dacă jucătorul A foloseşte strategiile pure ai
cu probabilităţile xi , i = 1, . . . , m atunci acesta poate spera un câştig de cel puţin
v, care este egal cu valoarea jocului adică:
 0

 xQ≥v
 P m
xi = 1

 i=1

xi ≥ 0, i = 1, m
0 def
unde v = (v, . . . , v) iar a ≥ b ⇔ ai ≥ bi ∀i.
Similar, dacă jucătorul B utilizează strategiile pure bj cu probabilităţile yj ,
1 ≤ j ≤ n, el se poate aştepta la o pierdere cel mult egală cu valoarea v a jocului:


 Qy ≤ v
 Pn
yj = 1


 j=1
yj ≥ 0, j = 1, n
38 TEORIA JOCURILOR

3.5.2. Reducerea la probleme de programare liniară


Pentru a transforma cele două sisteme ı̂n modele de programare liniară este nece-
sar ca valoarea jocului v să fie strict pozitivă. În acest sens se pot folosi următoarele
observaţii:
i) dacă fiecărui element al matricei Q i se adaugă o constantă k, atunci valoarea
jocului devine v + k, iar strategiile mixte rămân neschimbate;
ii) dacă fiecare element al matricei Q se ı̂nmulţeşte cu constanta k, atunci valoarea
jocului devine vk, iar strategiile mixte optime rămân neschimbate.
Deci prin folosirea adecvată a observaţiilor amintite se poate presupune v = 1.
Problemele de rezolvat devin folosind notaţia Xi = xi /v:

 P
m

 min( Xi )
i=1

 Q0 X ≥ 1

Xi ≥ 0, i = 1, m

ş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

Exerciţiul 3.6.1. Se consideră jocul ı̂n forma matriceală:

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

Matricea jocului este alcătuită ı̂n raport cu jucătorul A (maximizant).


APLICAŢII 39

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.

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:

α = max min qij = 0,


i j

şi valoarea superioară a jocului este:

β = min max qij = 2.


j i

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,

sau dacă se notează Xi = xi /v pentru i = 1, 2, 3 obţinem problema de programare


liniară: 

 min(X1 + X2 + X3 )


 −5X1 + 3X2 ≥ 1
2X1 + 2X3 ≥ 1



 X − X2 + 4X3 ≥ 1
 1
X1 , X2 , X3 ≥ 0.
Similar, problema de programare liniară corespunzătoare jucătorului B este:
40 TEORIA JOCURILOR



 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.

Exerciţiul 3.6.2. O firmă A doreşte să se lanseze pe piaţă. Cercetările efectuate


ı̂n acest sens stabilesc că dacă preţurile variază ı̂n raport cu cele ale concurenţei B,
atunci se obţin rezultatele din tabelul 3.2:
APLICAŢII 41

TABELUL 3.2

A/B −5% 0% +5%


−5% −2 −4 −4
0% −1 0 −3
+5% −3 2 0

Ce strategie mixtă va adopta firma A ı̂n faţa concurenţei?

Exerciţiul 3.6.3. Se consideră jocul ı̂n forma matriceală:

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.

Exerciţiul 3.6.4. Se consideră jocul de două persoane ı̂n forma matriceală:

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

Exerciţiul 3.6.5. Se consideră următorul scenariu criptografic: un utilizator


al unui canal de comunicaţie poate transmite mesaje cifrate corespunzătoare a trei
categorii de mesaje clare: confidenţial, secret şi strict secret. Utilizatorul poate
opta pentru unul din două sisteme de cifrare (de exemplu, un sistem simetric şi
un sistem asimetric etc). Indicaţi strategia optimă de alegere a sistemului crip-
tografic. Procentele categoriei de secret şi pierderile corespunzătoare (cantitate de
mesaj decriptată pe 24 ore de procesare selectivă, estimată procentual de designerul
sistemelor criptografice) sunt date ı̂n tabelul 3.5. Care trebuie să fie procentele pi
pentru ca utilizatorul să opteze pentru strategia 2?

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.6. Să se determine o pereche de strategii optime şi valoarea


următorului joc matriceal:  
3 6 1 4
 5 2 4 2 .
1 4 3 5

Răspuns. Se va scrie problema de optimizare pentru primul jucător şi se rezolvă


aceasta. Valoarea jocului va fi 13/4.

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

i) Să se determine valoarea inferioară şi valoarea superioară a jocului.


ii) Determinaţi, dacă există, punctul şa al jocului.
iii) Să se determine strategiile mixte ale celor doi jucători.

Răspuns. Valoarea inferioară a jocului este 1, iar valoarea superioară este 2.


Valoarea jocului este 8/5.
APLICAŢII 43

Exerciţiul 3.6.8. Folosind criteriul minimax, să se rezolve un joc matriceal de


ordinul 3 × 3 a cărui matrice este:
 
−1 3 −3
C =  2 0 3 .
2 1 0

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?

Răspuns. Valoarea inferioară a jocului este:

α = max min qij = 0,


i j

şi valoarea superioară a jocului este:

β = min max qij = 2.


j i

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

Exerciţiul 3.6.9. (Dilema prizonierului.) Se consideră următoarea situaţie: doi


suspecţi de trafic de droguri sunt anchetaţi, ı̂n stare de arest preventiv, de organele
abilitate, care nu au suficiente dovezi. Procurorul de caz le oferă celor doi, indepen-
dent, posibilitatea de a recunoaşte sau nu implicarea ı̂n traficul de droguri, precum şi
consecinţele deciziei. Astfel, ı̂n situaţia ı̂n care ambii recunosc procurorul va prop-
une pedeapsă minimă de trei ani pentru cei doi suspecţi. În cazul ı̂n care doar
unul recunoaşte pentru acesta procurorul va propune aceeiaşi pedeapsă de trei ani
44 TEORIA JOCURILOR

cu suspendare (eliberare), pentru complicele sau propunând pedeapsa maximă de


cinsprezece ani cu executare. În situaţia ı̂n care niciunul nu recunoaşte, procurorul
propune, pentru alt delict ce ı̂l poate dovedi, pentru fiecare din cei doi suspeţi,
pedeapsa de un an. Care este decizia pe care o iau cei doi suspecţi de trafic de
droguri?

Răspuns. Forma matriceală a jocului este:

A/B cooperează nu cooperează


cooperează (−3, −3) (0, −15)
nu cooperează (−15, 0) (−1, −1)

Valoarea inferioară a jocului este α = −3, valoarea superioară a jocului fiind β =


−3, deci jocul este cu punct şa. Această dilemă, ı̂n care se află cei doi suspecţi, poate
fi numită paradox, deoarece decizia acestora luată individual şi conştient (aceea de
a mărturisi) şi decizia colectivă (aceea de a tăinui) sunt divergente.
Capitolul 4

TEORIA DECIZIILOR
STATISTICE

4.1. Prezentarea problemelor


Situaţiile reale necesită adoptarea unor decizii ce trebuie determinate utilizând
diverse criterii. Spre deosebire de statistica matematică clasică, care se ocupa de
dezvoltarea unor teorii şi tehnici de inferenţă asupra parametrului θ, utilizând numai
informaţia de selecţie, teoria deciziilor statistice combină informaţia de selecţie cu
alte două aspecte importante legate de consecinţele posibile ale adoptării unei decizii
şi de informaţia a priori cu privire la parametrul θ.
Cunoaşterea consecinţelor posibile ale adoptării diferitelor decizii presupune o
exprimare cantitativă a câştigului sau pierderii produse pentru fiecare decizie posi-
bilă şi pentru diferitele valori posibile ale parametrului θ. Funcţia astfel obţinută, ce
depinde de decizia adoptată şi de parametrul θ, apare ı̂n literatura de specialitate
sub diferite denumiri ca funcţie câştig sau funcţie utilitate.
Informaţia a priori cu privire la parametrul θ se obţine din alte surse decât cele de
natură statistică ce implică problema de decizie respectivă. Este o informaţie care se
obţine dintr-o experienţă trecută cu privire la situaţii similare ce implică parametrul
θ. Această informaţie a priori este cuantificată printr-o distribuţie de probabilitate
cu privire la parametrul θ. Problema existenţei acestei distribuţii este o problemă
destul de discutată. Abordarea teoriei deciziilor prin intermediul unei distribuţii
a priori corespunde abordării bayesiane. Problemele legate de teoria deciziilor pot
fi ı̂ncadrate ı̂n cadrul teoriei jocurilor ceea ce justifică prezentarea acestui capitol
după capitolul corespunzător teoriei jocurilor. Decidentul poate avea sau nu posi-
bilitatea efectuării unor experienţe a priori luării deciziei. Astfel, avem decizii fără
experienţă a priori, decizii cu experienţă unică (sau decizii cu volum de eşantionaj

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.

4.2. Strategii Bayes şi strategii minimax


Pentru a fixa ideile să presupunem că mulţimea parametrilor de stare (necunos-
cută) θ este finită Θ = {θ1 , . . . , θm }. Să presupunem că avem o informaţie a priori
despre θ dată de distribuţia de probabilitate a priori ξ(θ). Această distribuţie se
numeşte strategie mixtă. Să presupunem că avem mulţimea strategiilor pure:

A = {a1 , ..., an }.

Să notăm prin L(θ, a) valoarea funcţiei de pierdere:

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:

L(ξ, a∗ ) = min L(ξ, a).


a∈A

Numim strategie minimax acţiunea cea mai favorabilă a∗ care minimizează pier-
derea maximă, adică a∗ pentru care:

max L(ξ, a∗ ) = min max L(ξ, a).


θ∈Θ a∈A θ∈Θ

Dacă nu ne limităm numai la strategiile pure, atunci vom folosi o combinaţie


de strategii pure alese după o lege de probabilitate. Această strategie se numeşte
strategie mixtă.
CAZUL EFECTUĂRII UNOR EXPERIENŢE UNICE 47

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)}.

Atunci pierderile medii sunt date de:


XX
L(ξ, η) = Mθ,a (L(θ, a)) = L(θ, a)ξ(θ)η(a).
θ∈Θ a∈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:

max L(ξ, η ∗ ) = min max L(ξ, η).


θ∈Θ η∈H θ∈Θ

4.3. Cazul efectuării unor experienţe unice


Să presupunem că decidentul, pentru a-şi lărgi cunoştinţele despre stările naturii,
optează pentru efectuarea unei experienţe unice (de exemplu, pentru a estima influ-
enţa unui anumit tip de medicament asupra unei categorii de pacienţi, se poate face
o experienţă unică ce constă ı̂n măsurarea zilnică, timp de mai multe luni, a unei
concentraţii, dintr-un anumit tip de compus proteic, pentru m pacienţi din categoria
respectivă).
Fie Z spaţiul rezultatelor z1 , ..., zl ale experienţei. Fiecărui rezultat z ∈ Z obţinut
când starea θ ∈ Θ ı̂i corespunde o probabilitate determinată de p(z|θ), care satisface
relaţiile:
(
p(z|θ)
P ≥ 0, pentru orice z ∈ Z
p(z|θ) = 1.
z∈Z

Definiţia 4.3.1. Tripletul format din spaţiul rezultatelor experienţei Z, spa-


ţiul stărilor naturii Θ şi distribuţia condiţionată p(z|θ) definită pe Z pentru fiecare
θ ∈ Θ, se numeşte spaţiu de eşantionaj. Vom nota acest lucru cu E = (Z, Θ, p).

Definiţia 4.3.2. Se numeşte funcţie de decizie funcţia d : Z → A, şi asociază


fiecărui rezultat zk ∈ Z o acţiune aj ∈ A, j = 1, n.
48 TEORIA DECIZIILOR STATISTICE

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.

Definiţia 4.3.3. Numim funcţie de risc funcţia ρ : Θ × D → R dată de:


X
ρ(θ, d) = M [Lz (θ, d)] = Lz (θ, d)p(z|θ),
z∈Z

şi reprezintă valorea medie a pierderii pe spaţiul rezultatelor Z.

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:

ρ(θ, η ∗ ) = min max ρ(θ, η),


η θ∈Θ

iar valoarea corespuzătore a riscului se numeşte risc minimax.


Principiul lui Bayes minimizează riscul mediu definit de:
X
ρ(ξ, d) = ρ(θ, d)ξ(θ).
θ∈Θ

Strategia pură d∗ se alege astfel ı̂ncât:

ρ(ξ, d∗ ) = min ρ(ξ, d).


d∈D
DECIZII OPTIME ı̂N CAZ DE INCERTITUDINE 49

4.4. Decizii optime ı̂n caz de incertitudine


Până ı̂n acest punct au fost tratate procesele de decizii ı̂n condiţii de risc, ceea
ce reprezintă faptul că sunt cunoscute (sau se pot determina) probabilităţile cores-
punzătoare parametrului θ ∈ Θ.
În continuare ne vom ocupa de procesele de decizie desfăşurate ı̂n condiţii de
incertitudine, deci când nu se cunosc probabilităţile corespunzătoare lui θ. Faptul
că atitudinea faţă de decizie este subiectivă face ca ı̂n teoria deciziilor să nu existe
criterii universal valabile. Vom prezenta câteva criterii de alegere a deciziei ı̂n caz de
incertitudine, precizând că aplicarea lor poate duce la rezultate diferite. Un mod de
a alege o decizie ar putea fi acela al alegerii strategiei indicate ca rezultat al aplicării
mai multor criterii.
Să considerăm situaţia ı̂n care dispunem de m strategii pure a1 , . . . , am , iar para-
metrul θ are n stări posibile θ1 , . . . , θm . Elementul qij va reprezenta câştigul realizat
dacă se adoptă acţiunea ai şi starea parametrului θ este θj , i = 1, m, j = 1, n.

4.4.1. Criteriul lui Hurwicz

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

4.4.2. Criteriul lui Savage

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:

bij = max qkj − qij , i = 1, m, j = 1, n.


k
50 TEORIA DECIZIILOR STATISTICE

4.4.3. Criteriul Bayes-Laplace


Criteriul lui Bayes-Laplace alege ca strategie optimă acea acţiune ai care core-
spunde la:
n
1X
max[ qij ],
i n
j=1

adică se presupune că toate stările naturii au aceeaşi probabilitate.

4.4.4. Criteriul lui Wald


Criteriul lui Wald alege, dacă jocul are punct şa, ca strategie optimă acea acţiune
ai care corespunde la principiul minimax. Dacă jocul nu are punct şa, atunci se
determină strategia mixtă optimă cu probabilităţile x1 , ..., xm care maximizează:
Xm
min[ qij xi ].
j
i=1

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

Să se calculeze pierderile medii corespunzătoare repartiţiei a priori. Care este


strategia optimă ı̂n sensul lui Bayes?

Răspuns. Pierderile medii corespunzătoare probabilităţii a priori sunt:

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

Exerciţiul 4.5.2. Aceeaşi problemă ca la 4.5.1. că de această dată dispunem


de o strategie mixtă cu frecvenţele 20%, 30%, respectiv 50%.

Exerciţiul 4.5.3. Se consideră jocul contra naturii ı̂n forma matriceală:

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

Matricea jocului este alcătuită ı̂n raport cu jucătorul statistician A (maximizant)


şi reprezintă câştigurile realizate de acesta.
Să se aplice criteriile lui Hurwicz, Savage, Bayes şi Wald pentru alegerea deciziei
optime.

Răspuns. i) Pentru aplicarea criteriului lui Hurwicz:

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

unde ε ∈ [0, 1]. Deci strategia optimă este a4 .


ii) Pentru aplicarea criteriului lui Savage se determină matricea regretelor:
52 TEORIA DECIZIILOR STATISTICE

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

Strategia optimă se determină cu ajutorul algoritmului simplex. Sintaxa MAPLE


pentru rezolvarea problemei de programare liniară ataşată jocului este:
> with(simplex) :
> minimize(x + y + z + w, 2 ∗ x + 2 ∗ y + 4 ∗ z + 5 ∗ w >= 1, −5 ∗ x + 3 ∗ y − z >= 1,
4 ∗ x + y + z + 3 ∗ w >= 1, 2 ∗ x + 2 ∗ w >= 1, x − y + 3 ∗ z + 4 ∗ w >=
1, N ON N EGAT IV E); iar soluţia acesteia este x = 0, y = 2/5, z = 0, w = 3/5.
Aceasta conduce la strategia optimă:
2 3
x1 = 0, x2 = , x3 = 0, x4 = ,
5 5
valoarea x3 = 0 se explică prin faptul că strategia a3 ≺ a4 .

Exerciţiul 4.5.4. Se consideră jocul contra naturii ı̂n forma matriceală:

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

Matricea jocului este alcătuită ı̂n raport cu jucătorul statistician A (maximizant)


şi reprezintă câştigurile realizate de acesta. Dispunem de următorea distribuţie a
priori asupra parametrului θ :(0, 2; 0, 1; 0, 1; 0, 1; 0, 6). Care sunt pierderile medii
corespunzătoare distribuţiei a priori? Care este acţiunea optimă Bayes corespunză-
toare?
54 TEORIA DECIZIILOR STATISTICE
Capitolul 5

TEORIA GRAFURILOR

5.1. Grafuri orientate


Acest capitol este dedicat ı̂n special prezentării unor noţiuni elementare de teoria
grafurilor punându-se accentul pe algoritmii lui Ford, Bellman-Kalaba şi Dijkstra de
determinare a drumurilor optime ı̂ntr-un graf.
Începem printr-o serie de definiţii.

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.2. Un graf neorientat va fi notat cu G = (X, U ), unde X reprezin-


tă mulţimea nodurilor (vârfurilor) grafului, iar U mulţimea muchiilor. Prin muchie
se va ı̂nţelege perechea u = {i, j}, i, j ∈ X . Dacă i 6= j perechea {i, j} este egală
cu perechea {j, i}, iar muchiile ordonate (i, j) şi (j, i) reprezintă arce distincte. O
muchie se reprezintă printr-o linie care uneşte cele două noduri şi se notează cu
u = [i, j], i, j ∈ X.

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.4. Un drum ı̂ntre s şi t se defineşte ca o succesiune de rute orien-


tate µ : [(s, i1 ), . . . , (in , t)] cu proprietatea că (s, i1 ), . . . , (in , t) sunt arce ı̂n graf.

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

Drumurile elementare vor fi determinate ı̂n acestă lucrare. Unui drum µ i se


asociază valoarea drumului v(µ) = vsi1 + . . . + vin t . Numărul de arce prin care trece
un drum se numeşte lungimea drumului. Un drum µ al grafului G poate fi dat ca
un şir de noduri, µ : [s, i1 , . . . , in , t] unde (s, i1 ), . . . , (in , t) sunt rute orientate.
Se pune problema determinării unui drum µ∗ de la s la t cu valoare minimă,
adică:
v(µ∗ ) = min v(µ),
µ∈M (s,t)

unde M (s, t) este mulţimea drumurilor ı̂n graful G de la s la t.


Avem următoarea teoremă de invarianţă la multiplicare.

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).

Nu se poate formula o regulă de invarianţă relativ la operaţia aditivă (valorile


fiecărei muchii se adună cu un număr real pozitiv). Găsirea unui contraexemplu se
lasă pe seama cititorului.

5.2. Algoritmul lui Kaufmann


Definiţia 5.2.1. Fie G = (X, A) un graf orientat. Vom nota mulţimea nodurilor
cu {x1 , . . . , xn }. Matricea A = (aij ) dată de aij = 1 dacă (xi , xj ) ∈ A şi aij = 0
dacă (xi , xj ) ∈/ A se numeşte matricea arcelor. Matricea D = (dij ) dată de relaţiile
dij = 1 dacă există drum de la i la j şi dij = 0 dacă nu există drum de la i la j se
numeşte matricea drumurilor.

Remarcăm că ı̂ntr-un graf având n noduri orice drum elementar are lungimea de
cel mult n − 1.

Definiţia 5.2.2. Puterea de atingere p(xi ) a unui vârf xi ∈ X ı̂n graful G =


(X, A) este egală cu numărul de vârfuri la care se poate ajunge din xi , adică cu
ponderea Hamming a vectorului reprezentat de linia i a matricei D.

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

Teorema 5.2.1. Fie G un graf având n vârfuri, atunci elementul dij = = 1


dacă şi numai dacă avem relaţia:
n−1
[
xj ∈ Γ(k) (xi )
k=1

Problema determinării eficiente a matricei drumurilor a fost rezolvată de A. Kauf-


mann, iar algoritmul corespunzător se mai numeşte şi algoritmul ı̂nmulţirii latine.
PASUL 0. Se construieşte matricea conexiunilor directe, notată prin K(1) ı̂n care
se trec efectiv arcele, inexistenţa unui arc (0 ı̂n matricea drumurilor) fiind marcată
prin ∗.
PASUL 1. Se construieşte matricea destinaţiilor posibile K(0) .
PASUL 2. Se compun (ı̂nmulţire latină) matricele K(1) şi K(0) : K(1) &K(0) .
PASUL k. Recursiv, calculăm matricea K(k+1) = K(k) &K(0) , care ne va da
lista drumurilor formate din k + 1 arce.
Observaţie. Regula de ı̂nmulţire latină respectă regula de ı̂nmulţire a matricelor
şi ı̂n plus dacă unul din elementele participante la calcul este ∗, atunci rezultatul
este ∗ şi ı̂n caz contrar rezultatul compunerii constă ı̂n concatenarea simbolurilor
participante.

5.3. Algoritmul lui Chen


Definiţia 5.3.1. Un drum elementar se numeşte drum hamiltonian dacă trece
o singură dată prin toate nodurile grafului.

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.

5.4. Algoritmul lui Ford


Algoritmul lui Ford determină drumurile de valoare minimă ı̂ntr-un graf orientat
G = (X, A) cu şi fără circuite, de la un nod s la toate celelalte noduri. Fie l(u)
valoarea unui arc u ∈ A.
În particular, ı̂n cazul ı̂n care se cere, algoritmul determină drumurile de valoare
minimă de la nodul s la orice alt nod t. Dacă graful este neorientat sau parţial
orientat, fiecărei muchii u cu extremităţile i şi j şi valoarea l(u) i se asociază două
arce (i, j) şi (j, i) cu aceeaşi valoare lij = lji = l(u).
Fiecărui nod j i se asociază o variabilă λj care va da valoarea cea mai mică de la
nodul s la nodul j, (λs = 0).
PASUL 0. Se ı̂ntocmeşte un tabel cu toate nodurile grafului şi corespunzător
cu valorile:
λs = 0, λj = ∞, j 6= s.
PASUL 1. Pentru toate arcele (i, j) ∈ A se compară (dacă are sens) diferenţa
λj − λi cu valoarea lij :
dacă λj − λi > lij , atunci λj = λi + lij ,
dacă λj − λi ≤ lij , atunci se trece la determinarea altui arc.
Se repetă pasul 1 ı̂ntr-o nouă iteraţie până când, pentru toate arcele (i, j) ∈ A,
se verifică relaţia:
λj − λi ≤ lij ,
după care se trece la pasul 2.
PASUL 2. Drumurile de valoare minimă de la nodul s la celelalte noduri se re-
constituie din arcele (i, j) care verifică relaţia cu egalitate, adică λj − λi = lij . Arcele
ALGORITMUL BELLMAN-KALABA 59

care verifică această egalitate formează un graf parţial al drumurilor de lungime


minimă de la nodul s la toate celelalte noduri ale grafului.
Drumurile de valoare maximă se pot obţine cu algoritmul lui Ford iniţializând
λs = 0, λj = −∞, j 6= s şi ı̂nlocuind inegalităţile (>, ≤) din paşii 1 şi 2 prin (<, ≥),
iar cuvântul min prin max.

5.5. Algoritmul Bellman-Kalaba


Algoritmul Bellman-Kalaba este un algoritm care se aplică unui graf orientat cu
şi fără circuite, cu ajutorul căruia se determină drumul minim sau drumurile minime
de la toate nodurile grafului la un nod final t. Fie l(u) valoarea unui arc u ∈ Γ.
Dacă graful este neorientat, fiecărei muchii cu extremităţile i şi j şi cu valoarea l(u)
se asociază două arce (i, j) şi (j, i) cu valori egale lij = lji = l(u).
PASUL 0.
Se asociază grafului G o matrice V = (vij ) ale cărei elemente se determină astfel:

 lij dacă (i, j) ∈ Γ
vij = 0 dacă i = j

∞ dacă (i, j) ∈
/ Γ.

(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.

Algoritmul se opreşte, ı̂ntr-o etapă, dacă:


(k) (k−1)
vi = vi , pentru orice nod i.
60 TEORIA GRAFURILOR

(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.

5.6. Algoritmul lui Dijkstra


Ideea de bază a algoritmului lui Dijkstra este de a pleca din nodul s şi de a eticheta
celelalte noduri ı̂n ordinea depărtării lor, ı̂n sensul lungimii, de nodul sursă s.
Fiecărui nod j i se asociază o variabilă p(j), care ı̂n orice moment va reţine cea
mai mică lungime a drumurilor de la s la i (p(s) = 0).
Se vor considera două liste L şi T . Lista L este lista nodurilor permanente (valorile
sunt fixate), iar T este o listă cu noduri temporare (valorile pot fi modificate). Iniţial,
lista L = {s} iar lista şi T se compune din acele nodurie j ∈ X pentru care ruta
(s, j) este permisă. Un nod i∗ din lista T a cărui variabilă p(i∗ ) are valoarea cea mai
mică se include ı̂n lista L. În lista T se includ apoi, toate nodurile j, care nu sunt
ı̂nscrise ı̂n această listă şi ruta (i, j) este permisă.
Pentru a reconstrui drumurile de lungime minimă de la s la toate nodurile ce pot
fi atinse din s, folosind rute orientate permise ale grafului, se introduce pentru fiecare
nod j 6= s din graf un indicator pred(j), care va reţine ı̂n orice moment ultimul nod
dinaintea lui j, pe drumul de la s la j care a fost găsit a avea cea mai scurtă lungime
până ı̂n acel moment (pred(s) = 0).
Algoritmul lucrează ı̂ntr-un tabel cu coloanele: iteraţia, lista L, nodul j, variabila
p(j) şi indicatorul pred(j). Faptul că un nod j este inclus ı̂n lista permanentă L,
se marchează prin ∗ ı̂n stânga tabelului (coloana L), ı̂n dreptul nodului j. În orice
moment, nodurile din tabel fără marcajul ∗ aparţin listei temporare T .
ARBORI MINIMALI 61

Î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:

p(i∗ ) = min p(j).


j∈T

Dacă i∗ ≡ t algoritmul se opreşte, şi se determină drumul de lungime minimă de


la s la t. În caz contrar, nodul i∗ este transferat ı̂n lista L, prin marcarea cu ∗ şi
astfel este scos din lista T . În lista T se ı̂nscriu toate nodurile j ∈ T cu proprietatea
că ruta (i∗ , j) este permisă. Se iau p(j) = ∞ şi pred(j) = ∅.
PASUL 3. Se corectează valorile variabilelor corespunzătoare nodurilor j ∈ T
adiacente cu nodul i∗ comparând:

p(j) cu p(i∗ ) + vi∗ j .

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.

5.7. Arbori minimali


Definiţia 5.7.1. Se numeşte arbore un graf neorientat finit, conex (ı̂ntre orice
două noduri ale sale s şi t există un drum) şi fără cicluri.

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.7.1. Algoritmul lui Kruskal


PASUL 1. Se alege muchia a1 de valoare minimă.
PASUL 2. Se alege muchia a2 de valoare minimă rămasă.
PASUL 3. Se atribuie S = {a1 , a2 }.
PASUL 4. Dacă am acoperit toate nodurile grafului, atunci algoritmul se
opreşte.
Se alege muchia ar , de valoare minimă, din A − S, care nu formează cicluri cu
muchiile lui S.
PASUL 5. Se actualizează S = S ∪ {ar } şi goto PASUL 4.
Observaţie. Dacă există ı̂n graf muchii de valori egale, atunci s-ar putea ca
problema să admită mai multe soluţii.

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.

Figura 5.1: Graf orientat.

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

j λj Iniţializare Iteraţia 1 Iteraţia 2


1 λ1 0 0 0
2 λ2 ∞ 2 2
3 λ3 ∞ 8,5 5
4 λ4 ∞ 10,8 8
5 λ5 ∞ 7 7
6 λ6 ∞ 13,11 11

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

(4, 3) λ3 − λ4 = −3 < l43 = 5,


(4, 5) λ5 − λ4 = −1 < l45 = 3,
(4, 6) λ6 − λ4 = 3 = l46 ,
(5, 3) λ3 − λ5 = −2 < l53 = 2,
(5, 4) λ4 − λ5 = 1 = l54 ,
(5, 6) λ6 − λ5 = 4 = l56 .
În această iteraţie valorile variabilelor λj nu s-au modificat. Aceasta ı̂nseamnă că
algoritmul s-a terminat, iar drumurile minime ı̂ntre 1 şi 6 sunt date de arcele (i, j)
care realizează egalităţile λj − λi = lij . Aceste arce au fost marcate cu litere bold
ı̂n cadrul algoritmului. În etapa a doua arcele care realizează aceste egalităţi sunt:
(1, 2), (2, 3), (3, 5), (4, 6), (5, 4), (5, 6).
Astfel ı̂ntre 1 şi 6 am două drumuri minime şi anume:

µ1 : [1, 2, 3, 5, 4, 6], l(µ1 ) = 11,

şi

µ2 : [1, 2, 3, 5, 6], l(µ2 ) = 11.

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.

Figura 5.2: Graf orientat.

Rezolvare. Pentru rezolvarea problemei aplicăm algoritmul Bellman-Kalaba.


Iniţializare:
(0)
vi = vi6 , i = 1, 2, 3, 4, 5
(0)
v6 = 0.
APLICAŢII 65

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 -

PASUL 1. Se calculează elementele liniei v (1) .


(1) (0) (0) (0) (0) (0)
v1 = min{v2 + v12 , v3 + v13 , v4 + v14 , v5 + v15 , v6 + v16 } =
= min{∞ + 3, ∞ + 1, 2 + ∞, 8 + 3, 0 + ∞} = 11,
(1)
succ1 = {5},

(1) (0) (0) (0) (0) (0)


v2 = min{v1 + v21 , v3 + v23 , v4 + v24 , v5 + v25 , v6 + v26 } =
= min{∞ + 3, ∞ + 5, 2 + 8, 8 + ∞, 0 + ∞} = 10,
(1)
succ2 = {4},

(1) (0) (0) (0) (0) (0)


v3 = min{v1 + v31 , v2 + v32 , v4 + v34 , v5 + v35 , v6 + v36 } =
= min{∞ + 1, ∞ + 5, 2 + ∞, 2 + 8, 0 + ∞} = 10,
(1)
succ3 = {5},

(1) (0) (0) (0) (0) (0)


v4 = min{v1 + v41 , v2 + v42 , v3 + v43 , v5 + v45 , v6 + v46 } =
= min{∞ + ∞, ∞ + ∞, ∞ + ∞, 8 + 3, 0 + 2} = 2,
66 TEORIA GRAFURILOR

(1)
succ4 = {6},

(1) (0) (0) (0) (0) (0)


v5 = min{v1 + v51 , v2 + v52 , v3 + v53 , v4 + v54 , v6 + v56 } =
= min{∞ + 3, ∞ + ∞, ∞ + ∞, 2 + 4, 0 + 8} = 6,
(1)
succ5 = {4},
(1)
v6 = 0.
PASUL 2. Se calculează elementele liniei v (2) .
(2) (1) (1) (1) (1) (1)
v1 = min{v2 + v12 , v3 + v13 , v4 + v14 , v5 + v15 , v6 + v16 } =
= min{10 + 3, 10 + 1, 2 + ∞, 6 + 3, 0 + ∞} = 9,
(2)
succ1 = {5},

(2) (1) (1) (1) (1) (1)


v2 = min{v1 + v21 , v3 + v23 , v4 + v24 , v5 + v25 , v6 + v26 } =
= min{11 + 3, 10 + 5, 2 + 8, 6 + ∞, 0 + ∞} = 10,
(2)
succ2 = {4},

(2) (1) (1) (1) (1) (1)


v3 = min{v1 + v31 , v2 + v32 , v4 + v34 , v5 + v35 , v6 + v36 } =
= min{11 + 1, 10 + 5, 2 + ∞, 6 + 2, 0 + ∞} = 8,
(2)
succ3 = {5},

(2) (1) (1) (1) (1) (1)


v4 = min{v1 + v41 , v2 + v42 , v3 + v43 , v5 + v45 , v6 + v46 } =
= min{11 + ∞, 10 + ∞, 10 + ∞, 6 + 3, 0 + 2} = 2,
(2)
succ4 = {6},

(2) (1) (1) (1) (1) (1)


v5 = min{v1 + v51 , v2 + v52 , v3 + v53 , v4 + v54 , v6 + v56 } =
= min{11 + 3, 10 + ∞, 10 + ∞, 2 + 4, 0 + 8} = 6,
(2)
succ5 = {4},
(2)
v6 = 0.
APLICAŢII 67

PASUL 3. Se calculează elementele liniei v (3) .


(3) (2) (2) (2) (2) (2)
v1 = min{v2 + v12 , v3 + v13 , v4 + v14 , v5 + v15 , v6 + v16 } =
= min{10 + 3, 8 + 1, 2 + ∞, 6 + 3, 0 + ∞} = 9,

(3)
succ1 = {3, 5},

(3) (2) (2) (2) (2) (2)


v2 = min{v1 + v21 , v3 + v23 , v4 + v24 , v5 + v25 , v6 + v26 } =
= min{9 + 3, 8 + 5, 2 + 8, 6 + ∞, 0 + ∞} = 10,

(3)
succ2 = {4},

(3) (2) (2) (2) (2) (2)


v3 = min{v1 + v31 , v2 + v32 , v4 + v34 , v5 + v35 , v6 + v36 } =
= min{9 + 1, 10 + 5, 2 + ∞, 6 + 2, 0 + ∞} = 8,

(3)
succ3 = {5},

(3) (2) (2) (2) (2) (2)


v4 = min{v1 + v41 , v2 + v42 , v3 + v43 , v5 + v45 , v6 + v46 } =
= min{9 + ∞, 10 + ∞, 8 + ∞, 6 + 3, 0 + 2} = 2,

(3)
succ4 = {6},

(3) (2) (2) (2) (2) (2)


v5 = min{v1 + v51 , v2 + v52 , v3 + v53 , v4 + v54 , v6 + v56 } =
= min{9 + 3, 10 + ∞, 8 + ∞, 2 + 4, 0 + 8} = 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

Exerciţiul 5.8.3. Posibilităţile de comunicare ı̂ntre localităţile 1-6 sunt repre-


zentate prin graful din figura 5.3, unde fiecărei muchii i se atribuie lungimea tron-
sonului respectiv. Se cere drumul de lungime minimă ı̂ntre 2 şi toate celelalte noduri
ale grafului precum şi valoarea acestui drum.

Figura 5.3: Graf orientat.

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.

Exerciţiul 5.8.4. Posibilităţile de comunicare ı̂ntre localităţile 1-4 sunt repre-


zentate prin graful din figura 5.4, unde fiecărei muchii i se atribuie lungimea tron-
sonului respectiv. Se cere drumul de lungime minimă ı̂ntre 1 şi toate celelalte noduri
ale grafului precum şi valoarea acestui drum.

Figura 5.4: Graf orientat.

Rezolvare. Se aplică algoritmul lui Ford.


Iniţializare.
APLICAŢII 69

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.

Exerciţiul 5.8.5. Se consideră graful din figura 5.6. Numerele de pe muchii


reprezintă distanţa dintre noduri. Să se determine rutele cele mai scurte şi lungimile
lor de la fiecare nod la nodul 1.

Figura 5.6: Graf orientat.

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

Figura 5.7: Reconstrucţia drumurilor optime care ajung ı̂n nodul 1.

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?

Figura 5.8: Graf orientat.

Rezolvare. Se aplică algoritmul Bellman-Kalaba sau Ford. Drumul de lungime


minimă dintre nodul 0 şi 7 obţinut prin ambele metode este următorul [0, 1, 3, 5, 7].
Valoarea minimă a acestui drum este 37.

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

Figura 5.9: Graf orientat.

Rezolvare. i) Matricea conexiunilor directe este:


 
0 1 0 1
 1 0 1 1 
A=  0 1 0

0 
0 0 0 0
ii) Matricea drumurilor este:
 
1 1 1 1
 1 1 1 1 
D=
 1

1 1 1 
0 0 0 0
iii) Puterile de atingere ale fiecărui vârf al grafului sunt: p(x1 ) = 4, p(x2 ) = 4,
p(x3 ) = 4, p(x4 ) = 0.
iv) Graful are circuite, de exemplu {x1 , x2 , x1 } este un circuit, deci algoritmul lui
Chen nu se poate aplica.
v) Graful având circuite, pentru determinarea drumurilor hamiltoniene vom aplica
algoritmul lui Kaufmann.
PASUL 0. Matricea conexiunilor directe:
 
∗ (x1 , x2 ) ∗ (x1 , x4 )
 (x2 , x1 ) ∗ (x2 , x3 ) (x2 , x4 ) 
K(1) = 

.

∗ (x3 , x2 ) ∗ ∗
∗ ∗ ∗ ∗
PASUL 1. Matricea destinaţiilor posibile:
 
∗ x2 ∗ x4
 x1 ∗ x3 x4 
K(0) =   ∗ x2 ∗ ∗  .

∗ ∗ ∗ ∗
APLICAŢII 73

PASUL 2. Determinăm drumurile formate din două arce din matricea:


 
(x1 , x2 , x1 ) ∗ ∗ (x1 , x2 , x4 )
 ∗ (x , x , x ) ∗ (x2 , x1 , x4 ) 
K(2) = K(1) &K(0) = 
 (x3 , x2 , x1 )
2 1 2 
∗ (x3 , x2 , x3 ) (x3 , x2 , x4 ) 
∗ ∗ ∗ ∗
PASUL 3. Determinăm drumurile formate din trei arce cu ajutorul matricei
K(3) = K(2) &K(0) :
 
∗ (x1 , x2 , x1 , x2 ) ∗ (x1 , x2 , x4 )
 (x2 , x1 , x2 , x1 ) (x2 , x1 , x2 , x3 ) ∗ (x2 , x1 , x2 , x4 ) 
 
 ∗ (x3 , x2 , x1 , x2 ) sau (x3 , x2 , x3 , x2 ) ∗ (x3 , x2 , x1 , x4 ) 
∗ ∗ ∗ ∗
Algoritmul se opreşte pentru că drumul hamiltonian (dacă există) are lungimea
3 = nr. noduri − 1. Deci drumul hamiltonian este (x3 , x2 , x1 , x4 ).

Exerciţiul 5.8.8. Să se găsească drumurile hamiltoniene din graful din figura
5.10.

Figura 5.10: Graf orientat.

Rezolvare. Se aplică algoritmul lui Kaufmann şi se obţin drumurile hamiltoniene:




 µ1 = [1, 2, 3, 4, 6, 5],


 µ2 = [2, 3, 1, 6, 5, 4],
µ3 = [3, 1, 2, 5, 4, 6],



 µ = [3, 1, 6, 2, 5, 4],
 4
µ5 = [5, 4, 6, 2, 3, 1].
74 TEORIA GRAFURILOR
Capitolul 6

PROBLEME DE TRANSPORT

6.1. Problema clasică de transport


6.1.1. Formularea problemei
Problema de transport ı̂n forma standard are forma următoare:

 Pm P n

 inf cij xij ,

 i=1 j=1



 P n
xij = ai , 1 ≤ i ≤ m,
j=1 (6.1)

 Pm



 xij = bj , 1 ≤ j ≤ n,

 i=1

xij ≥ 0, 1 ≤ i ≤ m, 1 ≤ j ≤ n.
unde: 

 ai ≥ 0, 1 ≤ i ≤ m,

bj ≥ 0, 1 ≤ j ≤ n,
(6.2)
 P

m
ai =
Pn
bj .

i=1 j=1

Teorema 6.1.1. Condiţia necesară şi suficientă ca sistemul de ecuaţii consi-


derat ı̂n 6.1 să aibă soluţie nenegativă este ca relaţiile 6.2 să fie ı̂ndeplinite.

75
76 PROBLEME DE TRANSPORT

6.1.2. Algoritmul de transport (adaptarea algoritmului simplex)


Fundamente teoretice
Problema de transport se poate scrie ı̂n forma matriceală:

 inf ct x
Ax = b

x≥0

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ă:

max{zij − cij } = zsk − csk

şi se trece la pasul următor.


PASUL 2. Se determină µ-ciclul format de (s, k) ∈ R cu o parte din celulele din
B, se adoptă un sens de parcurs şi se numerotează celulele sale ı̂ncepând cu celula
(s, k). Se determină apoi celula (r, t) ∈ B cu criteriul de ieşire din 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ă.

6.1.3. Determinarea unui program de bază iniţial


Pentru a putea aplica algoritmul de transport enunţat anterior este necesar să
dispunem de un program de bază iniţial. Metoda generală de obţinere a unui pro-
gram de bază este următoarea. Se fixează o celulă (i, j) şi se atribuie variabilei xij
valoarea minimă pe care o poate lua, adică valoarea:
xij = min{ai , bj }.
78 PROBLEME DE TRANSPORT

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.

6.1.4. Degenerare şi ciclare

Ca şi ı̂n cazul general al problemelor de programare liniară, degenerarea pro-


gramelor de bază poate face să apară fenomenul de ciclare ı̂n algoritmul de transport.
Evident, o soluţie de bază a problemei de transport ı̂n forma standard este nedege-
nerată dacă şi numai dacă numărul componentelor sale nenule este egal cu m + n − 1
şi este degenerată ı̂n caz contrar. Pentru recunoaşterea problemelor degenerate este
util următorul criteriu.

Propoziţie 6.1.1. O problemă de transport ı̂n forma standard este degenerată


dacă şi numai dacă există o mulţime de indici M ⊂ {1, ..., m} şi o mulţime de indici
N ⊂ {1, ..., n} astfel ı̂ncât:

X X
ai = bj.
i∈M j∈N
PROBLEMA CLASICĂ DE TRANSPORT 79

6.1.5. Variante ale problemei de transport


Problema de transport cu cerere excedentară. Forma problemei de trans-
port cu cerere excedentară este următoarea:

 Pm P n

 inf cij xij ,

 i=1 j=1



 P n
xij = ai , 1 ≤ i ≤ m,
j=1

 P m



 xij ≤ bj , 1 ≤ j ≤ n,


 i=1
xij ≥ 0, 1 ≤ i ≤ m, 1 ≤ j ≤ n.
unde: 

 ai ≥ 0, 1 ≤ i ≤ m,

bj ≥ 0, 1 ≤ j ≤ n,
 Pm Pn

 ai ≤ bj .
i=1 j=1

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 de la depozitul m + 1


pot fi luate nule sau egale cu penalităţile unitare stabilite prin contracte cu benefi-
ciarii pentru neonorarea cererilor, dacă astfel de penalităţi există. Problema devine
atunci o problemă standard de transport, care se rezolvă prin algoritmul cunoscut.
Problema de transport cu ofertă excedentară. Forma problemei de trans-
port cu ofertă excedentară este următoarea:

 Pm P n

 inf cij xij ,

 i=1 j=1

 P

 n x ≤ a , 1 ≤ i ≤ m,
ij i
j=1

 Pm



 xij = bj , 1 ≤ j ≤ n,

 i=1

xij ≥ 0, 1 ≤ i ≤ m, 1 ≤ j ≤ n.
unde: 

 ai ≥ 0, 1 ≤ i ≤ m,

bj ≥ 0, 1 ≤ j ≤ n,
 Pm Pn

 ai ≥ bj .
i=1 j=1
80 PROBLEME DE TRANSPORT

Pentru rezolvarea acestei probleme se introduce un consumator fictiv care are


cererea:
m
X Xn
bn+1 = ai − bj ,
i=1 j=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

Rezolvarea acestei probleme se poate face şi cu ajutorul algoritmului simplex ce


este prezentat ı̂n subparagraful următor. Menţionăm că problema se poate aborda
şi ca o problemă de flux minim.

6.1.6. Algoritmul simplex modificat


Pentru determinarea unui program iniţial se alege ı̂n mod arbitrar o celulă (i, j)
şi se atribuie lui xij valoarea:


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.

PASUL 3. Se caută cu algoritmul de transport obişnuit soluţia optimă pentru


problema de la pasul 1; evident ı̂n soluţia optimă vom avea:

xr0 = x0s = x0k = 0.

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

Determinăm mai ı̂ntâi o soluţie de bază iniţială cu metoda N-V:


x11 = min{11, 5} = 5, eliminăm coloana 1,
x12 = min{6, 9} = 6, eliminăm linia 1,
x22 = min{11, 3} = 3, eliminăm coloana 2,
x23 = min{8, 9} = 8, eliminăm linia 2,
x33 = min{1, 8} = 1, eliminăm coloana 3,
x34 = min{7, 7} = 7.
Valoarea funcţiei obiectiv este:

7 · 5 + 6 · 8 + 3 · 4 + 5 · 8 + 1 · 1 + 2 · 7 = 150.

Determinăm o soluţie de bază iniţială prin metoda costului minim:


x33 = min{8, 9} = 8, eliminăm lina 3,
x21 = min{11, 5} = 5, eliminăm coloana 1,
x14 = min{11, 7} = 7, eliminăm coloana 4,
x22 = min{6, 9} = 6, eliminăm linia 2,
x13 = min{4, 1} = 1, eliminăm coloana 3,
x12 = min{3, 3} = 3.
Valoarea funcţiei obiectiv este:

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.

Exerciţiul 6.1.2. Să se găsească o soluţie de bază pentru problema de trans-


port echilibrată ale cărei date sunt prezentate ı̂n tabelul 6.3. Găsiţi valoarea cores-
punzătoare a funcţiei obiectiv. Găsiţi soluţia optimă a problemei.
TABELUL 6.3
1 3 2 10
3 1 2 5
5 3 7
PROBLEMA CLASICĂ DE TRANSPORT 83

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.

Figura 6.1: Soluţia iniţială şi marcarea celulelor din µ-ciclu.

Iteraţia 1, PASUL 1. i) Rezolvăm sistemul (o soluţie particulară care se obţine


setând u1 = 0):
ui + vj = cij ∀(i, j) ∈ B,
Soluţiile acestui sistem se trec pe marginea tabelului de transport (pe verticală
se trec elementele ui , iar pe orizontală se trec elementele vj ).
ii) Calculăm elementele:

zij − cij = ui + vj − cij ∀(i, j) ∈ R,

care se trec ı̂n colţurile din dreapta sus ale fiecărei celule secundare.
iii) Calculăm (criteriul de optim):

max (zij − cij ) = z22 − c22 = 2 > 0


(i,j)∈R

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).

Se adoptă un sens de parcurs al acestui µ-ciclu marcându-se cu ∗ celulele de rang


par. Condiţia de ieşire din bază:
84 PROBLEME DE TRANSPORT

min xij =x12 ,


deci celula (1, 2) iese din bază.


Iteraţia 1, PASUL 3. Aplicând formulele de schimbare a bazei obţinem noua
soluţie. Costul corespunzător acesteia este:
C1 = 22,
care este mai mic decât costul anterior C0 .
Repetăm paşii anteriori:
Iteraţia 2, PASUL 1. i) Rezolvăm sistemul (o soluţie particulară care se obţine
setând u1 = 0):
ui + vj = cij ∀(i, j) ∈ B,
Soluţiile acestui sistem se trec pe marginea tabelului de transport (pe verticală
se trec elementele ui , iar pe orizontală se trec elementele vj ).
ii) Calculăm elementele:
zij − cij = ui + vj − cij ∀(i, j) ∈ R,
care se trec ı̂n colţurile din dreapta sus ale fiecărei celule secundare.

Figura 6.2: Soluţia finală.

iii) Calculăm (criteriul de optim):


max (zij − cij ) = z12 − c12 = −2 < 0,
(i,j)∈R

soluţia este optimă, iar aceasta este: x11 = 5, x13 = 5, x22 = 3, x23 = 2.

Exerciţiul 6.1.3. Să se găsească o soluţie de bază pentru problema de trans-


port echilibrată ale cărei date sunt prezentate ı̂n tabelul 6.4. Găsiţi valoarea cores-
punzătoare a funcţiei obiectiv. Găsiţi soluţia optimă a problemei.
PROBLEMA CLASICĂ DE TRANSPORT 85

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:

C0 = αβ + 2αβ + 2αβ + 12αβ + 20αβ + 12αβ = 49αβ.

Iteraţia 1, PASUL 1. i) Rezolvăm sistemul (o soluţie particulară care se obţine


setând u1 = 0):
ui + vj = cij ∀(i, j) ∈ B,

Soluţiile acestui sistem se trec pe marginea tabelului de transport (pe verticală


se trec elementele ui , iar pe orizontală se trec elementele vj ).
ii) Calculăm elementele:

zij − cij = ui + vj − cij ∀(i, j) ∈ R,

care se trec ı̂n colţurile din dreapta sus ale fiecărei celule secundare.
iii) Calculăm (criteriul de optim):

max (zij − cij ) = z24 − c24 = α > 0.


(i,j)∈R

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 ∗.

Se adoptă un sens de parcurs al acestui µ-ciclu marcându-se cu ∗ celulele de rang


par. Condiţia de ieşire din bază:

min xij =x24 ,


deci celula (2, 2) iese din bază.


Iteraţia 1, PASUL 3. Aplicând formulele de schimbare a bazei obţinem noua
soluţie. Costul corespunzător acesteia este:

C1 = 47αβ,

care este mai mic decât costul anterior C0 .


Repetăm paşii anteriori:
Iteraţia 2, PASUL 1. i) Rezolvăm sistemul (o soluţie particulară care se obţine
setând u1 = 0):
ui + vj = cij ∀(i, j) ∈ B,
Soluţiile acestui sistem se trec pe marginea tabelului de transport (pe verticală
se trec elementele ui , iar pe orizontală se trec elementele vj ).

Figura 6.4: Noua soluţie de bază. Aceasta este optimă.


PROBLEMA CLASICĂ DE TRANSPORT 87

ii) Calculăm elementele:

zij − cij = ui + vj − cij ∀(i, j) ∈ R,

care se trec ı̂n colţurile din dreapta sus ale fiecărei celule secundare.
iii) Calculăm (criteriul de optim):

max (zij − cij ) = z21 − c21 = −α < 0,


(i,j)∈R

soluţia este optimă, iar aceasta este:




 x14 = 2β,

 x23 = β,


 x
14 = 2β,

 x31 = β,


 x32 = 7β,


x34 = 2β.

Costul minim va fi 47αβ.

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

Exerciţiul 6.1.5. Să se găsească o soluţie de bază pentru problema de trans-


port echilibrată ale cărei date sunt prezentate ı̂n tabelul 6.6. Găsiţi valoarea cores-
punzătoare a funcţiei obiectiv. Găsiţi soluţia optimă a problemei.
TABELUL 6.6
8α 3α 5α 2α 10β
4α α 6α 7α 15β
α 9α 4α 3α λ
5β 10β 20β 15β
88 PROBLEME DE TRANSPORT

Răspuns. Se determină λ = 25β. Valoarea minimă a costului este 140αβ, iar


soluţia optimă este: x14 = 10β, x22 = 10β, x23 = 5β, x31 = 5β, x33 = = 15β,
x34 = 5β.

Exerciţiul 6.1.6. Să se găsească o soluţie de bază pentru problema de transport


ale carei date sunt prezentate ı̂n tabelul 6.7. Costurile unitare de penalizare pentru
nesatisfacerea cererii sunt egale cu 2, iar costurile de stocare sunt nule. Găsiţi
valoarea corespunzătoare a funcţiei obiectiv. Găsiţi soluţia optimă a problemei.

TABELUL 6.7
2 3 4 1 2
3 6 2 4 3
1 4 5 3 λ
1 7 1 6

Răspuns. Pentru λ < 10 problema este o problemă de transport cu cerere exce-


dentară (cererea este mai mare ca oferta). Vom introduce un depozit fictiv ı̂n care
avem 10 − λ. Noul tabel de transport va fi tabelul 6.8:

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

Noua problemă de transport este echilibrată şi se rezolvă cu algoritmul cunoscut.


Pentru λ = 10 problema este o problemă de transport echilibrată a cărei rezolvare
se face cu ajutorul algoritmului cunoscut.
Pentru λ > 10 problema este o problemă de transport cu ofertă excedentară
(oferta este mai mare ca cererea). Vom introduce un consumator fictiv cu o cerere
de λ − 10. Noul tabel de transport va fi tabelul 6.9:

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

Noua problemă de transport este echilibrată şi se rezolvă cu algoritmul cunoscut.


FLUX MAXIM INTR-O REŢEA DE TRANSPORT 89

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

6.2. Flux maxim intr-o reţea de transport

6.2.1. Reţele de transport


În acest paragraf vom reveni la problema de transport. Aceasta va fi abordată
din perspectiva teoriei grafurilor.

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.

Fie s nodul sursă şi t nodul destinaţie.

Definiţia 6.2.2. Fluxul ϕ : X×X → R este o funcţie reală ce satisface următoarele


proprietăţi:
i) restricţii de capacitate: pentru orice u, v ∈ X, ϕ(u, v) ≤ c(u, v) (un arc care
realizează egalitate se numeşte arc saturat);
ii) antisimetrie: pentru orice u, v ∈ X, ϕ(u, v) = −ϕ(v, u);
iii) conservarea fluxului: pentru orice u ∈ X − {s, t} are loc:
X
ϕ(u, v) = 0.
v∈X

Cantitatea ϕ(u, v), poate fi pozitivă sau negativă şi se numeşte fluxul de reţea de
la u la v.

Definiţia 6.2.3. Valoarea fluxului Φ este definită ca:


X
|Φ| = ϕ(s, v)
v∈X

sau, cu alte cuvinte, valoarea fluxului este fluxul total de la sursă.


90 PROBLEME DE TRANSPORT

Problema fluxului maxim ı̂ntr-un graf G, de la un nod sursă s la un nod destinaţie


t, ı̂ntr-o reţea de transport, constă ı̂n determinarea unui flux maxim de la s la t.

6.2.2. Algoritmul Ford-Fulkerson


În acest paragraf prezentăm metoda Ford-Fulkerson de rezolvare a problemei
fluxului maxim, respectiv a fluxului minim. Este vorba mai degrabă de o metodă
decât de un algoritm pentru că suportă mai multe implementări cu timpi de rulare
diferiţi. Metoda Ford-Fulkerson face apel la trei idei importante care sunt relevante
pentru multe dintre problemele de grafuri: flux compatibil, drum şi tăietură de
capacitate minimă.

Algoritmul de rezolvare a problemei de flux maxim


PASUL 1. În cadrul acestei prime etape se urmăreşte construirea unui flux
compatibil. Pentru aceasta se consideră drumurile nesaturate de la sursa s la
destinaţia t. Fie µi un drum nesaturat. Fluxul propagat de-a lungul acestui drum
este dat de:
ϕi = min [c(u, v) − ϕ(u, v)].
(u,v)∈µi

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

PASUL 2. În cadrul etapei a doua se determină fluxul de valoare maximă cu


ajutorul următorului procedeu de marcare:
i) se marchează intrarea s cu [+];
ii) dacă nodul i este marcat şi (i, j) ∈ Γ cu ϕ(i, j) < c(i, j), atunci nodul j se
marchează cu [+i];
iii) dacă nodul j este marcat şi (i, j) ∈ Γ cu ϕ(i, j) > 0, atunci nodul i se
marchează cu [−j];
FLUX MAXIM INTR-O REŢEA DE TRANSPORT 91

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
/

Tăietura de capacitate minimă reprezintă ştrangularea ı̂n graf. Arcele ei fiind


saturate, ı̂nseamnă că pentru mărirea fluxului propagat trebuie mărită capacitatea
unuia sau mai multor arce ale tăieturii.
Observaţii:
i) Operaţia de marcare este operaţia de decizie asupra optimalitaţii.
ii) Tăietura de capacitate minimă are dublu rol şi anume:
-verifică rezultatul prin intermediul teoremei Ford-Fulkerson;
-indică locul unde trebuie umblat pentru a mări capacitatea fluxului.
92 PROBLEME DE TRANSPORT

Algoritmul de rezolvare a problemei de flux minim


Pentru a obţine un flux de valoare minimă se induce ı̂n reţea un flux arbitrar cu
condiţia ϕ(u, v) ≥ c(u, v), pentru fiecare arc (u, v).
În vederea determinării fluxului de valoare minimă se consideră pentru ı̂nceput
lanţurile de la nodul final t la nodul de ı̂nceput s după următorul procedeu de
marcare:
i) nodul final t se marchează cu [+t];
ii) dacă j este nod marcat, (i, j) arc şi ϕ(i, j) > c(i, j), atunci nodul i se marchează
cu [−j];
iii) dacă i este nod marcat şi (i, j) arc, atunci nodul j se marchează cu [+i].
Dacă se reuşeşte marcarea nodului de ı̂nceput s ı̂nseamnă că s-a găsit un lanţ µ
de-a lungul căruia fluxul poate fi diminuat.
Dacă B este mulţimea arcelor din lanţul µ din categoria ii) şi

θ = min [ϕ(u, v) − c(u, v)],


(u,v)∈B

atunci noul flux diminuat este:



 ϕ(u, v) + θ când (u, v) ∈ B
ϕ(u, v) = ϕ(u, v) − θ când (u, v) ∈ µ, (u, v) ∈ /B

ϕ(u, v) ı̂n rest.

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.3. Problema de transport ca problemă de flux maxim


În acest paragraf vom vedea că problema clasică de transport se poate modela ca
o problemă de flux maxim. Pentru a fixa ideile să presupunem că avem m centre de
aprovizionare şi n centre de consum (beneficiari), iar transportul se face cu ajutorul
unor sisteme limitate pe fiecare direcţie dij . Vom construi un graf orientat de la cele
m depozite la cei n beneficiari, valoarea fiecărui arc fiind egală cu valoarea dij , un
nod de intrare Xinput şi un nod de ieşire din reţea Xoutput cu legătură la fiecare
din depozite respectiv beneficiari, valoarea fiecărui arc fiind egală cu ai respectiv bj .
Problema ce urmează a fi rezolvată este o problemă de flux maxim.
FLUX MAXIM INTR-O REŢEA DE TRANSPORT 93

6.2.4. Aplicaţii

Exerciţiul 6.2.1. Un proces economic dispune de o reţea de tranport de genul


celei din figura 6.5. Capacităţile de trasport sunt cele indicate pe figură. Care este
fluxul maxim propagat ı̂n sistem ı̂ntre punctele 1 şi 9? Care este fluxul de la nodul
3 la 5?

Figura 6.5: Flux ı̂ntre două noduri.

Răspuns. Se propagă un flux maxim ı̂n reţeaua de transport de la nodul 1 la nodul


9. Pentru aceasta se generează drumuri de la nodul 1 la nodul 9 (rute orientate, ı̂n
acelaşi 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:
10 5 10 10
µ1 = (1 → 2 → 6 → 8 → 9), ϕ1 = 5.
5 4 6 5 5
µ2 = (1 → 2 → 7 → 6 → 8 → 9), ϕ2 = 4.
1 2 3 2 1 1
µ3 = (1 → 2 → 3 → 7 → 6 → 8 → 9), ϕ3 = 1.
8 2 8
µ4 = (1 → 3 → 7 → 9), ϕ4 = 2.
6 5 2 6
µ5 = (1 → 3 → 5 → 7 → 9), ϕ5 = 2.
4 3 10
µ6 = (1 → 3 → 5 → 9), ϕ6 = 3.
1 5 6 7
µ7 = (1 → 3 → 4 → 5 → 9), ϕ7 = 1.
10 5 6
µ8 = (1 → 4 → 5 → 9), ϕ8 = 5.
94 PROBLEME DE TRANSPORT

Î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

Figura 6.6: Rute orientate.

În etapa următoare vom aplica procedeul de marcare. Astfel, următoarele noduri
sunt marcate ca ı̂n figura 6.7.

Figura 6.7: Marcarea nodurilor.


FLUX MAXIM INTR-O REŢEA DE TRANSPORT 95

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)},

cu valoarea capacităţii: c(∪ A) = 5 + 6 + 5 + 4 + 3 = 23.


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.
Prin arcul [3, 5] se propagă un flux de 5 fiind la capacitate maximă.
Sintaxa MAPLE pentru rezolvarea acestei probleme este:
> with(networks) :
> new(G) :
> addvertex(1, 2, 3, 4, 5, 6, 7, 8, 9, G) :
> addedge([{1, 2}, {1, 3}, {1, 4}, {2, 6}, {2, 7}, {2, 3}, {3, 4},
{3, 7}, {3, 5}, {6, 7}, {6, 8}, {4, 5}, {5, 7}, {5, 9}, {7, 8}, {7, 9}, {8, 9}]);
> weights = [10, 8, 10, 5, 4, 2, 5, 3, 5, 6, 10, 6, 2, 10, 3, 8, 10], G);
> f low(G, 1, 9);
Orice cantitate suplimentară de flux trebuie să treacă prin una sau mai multe
arce ale tăieturii. Să presupunem că se ı̂nlocuieşte conducta ı̂ntre nodurile 2 şi 7 de
capacitate 4 cu una de capacitate 7.
Prin aplicarea procedeului de marcare se obţine lanţul din figura 6.8, cu φ = 1.

Figura 6.8: Lanţ obţinut ı̂n urma procesului de marcare.

Fluxul propagat este conform figurii 6.9. Arcele [2, 3] şi [3, 4] nu sunt utilizate.
96 PROBLEME DE TRANSPORT

Figura 6.9: Flux propagat.

Observăm ı̂n figură că drumul:


4 5 2 2 3
µ = (1 → 4 → 3 → 2 → 7 → 9), ϕ = 2.
Situaţia este prezentată ı̂n figura 6.10, iar fluxul propagat este egal cu 26.

Figura 6.10: Flux propagat şi tăietura de capacitate minimă.

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ă.

Răspuns. La pasul 1 se generează rute orientate de la nodul 1 la nodul 5 care se


saturează.
40α 15α 22α
µ1 : 1 −→ 2 −→ 3 −→ 5, ϕ1 = min{40α, 15α, 22α} = 15α;
25α 8α
µ2 : 1 −→ 2 −→ 5, ϕ2 = min{25α, 8α} = 8α;
17α 12α 12α 7α
µ3 : 1 −→ 2 −→ 4 −→ 3 −→ 5, ϕ3 = min{17α, 12α, 12α, 7α} = 7α;
18α 18α
µ4 : 1 −→ 4 −→ 5, ϕ4 = min{18α, 18α} = 18α;
P
4
Fluxul este Φ = ϕi = 48α.
i=1
Pasul 2 constă ı̂n marcarea nodurilor. Nodul final nu se poate marca, deci fluxul
este maxim (fig.6.12).
Mulţimea nodurilor nemarcate este: A = {5}.

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

Să se determine un plan optim de transport.

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.

Problema se rezolvă cu ajutorul algoritmului Ford-Fulkerson. Se propagă un flux


maxim ı̂n reţeaua de transport de la nodul d (input) la nodul c (output). Pentru
aceasta se generează drumuri de la nodul d la nodul c (rute orientate, ı̂n acelaşi
FLUX MAXIM INTR-O REŢEA DE TRANSPORT 99

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

şi tăietura de capacitate maximă cuprinde arcele:

∪ A= {(c1 , d1 ), (c1 , d2 ), (c2 , d1 ), (c3 , d1 ), (c3 , d2 )},

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).

Figura 6.15: Tăietura de capacitate minimă şi fluxul propagat.

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ă.

Exerciţiul 6.2.4. Să se scrie un program MAPLE pentru rezolvarea problemelor


de flux maxim ı̂ntr-o reţea de transport. Verificaţi rezultatul cu teorema Ford-
Fulkerson.

Răspuns. Pentru fixarea ideilor vom exemplifica programul pe problema 6.2.1.


Vom indica atât sintaxa MAPLE (>) cât şi comentariile corespunzătoare (italic).
Se iniţializează: lista de vârfuri, lista muchiilor, lista ponderilor, nodul iniţial s
şi nodul final t.
> varf uri := {1, 2, 3, 4, 5, 6, 7, 8, 9};
> muchii := [{1, 2}, {1, 3}, {1, 4}, {2, 6}, {2, 7}, {2, 3}, {3, 4}, {3, 7},
{3, 5}, {6, 7}, {6, 8}, {4, 5}, {5, 7}, {5, 9}, {7, 8}, {7, 9}, {8, 9}];
> ponderi := [10, 8, 10, 5, 4, 2, 5, 3, 5, 6, 10, 6, 2, 10, 3, 8, 10];
FLUX MAXIM INTR-O REŢEA DE TRANSPORT 101

> 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.

Figura 6.16: Problema de flux maxim ı̂ntre nodurile 1 şi 3.

Răspuns. Se aplică algoritmul Ford-Fulkerson, după care se determină valoarea


parametrului a din ecuaţia Φmax = 40.
Deci se execută următoarele etape:
a) se generează rute orientate de la nodul 1 la nodul 3:
2a 8a 2a
µ1 : 1 → 2 → 5 → 3, ϕ1 = 2a,
3a 3a a
µ2 : 1 → 5 → 6 → 3, ϕ2 = a,
102 PROBLEME DE TRANSPORT

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.6. Pentru datele din problema anterioară formulaţi problema ca


o problemă de programare liniară şi rezolvaţi-o prin metoda simplex.

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:

Figura 6.17: Reţea de transport.

i) capacităţile tăieturilor mulţimilor A1 = {1, 4, 6, 7} şi A2 = {5, 6, 7};


ii) fluxul maxim care străbate reţeaua şi valoarea sa;
iii) care capacitate de transport trebuie mărită şi cu ce valoare pentru a atinge
un flux maxim ı̂n reţea de 30 ? Soluţia indicată este unică?
iv) care este fluxul maxim ı̂n reţeaua de transport dacă suprimăm rutele 1 − 4
respectiv 5 − 1?

Răspuns. Capacităţile tăieturilor mulţimilor A1 şi A2 sunt 50 respectiv 35. Se


aplică algoritmul Ford-Fulkerson. Fluxul maxim ı̂n reţea va fi egal cu 23. Pentru
mărirea fluxului trebuie mărite capacităţile tăieturii de capacitate minimă.
Capitolul 7

TEORIA STOCURILOR

7.1. Formularea modelului matematic


Prin stoc vom ı̂nţelege ı̂n cele ce urmează o rezervă de bunuri materiale desti-
nate vânzării sau folosirii lor ı̂n procesul de producţie. Constituirea unui stoc pre-
supune cheltuieli de aprovizionare, cheltuieli de stocaj, pierderi pentru deprecierea
mărfurilor etc. Orice gestiune de stoc presupune intrări ı̂n stoc (inputs) şi ieşiri
din stoc (outputs), determinate de cererea de bunuri care poate fi deterministă,
aleatoare cu o repartiţie cunoscută statistic sau necunoscută. Elementele principale
care intervin ı̂n activitatea de management al stocului sunt:
-cererea de bunuri;
-nivelul stocului;
-volumul comenzii de reaprovizionare;
-perioada de reaprovizionare;
-costul de stocare;
-costul de penalizare;
-costul de lansare al comenzii;
-alte costuri.
Deciziile care se iau ı̂n organizarea unui stoc au la bază un criteriu de optim, de-
terminat de politica economică. Vom numi politică optimă acea activitate de mana-
gement al stocului care implică un cost total minim. Elementele unei politici optime
sunt: nivelul optim al stocului, volumul optim al unei comenzi de reaprovizionare,
perioada optimă de reaprovizionare, numărul optim de reaprovizionări, costul total
optim numit şi gestiunea optimă.
Modelele matematice permit stabilirea politicilor optime. După natura cererii,
modelele pot fi deterministe sau aleatorii. În cele ce urmează sunt prezentate o
serie de modele matematice consacrate din teoria stocurilor. Strategia de abordare

103
104 TEORIA STOCURILOR

a problemelor este specifică problemelor de cercetare operaţională şi anume de a


codifica corespunzător problema matematică ı̂ntr-o problemă de optimizare.

7.2. Modele deterministe


7.2.1. Model de stocare a unui produs cu cerere constantă, pe-
rioadă constantă de reaprovizionare şi fără lipsă de stoc
Presupunem că se stochează un produs al cărui consum este o funcţie liniară
de timp, cererea produsului este Q pentru o perioadă de timp θ, reaprovizionarea
stocului se face instantaneu la intervale de timp egale cu T şi ı̂n cantităţi egale cu
q, costul unitar de stocare ı̂n unitatea de timp este cs , costul de lansare al comenzii
de reaprovizionare este cl (totalul cheltuielilor legate de operaţia de reaprovizionare
ce nu depinde de q) şi nu se admite lipsa de stoc.

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

Volumul optim q̂ al unei comenzi de reaprovizionare se obţine din condiţia de minim


pentru funcţia obiectiv C(q). Deci punând condiţia:
0
C (q) = 0,

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 .

7.2.2. Model de stocare a unui produs cu cerere constantă, pe-


rioadă constantă de reaprovizionare şi cu posibilitatea lipsei
de stoc
În acest model se admit ipotezele de la modelul anterior cu deosebirea că se
admite şi lipsă de stoc penalizată cu un cost unitar de penalizare cp .
Perioada constantă T este ı̂mpărţită ı̂n două subperioade T1 (ı̂n care se satisface
cererea şi se plătesc pentru stocul mediu s/2 cheltuielile de stocare cs ) şi T2 (ı̂n care
nu se mai satisface cererea şi se plăteşte pentru lipsa medie (q − s)/2 costul unitar
de penalizare cp ).
Pentru o perioadă T = T1 + T2 se vor face cheltuielile:
s q−s
cl + T1 cs + T2 cp .
2 2
Costul global va fi:
s q−s
C(q, s) = (cl + T1 cs + T2 cp )ν
2 2
Q s θ q−s θ
= cl + T1 cs + T2 cp .
q 2 T 2 T
106 TEORIA STOCURILOR

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 ρ

stocul optim fiind: s


2Qcl √
ŝ = ρq̂ = . ρ.
θcp
Funcţia obiectiv C(q, s) are minimul C(q̂, ŝ) (acest minim se numeşte gestiunea
optimă) deoarece matricea hessiană este pozitiv definită.
Numărul optim de reaprovizionări este:
s
Q Qθcp √
ν̂ = = . ρ,
q̂ 2cl

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

7.2.3. Model de stocare a unui produs cu cerere constantă, pe-


rioadă constantă de reaprovizionare şi fără lipsă de stoc,
luând ı̂n considerare şi costul de achiziţie
Presupunem că se stochează un produs al cărui consum este o funcţie liniară
de timp, cererea produsului este Q pentru o perioadă de timp θ, reaprovizionarea
stocului se face instantaneu la intervale de timp egale cu T şi ı̂n cantităţi egale
cu q, costul unitar de achiziţie sau de producţie ca , costul unitar de stocare ı̂n
unitatea de timp este cs şi se presupune proporţional cu cheltuielile făcute pentru
apovizionarea cu o unitate de produs, costul fix al comenzii de reaprovizionare este
cb (totalul cheltuielilor legate de operaţia de reaprovizionare ce nu depinde de q) şi
nu se admite lipsa de stoc.
Acest model este o variantă a modelului 1 ı̂n care costul de lansare al comenzii
este:
cl = qca + cb ,
costul unitar de stocare:
cb
cs = α(ca + ).
q
Funcţia obiectiv devine:
Q q cb
C(q) = (qca + cb ) + θα(ca + )
q 2 q
Q 1 1
= cb + θαqca + Qca + θαcb .
q 2 2
Din condiţia de optim pentru C(q) obţinem:
r
2Qcb
q̂ = .
αθca
00
(C (q̂) > 0, deci extremul este punct de minim).
Obţinem numărul optim de reaprovizionări:
s
Q αQθca
ν̂ = = ,
q̂ 2cb
perioada optimă: s
θ 2θcb
T̂ = =
ν̂ αQca
şi gestiunea optimă:
p 1
Ĉ = C(q̂) = 2αQθca cb + Qca + αθcb .
2
MODELE DETERMINISTE 109

7.2.4. Model de stocare a mai multor produse


În cazurile practice ne confruntăm cu situaţia stocării mai multor produse. Vom
presupune că suntem ı̂n cazul modelului 1, deci se stochează k produse Pi (i =
1, 2, . . . , k) al căror consum sunt funcţii liniare de timp, cererea produsului Pi este
Qi pentru o perioadă de timp θ, reaprovizionarea stocului se face instantaneu la
intervale de timp egale cu Ti şi ı̂n cantităţi egale cu qi , costul unitar de stocare ı̂n
unitatea de timp este csi , costul de lansare al comenzii de reaprovizionare este cli
(totalul cheltuielilor legate de operaţia de reaprovizionare ce nu depinde de qi ) şi nu
se admite lipsa de stoc pentru nici un produs.
Costul total de stocare pentru produsul Pi este:
Qi 1
Ci (qi ) = cl + qi θcsi ,
qi i 2
iar funcţia obiectiv pentru toate produsele stocate:
k
X
C(q1 , . . . , qk ) = Ci (qi ).
i=1

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

şi gestiunea optimă:


k
X
Ĉ = Ĉi ,
i=1
unde: p
Ĉi = Ci (qi ) = 2θQi cli csi .
Rezultate similare se obţin pentru celelalte modele.

7.3. Modele probabiliste


7.3.1. Model de stocare a unui produs cu cerere aleatoare, cu
pierdere ı̂n cazul surplusului de stoc, cu cheltuieli supli-
mentare ı̂n cazul lipsei de stoc şi cu cost de stocare neglijabil
Presupunem că se stochează un singur produs a cărui cerere este o variabilă
aleatoare X cu repartiţia:

X : (x, p(x)), x = 0, 1, 2, . . .

pentru cerere discretă şi:


X : (x, f (x)), x ∈ [0, ∞)
pentru cerere continuă; excedentul de stoc, când x ≤ s (s fiind stocul), se penalizează
cu o pierdere unitară c1 ; lipsa de stoc, când x > s, se penalizează cu cheltuieli
suplimentare de reaprovizionare unitare c2 ; cheltuielile de stocare sunt foarte mici
ı̂n raport cu c1 şi c2 şi se neglijează.
Cazul discret. Variabila aleatoare excedent de stoc Es are repartiţia:
µ ¶
s−x
Es : , x = 0, 1, . . . , s,
p(x)
cu media:
s
X
M (Es ) = (s − x)p(x),
x=0
iar variabila aleatoare lipsă de stoc are repartiţia:
µ ¶
x−s
Ls : , x = s + 1, s + 2, . . .
p(x)
cu media:

X
M (Ls ) = (x − s)p(x).
x=s+1
MODELE PROBABILISTE 111

Funcţia obiectiv a modelului matematic reprezintă cheltuielile medii totale legate


de managementul stocului, adică:
s
X ∞
X
C(s) = c1 (s − x)p(x) + c2 (x − s)p(x).
x=0 x=s+1

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

C(s + 1) = C(s) + (c1 + c2 )F (s) − c2 . (7.2)


112 TEORIA STOCURILOR

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

C(s − 1) = C(s) − (c1 + c2 )F (s − 1) + c2 . (7.3)


Înlocuind 7.2 şi 7.3 ı̂n 7.1 obţinem:

C(s + 1) − C(s) = (c1 + c2 )F (s) − c2 > 0,


C(s − 1) − C(s) = −(c1 + c2 )F (s − 1) + c2 > 0,

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

iar variabila aleatoare lipsă de stoc are repartiţia:


µ ¶
x−s
Ls : , x ∈ [s, ∞),
f (x)

cu media:
Z∞
M (Ls ) = (x − s)f (x)dx.
s

Funcţia obiectiv a modelului matematic reprezintă cheltuielile medii totale legate


de managementul stocului, adică:

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

7.3.2. Model de stocare a unui produs cu cerere aleatoare, cu


cost de stocare şi cost de penalizare pentru lipsă de stoc
Presupunem că se stochează un singur produs a cărui cerere este o variabilă
aleatoare X cu repartiţia:

X : (x, p(x)), x = 0, 1, 2, . . .

pentru cerere discretă şi


X : (x, f (x)), x ∈ [0, ∞)
pentru cerere continuă, costul unitar de stocare este cs , costul unitar de penalizare
pentru lipsă de stoc este cp , iar nivelul stocului la un moment dat este s.
În managementul acestui stoc pe o perioadă T se pot ivi două situaţii:
i) cererea nu depăşeşte stocul (fig.7.3), deci ea este satisfăcută ı̂n toată perioada
T , adică avem x ≤ s pe perioada T ;
ii) cererea este mai mare decât stocul (fig.7.4), adică x > s, ceea ce face ca ı̂n
perioada T1 cererea să fie satisfăcută, iar ı̂n perioada T2 cererea să nu fie satisfăcută
(T1 + T2 = T ).

Figura 7.3: Cererea nu depăşeşte stocul.

Prezentăm cazul discret şi cazul continuu.


Cazul discret. Pentru situaţia i) stocul mediu pentru care se plăteşte costul
unitar de stocare cs , este:
Xs
x
(s − )p(x).
2
x=0
MODELE PROBABILISTE 115

Figura 7.4: Cererea depăşeşte stocul.

Pentru situaţia ii) vom avea un stoc mediu:



X s
p(x),
2
x=s+1

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

Stocul optim ŝ se obţine din condiţia de minim pentru funcţia C(s).

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

ρ < min{C(ŝ − 1), C(ŝ + 1)}

condiţie ce permite determinarea punctului de minim s ca soluţie a sistemului de


inecuaţii: ½
C(s − 1) − C(s) > 0
C(s + 1) − C(s) > 0.
Avem:

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

Sumele din partea a doua a egalităţii se rescriu:


MODELE PROBABILISTE 117

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

Înlocuind aceste sume ı̂n formula lui C(s + 1) obţinem:


" s ∞
#
X 1 X p(x)
C(s + 1) = C(s) + (cs + cp ) p(x) + (s + ) − cp
2 x
x=0 x=s+1

sau

C(s + 1) − C(s) = (cs + cp )L(s) − cp .

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

Cazul continuu. Raţionând ca la cazul discret, se obţine pentru funcţia obiectiv


de la acest model C(s), expresia:
Zs Z∞ Z∞
x 1 f (x) 1 (x − s)2
C(s) = cs (s − )f (x)dx + s2 cs dx + cp f (x)dx.
2 2 x 2 x
0 s s

Stocul optim ŝ se obţine din condiţia de minim pentru funcţia C(s).

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

Răspuns. Modelul matematic al problemei este un model de stocare a unui produs


cu cerere constantă, perioadă constantă de reaprovizionare şi fără lipsă de stoc.
Datele problemei sunt:


 Q = 2000 t;

θ = 365 zile;

 c = 150$;
 l
cs = 0, 5$/t.

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ă.

Răspuns. Modelul matematic al problemei este un model de stocare a unui produs


cu cerere constantă, perioadă constantă de reaprovizionare şi cu posibilitatea lipsei
de stoc.


 Q = 6000 kg;


 θ = 30 zile;
cs = 0, 025$;



 c = 0, 25$;
 p
cl = 100$.

Exerciţiul 7.4.3. La un magazin alimentar se vând produse lactate care au


un termen de garanţie de 3 zile. Necesarul de produse pentru 300 zile este de
250000 bucăţi, preţul de achiziţie de 0,25$, costul fix de lansare al comenzii 500$,
iar coeficientul de proporţionalitate de 0,015. În ipoteza că se admite o vânzare
uniformă, aprovizionarea se face la intervale egale şi că nu se admite lipsa de stoc,
să se stabilească, dacă este posibil (nu se depăşeşte termenul de garanţie), comanda
optimă, numărul optim de comenzi şi gestiunea optimă.

Răspuns. Modelul matematic al problemei este un model de stocare a unui produs


cu cerere constantă, perioadă constantă de reaprovizionare şi fără lipsă de stoc, luând
ı̂n considerare şi costul de achiziţie.
120 TEORIA STOCURILOR


 θ = 300 zile;

 Q = 250000;



ca = 0, 25$;

 cb = 500$;



 α = 0, 15;

cu restricţia T ≤ 3.

Exerciţiul 7.4.4. Se organizează pe o periodă de 300 zile stocul produselor


P1 , P2 , P3 , ı̂n condiţiile modelului de stocare a mai multor produse. Sunt date:

 Q1 = 400t;



 Q2 = 2500t;



 Q3 = 900t;



 cl1 = 200$;
cl2 = 150$;



 cl3 = 400$;


 cs1 = 2$;




 cs2 = 2$;

cs3 = 4$.
Să se stabilească elementele optime ale activităţii de management a stocului.

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α

Funcţia de repartiţie va fi:

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

care ne va da stocul optim va fi:


122 TEORIA STOCURILOR

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ă.

Răspuns. Modelul matematic corespunzător este modelul de stocare a unui pro-


dus cu cerere aleatoare, cu pierdere ı̂n cazul surplusului de stoc, cu cheltuieli supli-
mentare ı̂n cazul lipsei de stoc şi cu cost de stocare neglijabil.

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.

Răspuns. Modelul matematic corespunzător este modelul de stocare a unui pro-


dus cu cerere aleatoare, cu cost de stocare şi cost de penalizare pentru lipsă de stoc
(caz discret).
Capitolul 8

PROBABILITĂŢI ŞI
ELEMENTE DE STATISTICĂ
MATEMATICĂ

8.1. Probabilitatea unui eveniment


8.1.1. Cazul finit dimensional şi al evenimetelor elementare echiprob-
abile
Fermat (1601-1665) şi Pascal (1623-1662) au definit pentru prima dată probabil-
itatea realizării evenimentului A, ca:

Numărul cazurilor favorabile apariţiei evenimentului A


Pr(A) = .
Numărul total de cazuri
Definiţia este valabilă ı̂n cazul finit dimensional şi al evenimentelor elementare
echiprobabile.
Exemple:
a) Se aruncă cu două zaruri. Probabilitatea de a obţine poartă ı̂n casă, adică
|n − m| = 2, unde n şi m sunt numerele de pe zarurile care au ieşit la aruncare, este:

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

c) Schema lui Bernoulli, cu ı̂ntoarcere. Se consideră o urnă ce conţine bile de


m culori diferite. Se cunosc probabilităţile ca, extrăgând la ı̂ntâmplare o bilă din
urnă, aceasta să fie de culoarea i, i = 1, . . . , m, probabilităţi notate cu pi . Se face n
extrageri succesive din urnă , cu revenire. Probabilitatea ca din cele n bile extrase
n1 să fie de culoarea 1, . . . , nm să fie de culoarea m, este:

n!
Pr(n; n1 , . . . , nm ) = pn1 · pn2 2 . . . pnmm .
n1 ! . . . nm ! 1

d) Schema lui Poisson (1781-1840). Se consideră n urne Ui , i = 1, . . . , n, conţinând


bile albe şi negre, cu probabilitatea ca efectuând la ı̂ntâmplare o extragere din urna
Ui , i = 1, . . . , n să apară o bilă albă respectiv neagră sunt pi respectiv qi = 1 − pi .
Se extrage o bilă din fiecare urnă. Probabilitatea ca din cele n bile extrase, k să fie
albe şi n − k să fie negre este coeficientul lui tk din polinomul:

Pr(t) = (p1 t + q1 ) · (p2 t + q2 ) . . . (pn t + qn ).

8.1.2. Probabităţi geometrice


În situaţia ı̂n care cazurile favorabile şi cazurile totale se pot exprima sub forma unei
Aria haşurată
arii atunci Pr(A) = .
Aria totală
Exemple:
a) Se aleg la ı̂ntâmplare două numere, −1 ≤ α, β ≤ 1. Care este probabiliatea ca
α2 + β 2 ≤ 1?
π
Pr(A) = .
4
b) Acul lui Buffon (1707-1788).
În plan este trasată o reţea de drepte paralele, echidistante, la distanţa 1, una de
alta. Se aruncă un ac de lungime 0, 5. Probabilitatea ca acul să atingă reţeaua este
1
, se poate arăta folosind probabilităţi geometrice.
π
c) Se alege la ı̂ntâmplare un triunghi, din mulţimea tuturor triunghiurilor. Prob-
1
abilitatea ca triunghiul să fie ascuţitunghic este . Probabilitatea ca triunghiul să
4
fie dreptunghic este 0. Acestea se pot deduce utilizând probabiliăţi geometrice.
PROBABILITATEA UNUI EVENIMENT 125

Figura 8.1: Exemplu de probabilitate geometrică.

8.1.3. Frecvenţă absolută. Frecvenţă relativă


Notăm cu (fn ) şirul frecvenţelor absolute ale apariţiei evenimentului A ı̂n urma
unor experimente repetate. Fie (νn ) şirul frecvenţelor relative corespunzătoare: νn =
fn
. Dacă νn → p şi p = Pr(A), calculată, estimată printr-o altă metodă, atunci avem
n
o mai mare ı̂ncredere că p = Pr(A).
Frecvenţa absolută poate fi privită ca o variabilă aleatoare, astfel: f¯1 variabila
aleatoare care are repartiţia:
µ ¶
0 1
,
q p

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

f¯3 este variabila aleatoare care are repartiţia:


µ ¶ µ ¶ µ ¶ µ ¶
0 1 0 1 0 1 0 1 2 3
+ + = ş.a.m.d.
q p q p q p q 3 3q 2 p 3qp2 p3

Şirul variabilelor aleatoare f¯n monitorizează apariţia evenimetului A.


Deci f¯n este variabila aleatoare care are repatiţia:
µ ¶
0 1 2 ... n
.
q n Cn1 q n−1 p Cn2 q n−2 p2 . . . pn
126 PROBABILITĂŢI ŞI ELEMENTE DE STATISTICĂ MATEMATICĂ

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 ).

8.1.4. Definiţia statistică a probabilităţii


a) Fie experienţa aruncării cu banul. A evenimentul de a apare banul. Pr(A) =
1
p = . Person a facut experinţa de 24000 ori şi a obţinut νn = 0, 5005..
2
b) S-a făcut experinţa acului lui Buffon de un număr de 5000 de ori. S-a obţinut
pentru ν5000 = 0, 3175, de unde π ≈ 3, 1496.
Aceste două exemple, celebre, ne ı̂ndreptăţesc să acceptăm cu ı̂ncredere şi speranţe
definiţia următoare: Fie A un eveniment. Repetăm experinţa de multe ori şi cal-
culăm fn şi νn . Dacă νn se stabilizează ı̂n jurul unei valori p ∈ R, acceptăm definiţia
Pr(A) = νn = p, n suficient de mare, când νn se stabilizează aproape de p. Aceasta
este definiţia statistică a probabilităţii lui A.

8.1.5. Definiţia axiomatică a probabilităţii

Definiţia 8.1.1. (Ω, K, P) se numeşte câmp de probabilitate dacă:


a) Ω 6= ∅ (spaţiul evenimentelor);
b) K ⊂ P (Ω) (K se numeţe câmpul/mulţimea evenimentelor);
c) Pr(A), A ∈ K, Pr(A) ∈ [0, 1] (probabilitatea evenimentului A).

Axiomele mulţimii evenimentelor sunt:


a) ∅, Ω ∈ K;
b) dacă A ∈ K atunci Ā ∈ K;
S
c) dacă A1 , . . . , An , . . . ∈ K atunci Ai ∈ K.
Proprietăţile câmpului evenimentelor:
Sn
a) dacă A1 , . . . , An ∈ K atunci Ai ∈ K;
i=1
T
n
b) dacă A1 , . . . , An ∈ K atunci Ai ∈ K;
i=1 T
c) dacă A1 , . . . , An , . . . ∈ K atunci Ai ∈ K;
d) A, B ∈ K atunci A − B ∈ K.
Axiomele câmpului de probabilitate:
a) Pr(∅) = 0, Pr(Ω) = 1;
S
P b) dacă A1 , . . . , An , . . . ∈ K cu Ai ∩ Aj = ∅ pentri i 6= j atunci Pr( Ai ) =
Pr(Ai ).
PROBABILITATEA UNUI EVENIMENT 127

Proprietăţile câmpului de probabilitate:


S
n P
n
a) dacă A1 , . . . , An , ∈ K cu Ai ∩Aj = ∅ pentri i 6= j atunci Pr( Ai ) = Pr(Ai ).
i=1 i=1

Exemplul 8.1.1. Experienţa aruncării unui zar.

aria(A)
Exemplul 8.1.2. Probabilităţi geometrice. (Ω, K, P), A ∈ K, Pr(A) = .
aria(Ω)

Teorema 8.1.1. (G. Boole, 1815-1864). Fie (Ω, K, P), Ai ∈ K, i = 1, . . . n


T
n P
n
atunci Pr( Ai ) ≥ Pr(Ai ) − (n − 1).
i=1 i=1

Teorema 8.1.2. (H. Poincare, 1854-1912). Fie (Ω, K, P), Ai ∈ K, i = 1, . . . n


S
n P
n P
atunci Pr( Ai ) = (−1)k−1 Pr(AI ).
1=1 k=1 I⊂1,...,n,|I|=k

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)).

Definiţia se poate extinde la o mulţime arbitrară de evenimente. De remarcat


faptul că dacă evenimenetele sunt mutual independenet atunci ele nu sunt ı̂n mod
obligatoriu independente, aşa cum se vede din exemplul următor.

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.

Definiţia 8.1.3. Fie (Ω, K, P) un câmp de probabilitate şi A, B ∈ K, Pr(B) 6= 0


definim probabilitatea lui A condiţionată de B ca fiind:
T
Pr(A B)
Pr(A|B) = PB (A) = .
Pr(B)

Observaţia 8.1.1. Dacă A şi B sunt independente şi Pr(A) 6= 0, Pr(B) 6= 0


atunci acest lucru este echivalent cu Pr(A|B) = Pr(B) şi Pr(B|A) = Pr(A).
128 PROBABILITĂŢI ŞI ELEMENTE DE STATISTICĂ MATEMATICĂ

Definiţia 8.1.4. (Sistem complet de evenimente.)


Fie (Ω, K, P)) un câmp de probabilitate. A1 , . . . , An se numeşte sistem complet
de evenimente
T dacă:
a) Ai Aj = ∅, pentru i 6= j.
Pn
b) Ω = Ai .
i=1
c) Pr(Ai ) 6= 0 pentru orice i = 1, . . . , n.

Î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

8.2. Variabile aleatoare normal distribuite


8.2.1. Densitatea de probabilitate normală
(x − m)2
1 −
p(x) = √ e 2σ 2 , m ∈ R, σ > 0 se numeşte densitatea de probabilitate
σ 2π
normală, densitatea de probabilitate a lui Gauss (1777-1855).
O variabilă aleatoare care are densitatea p(x) se numeşte normal distribuită şi
are media m şi abaterea pătratică σ :

8.2.2. Funcţia Laplace-Gauss


Z x t2
1 −
Φ(x) = √ e 2 dt este funcţia Laplace (1749-1827)-Gauss.
2π −∞
Φ(x) are următoarele proprietăţi:
1
Φ(0) =
2
Φ(x) + Φ(−x) = 1, x ∈ R
Φ(x) ≈ 1, x ≥ 3
Φ(x) ≈ 0, x ≤ −3.
VARIABILE ALEATOARE NORMAL DISTRIBUITE 129

Figura 8.2: Graficul densităţii normale.

Figura 8.3: Graficul funcţiei Laplace-Gauss.

8.2.3. O formulă analitică pentru calculul probabilităţii


Enunţăm o teoremă de mare importanţă.

Teorema 8.2.1. a) Dacă f este o variabilă aleatoare cu densitatea de probabil-


Z β
itate p(x), atunci Pr(α ≤ f ≤ β) = p(x)dx.
α
b) Dacă f este o variabilă aleatoare normal distribuită, adică p(x) este densitatea
130 PROBABILITĂŢI ŞI ELEMENTE DE STATISTICĂ MATEMATICĂ

β−m α−m
normală, atunci: Pr(α ≤ f ≤ β) = Φ( ) − Φ( ).
σ σ

8.2.4. Inegalitatea lui Cebı̂şev (1821-1894)

Dacă f este o variabilă aleatoare cu media m şi media pătratică σ, atunci: Pr(|f −
σ2
m| ≥ ²) ≤ 2 , ² > 0.
²

8.2.5. Teorema celor 3σ

a) Dacă f este o variabilă aleatoare cu media m şi abaterea pătratică σ, atunci


8
Pr(|f − m| ≤ 3σ) ≥ .
9
b) Dacă f este o variabilă aleaoare normal distribuită, atunci Pr(|f − m| ≤ 3σ) ≈
1.

8.3. Legea numerelor mari


p
Fie (Ω, K, P ) un câmp de probabilitate şi (fn ), f variabile aleatoare. fn → f dacă
şi numai dacă pentru orice ² > 0, limn→∞ Pr(|fn − f | ≥ ²) = 0.

Teorema 8.3.1. Fie (Ω, K, P ) un câmp de probabilitate, A ∈ K, şi p = Pr(A).


Fie (fn ) şirul frecvenţelor absolute şi (νn ) şirul frecvenţelor ataşate unor experimente
succesive. Fie (f n ) şirul variabilelor aleatoare al frecvenţelor absolute şi (ν n ) şirul
variabilelor aleatoare al frecvenţelor relative ale apari¸tiei evenimentului A. Atunci:
a) νn → p ı̂n ”imensa majoritate” a cazurilor.
µ ¶
p p
b) ν n → p = .
1

µ ¶
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

8.4. Teorema limită centrală


Sunt multe variante ı̂n care se prezintă acest important rezultat, care se mai
numeşte Teorema fundamentală a statisticii.

8.4.1. Forma Leapunov (1857-1918) a Teoremei Limită Centrală

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

Observaţia 8.4.1. Comparând teorema de mai sus cu formula de la punctul


8.2.3 se poate enunţa următorul rezultat, numit Miracolul Gauss-Lapace:
Dacă f1 , . . . fn , . . . sunt variabile aleatoare independente, din aceeiaşi ”lume”,
atunci pentru n ”mare”, F = f1 + . . . fn se comportă ca o variabilă aleatoare normal

distribuită cu media M = n · m şi abaterea medie pătratică σ · n.

8.4.2. Forma Moivre (1667-1754)-Laplace a Teoremei Limită Cen-


trală

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Ă

8.5. Elemente de teoria estimaţiei

8.5.1. Estimatori punctuali ai mediei şi dispersiei


Fie Ω, K, P un spaţiu de probabilitate, f o variabilă aleatoare care va defini o
populaţie statistică. p
Valorile m = E(f ) şi σ = (E((E(X) − X)2 )) sunt necunoscute şi ne propunem
să le estimăm.
În acest sens fie {f1 , . . . , fn } un sondaj (selecţie) despre care presupunem:
1) fi variabile aleatoare independente;
2) fi sunt din lumea lui f , adică au aceiaşi distribuţie ca f .
Fie {x1 , . . . , xn } o realizare a sondajului.
Atunci media de selecţie x̄ este:

x1 + . . . + xn
x̄ = ,
n

şi dispersia de selecţie s2 este:

(x1 − x̄)2 + . . . + (xn − x̄)2


s2 = .
n−1

Media de selecţie m şi dispersia de selecţie s2 sunt estimatori nedeplasaţi ai lui


m şi σ 2 : E(x̄) = m respectiv E(s2 ) = σ 2 .

8.5.2. Estimarea parametrilor

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

8.6. Intervale de ı̂ncredere


Se numeşte interval de ı̂ncredere cu nivelul de semnificaţie α al caracteristicii
(medie, dispersie, proporţie etc.) c al unei variabile aleatoare X un interval [a; b] cu
proprietatea:

Pr(c ∈ [a; b]) ≥ 1 − α,

valoarea 1 − α se numeşte nivel de ı̂ncredere.


Fie {x1 , . . . xn } realizările a n variabile aleatoare independente identic repartizate
ca şi X (din lumea lui X). Atunci:
x1 + . . . + xn
x̄ =
n
este un estimator nedeplasat pentru media m a variabilei aleatoare X şi:
(x1 − x̄)2 + . . . (xn − x̄)2
s2 =
n−1
este un estimator nedeplasat pentru dispersia σ 2 a variabilei aleatoare X.

1. Intervalul de ı̂ncredere pentru media m a unei populaţii normale, cu σ cunos-


cut. Intervalul de ı̂ncredere pentru media m a unei populaţii nu neapărat
normale dar n ≥ 30, cu σ cunoscut.
σ σ
x̄ − z1− α2 √ < m < x̄ + z1− α2 √
n n
nivelul de ı̂ncredere este 1 − α, iar z1− α2 fiind determinat din relaţia:

α
Φ(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Ă

3. Intervalul de ı̂ncredere pentru proporţia p a unei populaţii repartizate binomial


este:
r r
p̄q̄ p̄q̄
p̄ − z1− α2 < p < p̄ + z1− α2
n n
nivelul de ı̂ncredere este 1 − α, iar z1− α2 fiind determinat din relaţia:

α
Φ(z1− α2 ) = Pr(z ≤ z1− α2 ) = 1 − ,
2
unde np ≥ 5, nq ≥ 5, p + q = 1.

4. Intervalul de ı̂ncredere pentru dispersia σ 2 a unei populaţii normale este:

(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.

8.7. Teste statistice


Fie două ipoteze statistice H0 (ipoteza nulă) şi HA (ipoteza alternativă) asupra
caracteristicii unei variabile aleatoare. Definim:
1 − α = Pr(accept H0 |H0 adevărată)− probabilitatea apariţiei unui rezultat neg-
ativ;
α = Pr(resping H0 |H0 adevărată)− probabilitatea apariţiei unui rezultat fals
pozitiv;
1 − β = Pr(resping H0 |H0 falsă)− probabilitatea apariţiei unui rezultat pozitiv;
β = Pr(accept H0 |H0 falsă)− probabilitatea apariţiei unui rezultat fals negativ.
Decizia referitoare la apartenenţa la una din cele două ipoteze se face pe baza
unei funcţii de test f calculată dintr-un eşantion X1 , ..., Xn de volum n. Regiunea
de acceptare a ipotezei alternative, deci de respingere a ipotezei nule se numeşte
regiune critică. Ideal este ca ambele tipuri de erori să fie minime. Acest lucru nu
este posibil pentru testele bazate pe intervale de ı̂ncredere pentru care valoarea α
este fixată.
TESTE STATISTICE 135

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 α.

Observaţia 8.7.1. Valoarea P asociată unei statistici f (X1 , ..., Xn ) se obţine


din ecuaţia P = Pr(resping H0 | regiunea de respingere pentru H0 dată de valoarea
f ).

Figura 8.4: Interpretarea testelor statistice.

1. Pentru ipoteza nulă H0 : m = m0 de verificare a mediei m a unei populaţii


nu neapărat normale, cu σ cunoscut, pentru care volumul sondajului n ≥ 30,
versus ipoteza alternativă HA : m ≥ m0 , regiunea critică este dată de:

n(x̄ − m0 )
z= ≥ z1−α .
σ
2. Pentru ipoteza nulă H0 : m = m0 de verificare a mediei m a unei populaţii
nu neapărat normale, cu σ cunoscut, pentru care volumul sondajului n ≥ 30,
versus ipoteza alternativă HA : m ≤ m0 , regiunea critică este dată de:
136 PROBABILITĂŢI ŞI ELEMENTE DE STATISTICĂ MATEMATICĂ


n(x̄ − m0 )
z= ≤ zα .
σ

3. Pentru ipoteza nulă H0 : m = m0 de verificare a mediei m a unei populaţii


nu neapărat normale, cu σ cunoscut, pentru care volumul sondajului n ≥ 30,
versus ipoteza alternativă HA : m 6= m0 , regiunea critică este dată de:
√ √
n(x̄ − m0 ) n(x̄ − m0 )
z= ≤ z α2 sau z = ≥ z1− α2 .
σ σ

4. Pentru ipoteza nulă H0 : m = m0 de verificare a mediei m a unei populaţii


normale, cu σ necunoscut, pentru care volumul sondajului n ≤ 30, versus
ipoteza alternativă HA : m 6= m0 , regiunea critică este dată de:
√ √
n(x̄ − m0 ) n(x̄ − m0 )
t= ≤ t 2 ;n−1 sau t =
α ≥ t1− α2 ;n−1 .
s s

5. Pentru ipoteza nulă H0 : m1 = m2 de verificare a egalităţilor mediilor m1 şi m2


unor populaţii nu neapărat normale, cu σ1 respectiv σ2 cunoscute, pentru care
volumul sondajului n ≥ 30, m ≥ 30, versus ipoteza alternativă HA : m1 6= m2 ,
regiunea critică este dată de:

x̄ − ȳ x̄ − ȳ
z=q ≤ z α2 sau z = q ≥ z1− α2 .
σ12 σ22 σ12 σ22
n + m n + m

6. Pentru ipoteza nulă H0 : σ 2 = σ02 de verificare a egalităţilor dispersiilor unei


populaţii normale versus ipoteza alternativă HA : σ 2 > σ02 , regiunea critică
este dată de:

(n − 1)s2
χ2 = ≥ χ21−α;n−1 .
σ02

7. Pentru ipoteza nulă H0 : σ 2 = σ02 de verificare a egalităţilor dispersiilor unei


populaţii normale versus ipoteza alternativă HA : σ 2 < σ02 , regiunea critică
este dată de:

(n − 1)s2
χ2 = ≤ χ2α;n−1 .
σ02
TESTE PENTRU EVALUARE 137

8. Pentru ipoteza nulă H0 : σ 2 = σ02 de verificare a egalităţilor dispersiilor unei


populaţii normale versus ipoteza alternativă HA : σ 2 6= σ02 , regiunea critică
este dată de:

(n − 1)s2
χ2 = ≤ χ2α ;n−1
σ02 2

sau

(n − 1)s2
χ2 = ≥ χ21− α ;n−1 .
σ02 2

8.8. Teste pentru evaluare


În cele ce urmează vom prezenta câteva teste ce au fost sau se pot propune la
un examen. Fiecare test are trei părţi. Partea 1 este partea teoretică, părţile 2 şi 3
conţin aplicaţii referitoare a legea numerelor mari şi teorema limită centrală.

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:

Figura 8.5: Densitatea de probabilitate.


p
Şirul de variabile aleatoare fn converge ı̂n probabilitate, la 0 (fn → 0)?
138 PROBABILITĂŢI ŞI ELEMENTE DE STATISTICĂ MATEMATICĂ

Exerciţiul 8.8.1.2. O reţea de traficanţi de droguri pun droguri ı̂n pacheţele


ı̂ntre 10g şi 50g. Distribuţia se apreciază că se face uniform. Pachetele se pun ı̂n bax-
uri, fiecare bax, având 1000 pacheţele. Baxul este respins la controlul vamal dacă are
mai mult de 32Kg. Folosind teorema limită centrală să se determine probabilitatea
ca baxul să treacă controlul vamal.

Exerciţiul 8.8.1.3. Se consideră ecuaţia ax2 + bx + 1 = 0, a 6= 0, a, b ∈ R,


−1 ≤ a ≤ 1, −2 ≤ b ≤ 2.
Se aleg la ı̂ntâmplare a, b ı̂n condiţiile de mai sus.
Se cere:
a) Să se determine p = Pr(A), probabilitatea ca ambele rădăcini să fie reale.
b) Să se determine n ∈ N astfel ı̂ncât Pr(|ν̄n − p| ≤ 0, 01) = 0, 7, unde ν̄n
este variabila aleatoare a frecvenţelor relative ale apariţiei evenimentului A, A fiind
evenimentul ca ambele rădăcini să fie reale.

8.8.2. Testul 2

Exerciţiul 8.8.2.1. a) Densitatea de probabilitate normală. Definiţie, pro-


prietăţi, graficul.
b) Dacă f este o variabilă aleatoare normal distribuită, cu m = 70, σ = 5, calculaţi
Pr(60 ≤ f ≤ 70).
c) Enunţaţi teorema limită centrală sub forma Moivre-Laplace.

Exerciţiul 8.8.2.2. Se auncă două zaruri. Notăm cu A evenimentul ca suma


zarurilor să fie 7.
a) Calculaţi Pr(A).
b) Determinaţi variabila aleatoare ce monitorizează ”apariţia” evenimentului A.
Determinaţi m şi σ.
c) Determinaţi n ∈ N, de câte ori trebuie făcută experienţa, astfel ı̂ncât Pr(|ν̄n −
p| ≤ 0, 01) = 0, 8, unde ν̄n este variabila aleatoare a frecvenţelor relative ale apariţiei
evenimentului A.

Exerciţiul 8.8.2.3. O bancă are 10000 clienţi. Se estimează că un client pe o


perioadă de o lună are următoarele opţiuni:
i) ı̂n 30% din cazuri face un ı̂mprumut de 100 euro;
ii) ı̂n 20% din cazuri nu face ı̂mprumut, nu face economii;
iii) ı̂n 20% din cazuri face economii de 100 euro;
iv) ı̂n 30% din cazuri face un ı̂mprumut de 200 euro.
Notăm cu S suma conturilor tuturor clienţilor. Determinaţi:
a) Pr(S ≤ 0), situaţia ı̂n care banca este ı̂n mare dificultate;
TESTE PENTRU EVALUARE 139

b) Pr(S ≥ 1000000), situaţia ı̂n care banca are mare profit;


c) Pr(500000 ≤ S ≤ 700000).

8.8.3. Testul 3

Exerciţiul 8.8.3.1. a) Φ(x), funcţia lui Laplace. Definiţie, proprietăţi, graficul.


Calculaţi Φ(1) + Φ(−2).
b) Enunţul legii numerelor mari sub forma lui Bernoulli.

Exerciţiul 8.8.3.2. Se alege la ı̂ntâmplare o pereche de numere (x, y), −1 ≤


x, y ≤ 1. Notăm cu A evenimentul ca x2 + y 2 ≤ 1.
a) Determinaţi p = Pr(A).
b) Se notează cu ν̄n şirul variabilelor aleatoare ale frecvenţelor relative ale apariţiei
evenimentului A. Determinaţi n astfel ı̂ncât Pr(|ν̄n − p| ≤ 0, 01) = 0, 8.

Exerciţiul 8.8.3.3. Se aruncă cu două zaruri şi se notează suma zarurilor cu s.


Se acordă −1 puncte dacă s ≤ 5.
Se acordă 0 puncte dacă s = 6 sau s = 7.
Se acordă 1 punct dacă s ≥ 8. P
Se face experienţa de 1000 ori şi se notează S = s.
Determinaţi Pr(100 ≤ S ≤ 150).

8.8.4. Testul 4

Exerciţiul 8.8.4.1. a) Inegalitatea lui Cebı̂şev.


1
b) Fie f o variabilă aleatoare care are densitatea de probabilitate p(x) = .
π(x2 + 1)
Determinaţi Pr(0 ≤ f ≤ 1).

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.

Exerciţiul 8.8.4.3. Se aruncă 1000 zaruri. Se notează cu S suma tuturor


zarurilor. Determinaţi n = Pr(3500 ≤ S ≤ 4000) şi m = Pr(4000 ≤ S ≤ 6000).
Care număr este mai mare, n sau m?
140 PROBABILITĂŢI ŞI ELEMENTE DE STATISTICĂ MATEMATICĂ

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?

Exerciţiul 8.8.5.2. Fie f1 , . . . , f1000 variabile aleatoare independente, definite


(Ω, K, P). Presupunem că variabilele aleatoare au aceiaşi densitate de probabilitate
p(x), a cărui grafic este reprezentat ı̂n figura 8.5.

Figura 8.6: Densitatea de probabilitate.

a) Determinaţi m şi σ, media şi abaterea medie pătratică a acestor variabile


aleatoare.
b) Notăm cu S = f1 + . . . f1000 . Determinaţi Pr(S ≤ 1350).

Observaţia 8.8.1. Problema de mai sus poate fi privită astfel: f1 , f2 , . . . f1000


sunt conturi ”independente” cu densitatea de probabilitatea p(x). Fiecare cont este
ı̂ntre −3 ≤ x ≤ 7 puncte sau ı̂ntre −300 RON şi 700 RON, distribuite după legea
p(x). Să se determine probabilitatea ca suma conturilor sa fie ı̂n situaţia S ≤ 1350
puncte sau S ≤ 135000 RON.

Exerciţiul 8.8.5.3. Fie (fn ) un şir de variabile aleatoare simple pe (Ω, K, P) a


à !
−1 0 1
căror repartiţie este: 1 2 1 .
1−
n n n
a) Calculaţi mn şi σn , mediile şi abaterile medii pătratice ale lui fn .
p
b) Decideţi dacă fn → 0.
TESTE PENTRU EVALUARE 141

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.

Figura 8.7: Densitatea de probabilitate.


p
Decideţi dacă fn → 0.
c) Aceiaşi ı̂ntrebare ca la punctul b) dacă pn are graficul din figura 8.7.

Figura 8.8: Densitatea de probabilitate.

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Ă

Exerciţiul 8.8.6.3. Probabilitatea de câştig la ruletă este 0, 45. Presupunem că


la fiecare joc câştigă sau pierde 1 euro. Câte jocuri trebuie jucate astfel ı̂ncât cu
probabilitatea de 0, 5 câştigul cazinoului să fie de cel puţin 1000 euro?

8.9. Câteva distribuţii importante


8.9.1. Repartiţii continue
Vom prezenta o serie de distribuţii continue precum şi principalele lor proprietăţi.

Repartiţia normală

Definiţia 8.9.1. (Repartiţia normală). Vom spune că variabila aleatoare X


urmează o repartiţie normală de parametrii µ şi σ 2 (vom nota acest lucru prin
X ∼ N (µ, σ 2 )) dacă are densitatea de repartiţie:

(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ă

Definiţia 8.9.2. (Repartiţia lognormală). Vom spune că variabila aleatoare


X(X > 0) urmează o repartiţie lognormală (vom nota acest lucru prin X ∼ LN (µ, σ 2 ))
dacă logaritmul ei are densitatea de repartiţie N (µ, σ 2 ).
CÂTEVA DISTRIBUŢII IMPORTANTE 143

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.4. Dacă variabila aleatoare X urmează o repartiţie lognormală


de parametrii µ şi σ 2 → 0 atunci repartiţia lognormală standardizată tinde către
repartiţia N (0, 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 )

unde β > 0 şi α1 , α2 ∈ R.

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.

Teorema 8.9.7. Dacă X ∼ Exp(λ) atunci

1
M (X) = ,
λ

1
D2 (X) =
λ2

şi
r!
M (X r ) = .
λr

Exerciţiul 8.9.1. Dacă X şi Y sunt variabile aleatoare independente repartizate


Exp(λ) atunci
X
∼ Exp(λ).
X +Y

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

Teorema 8.9.8. Dacă X ∼ γ(α1 , β) şi Y ∼ γ(α2 , β) sunt variabile aleatoare


independente atunci:
a) X + Y ∼ γ(α1 + α2 , β);
CÂTEVA DISTRIBUŢII IMPORTANTE 145

X
b) are densitatea de repartiţie:
Y
Γ(α1 + α2 ) α1 −1
h(x) = x (1 + x)−(α1 +α2 ) , x ≥ 0.
Γ(α1 )Γ(α2 )

Generalizând la n variabile aleatoare, obţinem repartiţia Dirichlet.

Teorema 8.9.9. Dacă Xi ∼ γ(αi , 1) sunt k + 1 variabile aleatoare independente


atunci repartiţia variabilelor aleatoare Y1 , . . . , Yk+1 date de:

 Y = Xj
j , j = 1, . . . , k
X1 + . . . + Xk+1
 Y = X + ... + X
k+1 1 k+1

are forma (repartiţia Dirichlet):


P
k+1 Q
k P
k
Γ( αi ) yiαi −1 (1 − yi )αk+1 −1
i=1 i=1 i=1
,
Q
k+1
Γ(αi )
i=1

unde 0 < yj şi y1 + . . . + yk < 1.


n
Un alt caz particular important al repartiţiei gama se obţine pentru α = cu
2
orice n ı̂ntreg pozitiv şi β = 2σ 2 . Repartiţia astfel obţinută se numeşte repartiţia
χ2 cu n grade de libertate.

Observaţia 8.9.1. Pentru n = 2 repartiţia χ2 devine repartiţia exponenţială.

Teorema 8.9.10. Dacă Xi ∼ N (0, σ 2 ) sunt n variabile independente atunci


variabila aleatoare:
Xn
Y = Xj2 ∼ χ2 (n).
i=1

Teorema 8.9.11. Dacă X ∼ χ2 (n), atunci asimptotic


X − nσ 2
√ ∼ N (0, 1).
σ 2 2n

De obicei, cunatilele repartiţiei χ2 (n) sunt tabelate până la n = 30, deoarce


pentru n > 30 este posibil să se folosească cunatilele repartiţiei N (0, 1).
146 PROBABILITĂŢI ŞI ELEMENTE DE STATISTICĂ MATEMATICĂ

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.

Definiţia 8.9.7. Repartiţia F (m, n) este obţinută ca o transformare a repartiţie


beta:
βX
Y = unde X ∼ Be(α, β)
α(1 − X)
m
cu α = 2 şi β = n2 . Distribuţia corespunzătoare variabilei Y ∼ F (m, n) este:
( ³ ´α
Γ( m+n ) α
Γ( m
2
)Γ( n y α−1 (1 + αβ y)−(α+β) , 0 < x < 1; α, β > 0
f (x) = 2 2
) β
0 ı̂n rest.

Teorema 8.9.12. Dacă X ∼ χ2 (m) şi Y ∼ χ2 (n) atunci:

X/m
F = ∼ Be(α, β).
Y /n

Definiţia 8.9.8. Repartiţia t(n) (t cu n grade de liberatate) este obţinută ca o


transformare a repartiţie F (1; n) şi anume:

t= X

iar densitatea de repartiţie corespunzătoare este:


(
Γ( n+1 ) x2 − n+1
√ 2 n (1 + n)
2 , −∞ < x < ∞; n = 1, 2, 3, . . .
f (x) = πnΓ( 2 )
0 ı̂n rest.

Teorema 8.9.13. Dacă X ∼ N (0, 1) şi Y ∼ χ2 (n) atunci

X
t = q ∼ t(n).
Y
n
CÂTEVA DISTRIBUŢII IMPORTANTE 147

Repartiţia Cauchy

Definiţia 8.9.9. Repartiţia Cauchy C(µ; θ) este definită de densitatea de repar-


tiţie:
µ 1
f (x) = , x ∈ R, µ > 0.
π µ2 + (x − θ)2

Observaţia 8.9.2. Repartiţia Cauchy este un exemplu de repartiţie care nu are


momente.

8.9.2. Distribuţii discrete


Vom prezenta principalele distribuţii discrete: Bernoulli, Binomială, Poisson,
hipergeometrică şi geometrică.

Distribuţia Bernoulli

Definiţia 8.9.10. Distribuţia Bernoulli de parametru p este dată de P (X =


1) = p şi P (X = 0) = 1 − p, cu p ∈ (0, 1).

Teorema 8.9.14. Dacă variabila X urmează o distribuţie Bernoulli de para-


metru p atunci media este M (X) = p iar dispersia D2 (X) = p(1 − p).

Distribuţia binomială

Definiţia 8.9.11. Distribuţia binomială Bi(n, p) de parametrii n şi p este dată


de Pr(X = i) = Cni pn−i (1 − p)i pentru i = 0, . . . , n.

Teorema 8.9.15. Dacă variabila X urmează o distribuţie binomială Bi(n, p)atunci


media este M (X) = np iar dispersia D2 (X) = np(1 − p).

Teorema 8.9.16. Dacă X1 , . . . , Xn sunt n variabile aleatoare independente repar-


Pn
tizate Bernoulli de parametru p atunci variabila Xi urmează o repartiţie bino-
i=1
mială Bi(n, p).

Observaţia 8.9.3. Distribuţia binomială Bi(n, p) de parametrii n şi p este mod-


elată de selecţia cu 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:
148 PROBABILITĂŢI ŞI ELEMENTE DE STATISTICĂ MATEMATICĂ

µ ¶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.

8.9.3. Calculul numeric al cuantilelor


Vom prezenta două metode numerice de calcul a cuantilei de ordinul α pentru
repartiţia N (0, 1), respectiv repartiţia χ2 (n).

Cuantila repartiţiei normale


Fără restrângerea generalităţii putem presupune că α ∈ [0, 0, 5]. Atunci, utilizând
tehnica dezvoltării ı̂n fracţii continue, vom obţine:
P
2
ai ω i r
i=0 1
uα = ω − , ω= ln ,
P
3 α2
bi ω i
i=0
CÂTEVA DISTRIBUŢII IMPORTANTE 149

unde constantele ai şi bi sunt:




 a0 = 2, 515517

 a1 = 0, 802853




 a2 = 0, 010328
b0 = 1


 b1 = 1, 432877




 b = 0, 189269
 2
b3 = 0, 001308.

Cuantilele repartiţiei chi-pătrat


Cuantila de ordinul α a repartiţiei χ2 (n), pentru n > 30, este dată de:
√ 2 2 1
hα = n + 2nuα + u2α − + O( √ ).
3 3 n
150 PROBABILITĂŢI ŞI ELEMENTE DE STATISTICĂ MATEMATICĂ
Partea II

CRIPTOLOGIE

151
Capitolul 9

SISTEMUL DE CIFRARE
CEZAR

9.1. Breviar teoretic


Algoritmul de cifrare al lui Cezar este un sistem de cifrare monoalfabetic pentru
care textul clar este construit din literele alfabetului latin A − Z şi cheia de cifrare
este reprezentată de un număr ı̂ntreg k ∈ {0, . . . , 25}.
În faza de preprocesare, delimitatorul de spaţiu este ignorat sau ı̂nlocuit cu car-
acterul cel mai puţin frecvent din limba ı̂n care este textul clar (ı̂n limba română
Q).
Fiecarei litere din textul sursă i se asociază ordinea lexicografică x. Pentru cifrare,
aceasta se ı̂nlocuieşte prin caracterul cod (x + k) mod 26. Pentru descifrare se uti-
lizează regula inversă: (x − k) mod 26.

9.2. Exerciţii rezolvate


Exerciţiul 9.2.1. Să se cifreze mesajul:
CRIPTOGRAFIE
algoritmul utilizat fiind cifrul lui Cezar cu cheia de cifrare k = 7.

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.

Exerciţiul 9.2.2. Să se decripteze mesajul:


JAJSN SHWDU YTQTL DXNQJ SHJNX LTQIJ SXXXX
algoritmul utilizat fiind cifrul lui Cezar. Indicaţi cheia de cifrare.

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
... .. .. .. .. .. .. .. .. ..

Se observă că sistemul presupune ı̂nlocuirea fiecărei litere cu litera corespunzătoare


ı̂n alfabetul rotit cu k poziţii.
Decriptând fiecare caracter ı̂n corespondentul său clar se obţine, pe rând:
- pentru k = 1 : IZIRM RGVCT XSPSK CWMPI RGIMW KSPHI
RWWWW
- pentru k = 2 : HYHQL QFUBS WRORJ BVLOH QFHLV JROGH
QVVVV
- pentru k = 3 : GXGPK PETAR VQNQI AUKNG PEGKU IQNFG
PUUUU
- pentru k = 4 : FWFOJ ODSZQ UPMPH ZTJMF ODFJT HPMEF
OTTTT
- pentru k = 5 : EVENI NCRYP TOLOG YSILE NCEIS GOLDE NSSSS
După o regrupare a literelor, pentru k = 5 se obţine: EVEN IN CRYPTOLOGY
SILENCE IS GOLDEN.

9.3. Exerciţii propuse


Exerciţiul 9.3.1. Scrieţi o aplicaţie care să implementeze următoarele funcţii:
- cifrarea unui text cu ajutorul algoritmului de cifrare Cezar;
EXERCIŢII PROPUSE 155

- descifrarea unui text cifrat cu algoritmul lui Cezar;


- decriptarea unui text, despre care se ştie că a fost cifrat prin metoda Cezar,
prin generarea tuturor soluţiilor posibile.
Verificaţi rezultatul pe datele de intrare din exerciţiile următoare.

Exerciţiul 9.3.2. Să se cifreze mesajul:


MIRACLE
algoritmul utilizat fiind cifrul lui Cezar, cheia de cifrare k = 3.

Răspuns: PLUDFOH.

Exerciţiul 9.3.3. Să se cifreze mesajul:


CALCULATOR
algoritmul utilizat fiind cifrul lui Cezar, cheia de cifrare k = 11.

Răspuns: NLWNF WLEZC.

Exerciţiul 9.3.4. Să se cifreze mesajul:


ELECTRONIC MAIL
algoritmul utilizat fiind cifrul lui Cezar, cheia de cifrare k = 5.

Răspuns: JQJHY WTSNH RFNQ.

Exerciţiul 9.3.5. Să se cifreze mesajul:


DIGITAL SIGNATURE
algoritmul utilizat fiind cifrul lui Cezar, cheia de cifrare k = 2.

Răspuns: FKIKV CNUKI PCVWT G.

Exerciţiul 9.3.6. Să se decripteze mesajul:


IGQTI GYCUJ KPIVQ PXXXX
algoritmul utilizat fiind cifrul lui Cezar. Indicaţi cheia de cifrare.

Răspuns: GEORGE WASHINGTON, k = 2.

Exerciţiul 9.3.7. Să se decripteze mesajul:


UIPNB TKFGG FSTPO
algoritmul utilizat fiind cifrul lui Cezar. Indicaţi cheia de cifrare.

Răspuns: THOMAS JEFFERSON, k = 1.


156 SISTEMUL DE CIFRARE CEZAR

Exerciţiul 9.3.8. Să se decripteze mesajul:


AREYY KYYOS VYUTM XGTZ
algoritmul utilizat fiind cifrul lui Cezar. Indicaţi cheia de cifrare.

Răspuns: ULYSSES SIMPSON GRANT, k = 6.

Exerciţiul 9.3.9. Să se decripteze mesajul:


CDTC JCON KPEQ NP
algoritmul utilizat fiind cifrul lui Cezar. Indicaţi cheia de cifrare.

Răspuns: ABRAHAM LINCOLN, k = 2.

Exerciţiul 9.3.10. Să se decripteze mesajul:


ECFDEPO ALCEJ
algoritmul utilizat fiind cifrul lui Cezar. Indicaţi cheia de cifrare.

Răspuns: TRUSTED PARTY, k = 11.

Exerciţiul 9.3.11. Să se cifreze mesajul:


EXAMEN CRIPTOGRAFIE
algoritmul utilizat fiind cifrul lui Cezar, cheia de cifrare k = 3.

Răspuns: HADPH QFULS WRJUD ILH.

Exerciţiul 9.3.12. Să se decripteze mesajul:


HADPH QFULS WRJUD ILH
algoritmul utilizat fiind cifrul lui Cezar. Indicaţi cheia de cifrare.

Răspuns: EXAMEN CRIPTOGRAFIE, k = 3.

Exerciţiul 9.3.13. Să se cifreze mesajul:


KANSAS CITY
algoritmul utilizat fiind cifrul lui Cezar, cheia de cifrare k = 4.

Răspuns: OERWE WGMXC.

Exerciţiul 9.3.14. Să se decripteze mesajul:


OERWE WGMXC
algoritmul utilizat fiind cifrul lui Cezar. Indicaţi cheia de cifrare.

Răspuns: KANSAS CITY, k = 4.


Capitolul 10

METODA SUBSTITUŢIEI

10.1. Breviar teoretic


Operaţia de cifrare se bazează pe o corespondenţă biunivocă ı̂ntre alfabetul clar
şi alfabetul cifrat. Se presupune că alfabetul clar este format din cele 26 de litere
(ı̂n limba română fără diacritice) plus delimitatorul de cuvânt spaţiul. Alfabetul
cifrat poate fi format din aceeleaşi caractere sau doar din cele 26 de litere (ale limbii
române) caz ı̂n care spaţiul se va ı̂nlocui cu cea mai puţin frecventă literă (Q) sau
se va ignora pur şi simplu. În continuare, delimitatorul de cuvânt este ı̂nlocuit cu
litera Q.
Corespondenţa dintre cele două alfabete poate fi:
- aleatoare;
- pseudoaleatoare: plecând de la o parolă se construieşte alfabetul cifrat.
Întrucât ı̂n cazul corespondenţei aleatoare lucrurile sunt cât se poate de clare,
vom prezenta pe scurt o metodă de construcţie a corespondenţei ı̂n cel de-al doilea
caz. Pornind de la o parolă, alfabetul cifrat este construit după următorul algoritm:
- se scriu, o singură dată, ı̂n ordinea apariţiei, literele din parolă;
- se scriu literele alfabetului care nu apar ı̂n parolă.
Corespondenţa ı̂ntre cele două alfabete se realizează după regula alfabet ı̂n alfabet
după o permutare fixă σ (aceasta poate fi chiar permutarea identică iar la descifrare
se aplică aceelaşi procedeu dar cu inversa permutării σ).
În funcţie de forma permutării substituţia se numeşte:
- directă (alfabetul cifrat are acelaşi sens lexicografic cu alfabetul clar, sunt ı̂n
total 26 astfel de substituţii). Exemplu de substituţie directă:

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.

Definiţia 10.1.1. Un cifru de substituţie liniar de la Zm la Zm (m fiind


numărul de caractere al alfabetului sursă) poate fi descris prin funcţia f : Zm → Zm
definită prin f (x) = αx + β cu gcd(α, m) = 1, funcţia de descifrare fiind f −1 (x) =
α−1 (x − β). Cheia de cifrare o formează numerele α şi β.

Observaţia 10.1.1. Cifrul de substituţie are proprietatea de confuzie (ascun-


derea legăturii dintre textul clar şi textul cifrat).
EXERCIŢII REZOLVATE 159

10.2. Exerciţii rezolvate


Exerciţiul 10.2.1. Să se construiască alfabetul de cifrare cu ajutorul parolei

T EST ARESIST EM

iar apoi să se cifreze mesajul IN CRIPTOGRAFIE NICI O REGULA NU ESTE


ABSOLUTA. Permutarea care realizează corespondenţa este:

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ă:

IN QCRIP T OGRAF IEQN ICIQOQREGU LAQN U QEST EQABSOLU T A.

Mesajul cifrat va fi:


OHDXC OFMGQ CZUOV DHOXO DGDCV QIKZD HIDVB MVDZY BGKIM
Z.
160 METODA SUBSTITUŢIEI

Exerciţiul 10.2.2. Să se descifreze mesajul:


DOJMD OVPGF OMATN BXXXX
algoritmul utilizat fiind o substituţie simplă determinată de cuvântul cheie PASS-
WORD.

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

Mesajul clar devine (dupa o regrupare a literelor) GEORGE WALKER BUSH.


Se observă că de această dată nu s-a mai folosit Q pe post de delimitator de cuvânt.

10.3. Exerciţii propuse


Exerciţiul 10.3.1. Dezvoltaţi o aplicaţie care să simuleze execuţia funcţiilor de
cifrare/descifrare corespunzătoare metodei substituţiei.

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.

Exerciţiul 10.3.4. Să se cifreze mesajul:


WEB DESIGN
algoritmul utilizat fiind o substituţie simplă determinată de cuvântul cheie BROWSER.

Răspuns: VSRWS PDAJ.

Exerciţiul 10.3.5. Să se cifreze mesajul:


PUBLIC KEY
algoritmul utilizat fiind o substituţie simplă determinată de cuvântul cheie
ASYMMETRIC.

Răspuns: KQSFC YDEX.


EXERCIŢII PROPUSE 161

Exerciţiul 10.3.6. Să se descifreze mesajul:


ONCJB DFJPT DCJKN KKQTV TDSXXX
algoritmul utilizat fiind o substituţie simplă determinată de cuvântul cheie CRIP-
TOGRAFIE.

Răspuns: FRANKLIN DELANO ROOSEVELT.

Exerciţiul 10.3.7. Să se descifreze mesajul:


EKBJO DSZAT NCGPF TJJTP YXXXX
algoritmul utilizat fiind o substituţie simplă determinată de cuvântul cheie CRIPTO.

Răspuns: JOHN FITZGERALD KENNEDY.

Exerciţiul 10.3.8. Demonstraţi că metoda de cifrare prin substituţie este un


sistem ı̂nchis.

Exerciţiul 10.3.9. Să se cifreze mesajul:


PRIVATE KEY
algoritmul utilizat fiind o substituţie simplă determinată de cuvântul cheie
BUCURESTI.

Răspuns: LNAVB PEFEY.

Exerciţiul 10.3.10. Să se descifreze mesajul:


LNAVB PEFEY
algoritmul utilizat fiind o substituţie simplă determinată de cuvântul cheie BU-
CURESTI.

Răspuns: PRIVATE KEY.

Exerciţiul 10.3.11. Să se cifreze mesajul:


ASSYMETRIC ENCRYPTION
algoritmul utilizat fiind o substituţie simplă determinată de cuvântul cheie
BRASOV.

Exerciţiul 10.3.12. Să se descifreze mesajul:


BPPYI OQNEA OJANY LQEKJ
algoritmul utilizat fiind o substituţie simplă determinată de cuvântul cheie BRASOV.

Răspuns: ASSYMETRIC ENCRYPTION.


162 METODA SUBSTITUŢIEI
Capitolul 11

SISTEMUL DE CIFRARE
PLAYFAIR

11.1. Breviar teoretic


Sistemul Playfair, propus ı̂n anul 1854 de Charles Wheatstone dar promovat
pentru utilizare de Lordul Playfair, este unul dintre cele mai cunoscute sisteme de
cifrare digrafice (transformă un grup de 2 litere ı̂ntr-un grup de alte două litere).
Acest sistem de cifrare este foarte simplu de folosit şi mult mai sigur decât sistemele
de substituţie monoalfabetice.
Descriem ı̂n continuare modul de utilizare ı̂n cazul alfabetului latin compus din
26 litere. Literele alfabetului A − Z sunt trecute ı̂ntr-un careu de 5 × 5 (litera I fiind
asimilată literei J). Textul clar este preprocesat astfel ı̂ncât acesta să fie compatibil
cu matricea de cifrare: delimitatorul de cuvânt este ignorat sau este ı̂nlocuit cu cea
mai puţin frecventă literă, litera I este asimilată cu litera J, şi dacă este cazul, se
adaugă o literă la text pentru a avea un număr par de digrame.
Regula de cifrare este următoarea:
i) Dacă digrama care se doreşte cifrată nu are literele pe aceeaşi linie sau coloană,
atunci regula de cifrare este regula dreptunghiului, traseul fiind pe verticală de la cea
de-a doua literă a digramei către prima literă. Sau, altfel spus, prima litera a perechii
cifrate este aceea care se gaseste pe aceeasi linie cu prima litera a perechii ı̂n clar.
ii) Dacă digrama ce se doreşte cifrată are literele pe aceeaşi linie, atunci se aplică
regula: cifrează la dreapta, descifrează la stânga.
iii) Dacă digrama ce se doreşte cifrată are literele pe aceeiaşi coloană, atunci se
aplică regula: cifrează ı̂n jos, descifrează ı̂n sus.

Observaţia 11.1.1. Dacă o digramă apare ı̂n textul clar ı̂n ordine inversă atunci

163
164 SISTEMUL DE CIFRARE PLAYFAIR

acelaşi lucru se va ı̂ntâmpla şi ı̂n textul cifrat.

Observaţia 11.1.2. Algoritmul Playfair nu are regulă pentru cifrarea literelor


duble: digramele ce conţin două litere identice sunt sparte prin introducerea artifi-
cială a unei alte litere.

Observaţia 11.1.3. Algoritmul Playfair apare ca o extindere, ı̂n sensul reducerii


numărului de tabele rectangulare folosite (de la două la unul), al cifrului cu 2 tabele.

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.

11.2. Exerciţii rezolvate


Exerciţiul 11.2.1. Să se construiască matricea de cifrare Playfair cu ajutorul
parolei

CRIP T OGRAF IE

iar apoi să se cifreze mesajul SI IN CRIPTOGRAFIE TACEREA ESTE AUR.

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

Mesajul este preprocesat, prin introducerea literei Q ca delimitator de cuvânt şi


la finalul mesajului (pentru ca acesta să aibă lungime pară):

SIQIN QCRIP T OGRAF IEQT ACEREAQEST EQAU RQ.

Exemplificăm pentru fiecare caz câte o digramă:

• SI - conform regulii de cifrare se formează dreptunghiul cu colţurile I şi S


parcurs ı̂n sensul IQSP. Textul cifrat ı̂l constituie digrama formată din colţurile
care nu apar ı̂n textul clar, luate conform ordinii de parcurgere: QP.
EXERCIŢII PROPUSE 165

• 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).

• NQ - ı̂ntrucât literele sunt situate pe aceeaşi linie se aplică regula cifrează la


dreapta, descifrează la stânga, obţinându-se digrama QS(Q este in dreapta lui
N şi S este ı̂n dreapta lui Q).

În continuare, respectând regulile de cifrare Playfair mesajul cifrat devine:


QPXAQ SRIPT CEDGF ETAUI OIGTO FUAUP AUEQI NXXXX.

Exerciţiul 11.2.2. Să se descifreze mesajul:


UFRIL ERGPC RQAW
Algoritmul utilizat este cifrul lui Playfair, parola utilizată fiind CRIPTOGRAFIE.

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ă:

• UF - conform regulii de descifrare, se formează dreptunghiul cu colţurile U şi


F. Textul clar ı̂l constituie celelalte 2 colţuri, primul caracter al textului clar
fiind cel care se găseşte pe aceeaşi linie cu primul caracter ı̂n clar din digramă.
Se obţine SE.

• RI - ı̂ntrucât literele sunt situate pe aceeaşi linie se aplică regula cifrează la


dreapta, descifrează la stânga, obţinându-se digrama CR(R este in stânga lui
R şi R este ı̂n stânga lui I).

• 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.

11.3. Exerciţii propuse


Exerciţiul 11.3.1. Scrieţi o aplicaţie care să implementeze următoarele funcţii:
- cifrarea unui text cu ajutorul algoritmului Playfair;
- descifrarea unui text cifrat cu algoritmul Playfair;
Verificaţi rezultatul pe datele de intrare din exerciţiile următoare.
166 SISTEMUL DE CIFRARE PLAYFAIR

Exerciţiul 11.3.2. Să se cifreze mesajul:


SECURITY IS CHANGING FIELD
Algoritmul utilizat este cifrul lui Playfair, parola utilizată fiind CHANNEL.

Răspuns: UAEQQ KYNMQ HANEL PEFLO CGMA.

Exerciţiul 11.3.3. Să se cifreze mesajul:


AUTONOMOUS ATTACK AGENTS
Algoritmul utilizat este cifrul lui Playfair, parola utilizată fiind MALICIOUS.

Răspuns: UFNDV EOESB CPZQL MFCHF PNGL.

Exerciţiul 11.3.4. Să se cifreze mesajul:


VALUABLE SOURCE OF REFERENCE
Algoritmul utilizat este cifrul lui Playfair, parola utilizată fiind INSTITUTE.

Răspuns: WERDB CFDNP DZDAM GMDMF MDTABV.

Exerciţiul 11.3.5. Să se cifreze mesajul:


THE CIRCLE
Algoritmul utilizat este cifrul lui Playfair, parola utilizată fiind ALBUM.

Răspuns: POFDKQDAKB.

Exerciţiul 11.3.6. Să se descifreze mesajul:


KDDPM RUBVR PTSFU HPEBV
Algoritmul utilizat este cifrul lui Playfair, parola utilizată fiind PASSWORD.

Răspuns: GERALD RUDOLPH FORD.

Exerciţiul 11.3.7. Să se descifreze mesajul:


KDPEK DOSTF RDRXB NBBBB
Algoritmul utilizat este cifrul lui Playfair, parola utilizată fiind PASSWORD.

Răspuns: GEORGE WALKER BUSH.

Exerciţiul 11.3.8. Să se descifreze mesajul:


KDPEK DKBDC RDQOP MTKDC XPNS
Algoritmul utilizat este cifrul lui Playfair, parola utilizată fiind PASSWORD.
EXERCIŢII PROPUSE 167

Răspuns: GEORGE HERBERT WALKER BUSH.

Exerciţiul 11.3.9. Să se descifreze mesajul:


GBQY YAAO RNBM
Algoritmul utilizat este cifrul lui Playfair, parola utilizată fiind TEST.

Răspuns: HARRY TRUMAN.

Exerciţiul 11.3.10. Să se descifreze mesajul:


PIGOY CLETY AEYLQ VSFWN
Algoritmul utilizat este cifrul lui Playfair, parola utilizată fiind CRYPTOOL.

Răspuns: THE ART OF PROGRAMMING.

Exerciţiul 11.3.11. Să se cifreze mesajul:


SINAIA
Algoritmul utilizat este cifrul lui Playfair, parola utilizată fiind SECRET KEY.

Răspuns: RFOYHB.

Exerciţiul 11.3.12. Să se descifreze mesajul:


RFOYHB
Algoritmul utilizat este cifrul lui Playfair, parola utilizată fiind SECRET KEY.

Răspuns: SINAIA.

Exerciţiul 11.3.13. Să se cifreze mesajul:


PREDEAL
Algoritmul utilizat este cifrul lui Playfair, parola utilizată fiind PASSWORD.

Răspuns: RFRBD ONU.

Exerciţiul 11.3.14. Să se descifreze mesajul:


RFRBD ONU
Algoritmul utilizat este cifrul lui Playfair, parola utilizată fiind PASSWORD.

Răspuns: PREDEAL.
168 SISTEMUL DE CIFRARE PLAYFAIR
Capitolul 12

SISTEMUL DE CIFRARE
HILL

12.1. Breviar teoretic


Sistemul de cifrare Hill este o metodă de substituţie poligrafică bazată pe calcule
efectuate ı̂n algebra mod p.
În faza de preprocesare delimitatorul de spaţiu este ignorat sau ı̂nlocuit cu car-
acterul cel mai puţin frecvent din limba ı̂n care este textul clar (ı̂n limba română
Q).
Algoritmul procesează un bloc de date M de n caractere (litere), cheia de cifrare
fiind reprezentată de o matrice K de dimensiune n × n, inversabilă mod p.
Există două subclase ale algoritmului Hill pentru care regulile de cifrare diferă
prin ordinea ı̂n care se efectuează ı̂nmulţirile: o prima subclasa are ca regulă de
cifrare operaţia de ı̂nmulţire C = MK cu descifrarea M = CK−1 iar a doua subclasa
foloseşte ca regulă de cifrare ı̂nmulţirea C = KM având descifrarea corespunzătoare
M = K−1 C.

Observaţia 12.1.1. Dacă matricea K este simetrică (matricea K şi transpusa


ei sunt egale) atunci regulile de cifrare pentru cele două subclase sunt echivalente.

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

12.2. Exerciţii rezolvate


Exerciţiul 12.2.1. Să se cifreze mesajul:
BLAZE OF GLORY.
Algoritmul utilizat este cifrul lui Hill (2 × 2), cheia de cifrare fiind matricea:
µ ¶
J B
.
V I

Rezolvare: Prin ı̂nlocuirea literelor din cheie cu poziţiile corespunzătoare din


alfabet (A - 0, B - 1, etc.) se obţine:
µ ¶
9 1
K= .
21 8

Textul clar se sparge ı̂n blocuri de 2 caractere, care se cifrează pe rând. De


exemplu, BL corespunde matricii
¡ ¢
M= 1 11 .

Digrama se cifrează ı̂n:


µ ¶
¡ ¢ 9 1 ¡ ¢ ¡ ¢
C= 1 11 mod 26 = 6 11 = G L .
21 8

Deci, BL se cifrează ı̂n GL. Se continuă ı̂n mod analog. În final se obţine:
GLFSS MPBDT HB.

Exerciţiul 12.2.2. Să se descifreze mesajul:


JESHB JJAZM TANCF VBJXX.
Algoritmul utilizat este cifrul lui Hill (2 × 2), cheia de cifrare fiind matricea:
µ ¶
H U
.
D F

Rezolvare: Prin ı̂nlocuirea literelor din cheie cu poziţiile corespunzătoare din


alfabet (A - 0, B - 1, etc.) se obţine:
µ ¶
7 20
K= .
3 5

Se determină inversa matricei K mod 26 :


EXERCIŢII PROPUSE 171

K−1 = det(K)−1 K∗ mod 26, unde

det(K)−1 mod 26 = (7 · 5 − 3 · 20)−1 mod 26 = (−25)−1 mod 26 = 1


şi
µ ¶ µ ¶
5 −20 5 6
K∗ = mod 26 = .
−3 7 23 7
S-a obţinut:
µ ¶
−1 5 6
K = .
23 7
Pentru descifrarea perechii JE, se determină matricea linie care conţine valorile
corespunzătoare din alfabet:
¡ ¢ ¡ ¢
C= J E = 9 4 .
Prin ı̂nmulţire cu cheia de descifrare se obţine:
µ ¶
¡ ¢ 5 6 ¡ ¢ ¡ ¢
M= 9 4 mod 26 = 7 4 = H E .
23 7
Deci, JE se descifrează ı̂n HE.
Se procedează ı̂n mod analog pentru toate perechile de câte 2 caractere cifrate:
SH se descifrează ı̂n RB, BJ ı̂n ER, etc.
În final, după efectuarea tuturor calculelor şi regruparea literelor, se obţine: HER-
BERT CLARK HOOVER.

12.3. Exerciţii propuse


Exerciţiul 12.3.1. Scrieţi o aplicaţie care să implementeze funcţiile de cifrare
şi descifrare, specifice algoritmului Hill cu p = 26.
Verificaţi rezultatul pe datele de intrare din exerciţiile următoare.

Exerciţiul 12.3.2. Să se cifreze mesajul:


COMPLETE AND PROPER PACKAGE.
Algoritmul utilizat este cifrul lui Hill, cheia de cifrare fiind matricea:
µ ¶
N T
.
C R
172 SISTEMUL DE CIFRARE HILL

Răspuns: GIZTL MLCNN MBTML UMDMI AUYC.

Exerciţiul 12.3.3. Să se cifreze mesajul:


ESOTERIC TOPIC OF RESEARCH.
Algoritmul utilizat este cifrul lui Hill, cheia de cifrare fiind matricea:
µ ¶
B Y
.
G P

Răspuns: ICYXC NUOZQ LMIYD LICES DWHM.

Exerciţiul 12.3.4. Să se cifreze mesajul:


BENJAMIN HARRISON.
Algoritmul utilizat este cifrul lui Hill (3 × 3), cheia de cifrare fiind matricea:
 
A B C
 B C A .
C A B

Răpuns: EJPYJ EBIXZ IRUSE ANA.

Exerciţiul 12.3.5. Să se descifreze mesajul:


ZKNAW NIOZO BRXSW QNNXX.
Algoritmul utilizat este cifrul lui Hill (2 × 2), cheia de cifrare fiind matricea:
µ ¶
B E
.
V H

Răpuns: RONALD WILSON REAGAN.

Exerciţiul 12.3.6. Să se descifreze mesajul:


ZPXUB IRHNU VXWSP DJTNN.
Algoritmul utilizat este cifrul lui Hill (2 × 2), cheia de cifrare fiind matricea:
µ ¶
J D
.
X C

Răpuns: RICHARD MILHOUS NIXON.

Exerciţiul 12.3.7. Să se descifreze mesajul:


EJPYJ EBIXZ IRUSE ANA.
EXERCIŢII PROPUSE 173

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ăpuns: BENJAMIN HARRISON.

Exerciţiul 12.3.8. Să se descifreze mesajul:


NYNAF JUWBL ZXANM NGLEI JQWF
Algoritmul utilizat este cifrul lui Hill, cheia de cifrare fiind matricea:
µ ¶
J S
.
W V

Răspuns: FINAL ROUND TRANSFORMATION.

Exerciţiul 12.3.9. Să se descifreze mesajul:


NKTNM QZQEY WVDIA CIGMG.
Algoritmul utilizat este cifrul lui Hill, cheia de cifrare fiind matricea:
µ ¶
D I
.
K B

Răspuns: RETRIEVE YOUR BAGGAGE.

Exerciţiul 12.3.10. Demonstraţi că algoritmul lui Hill este un algoritm de


cifrare ı̂nchis.

Exerciţiul 12.3.11. Să se cifreze mesajul:


OPERATIONAL RESEARCH.
Algoritmul utilizat este cifrul lui Hill, cheia de cifrare fiind matricea:
µ ¶
F H
.
H I

Răspuns: TKJID WIMNN SFQQU CVFLD.

Exerciţiul 12.3.12. Să se descifreze mesajul:


TKJID WIMNN SFQQU CVFLD.
Algoritmul utilizat este cifrul lui Hill, cheia de cifrare fiind matricea:
µ ¶
F H
.
H I
174 SISTEMUL DE CIFRARE HILL

Răspuns: OPERATIONAL RESEARCH.

Exerciţiul 12.3.13. Să se cifreze mesajul:


CRYPTOLOGY.
Algoritmul utilizat este cifrul lui Hill, cheia de cifrare fiind matricea:
µ ¶
T E
.
S T

Răspuns: CVWPB KFWCS.

Exerciţiul 12.3.14. Să se cifreze mesajul:


NAVAJO CODE.
Algoritmul utilizat este cifrul lui Hill, cheia de cifrare fiind matricea:
µ ¶
L Q
.
L J

Răspuns: NNXXL RMSTR.

Exerciţiul 12.3.15. Să se descifreze mesajul:


CVWPB KFWCS.
Algoritmul utilizat este cifrul lui Hill, cheia de cifrare fiind matricea:
µ ¶
T E
.
S T

Răspuns: CRYPTOLOGY.

Exerciţiul 12.3.16. Să se descifreze mesajul:


NNXXL RMSTR.
Algoritmul utilizat este cifrul lui Hill, cheia de cifrare fiind matricea:
µ ¶
L Q
.
L J

Răspuns: NAVAJO CODE.


Capitolul 13

SISTEME DE CIFRARE
POLIALFABETICE

13.1. Breviar teoretic


Un sistem de cifrare de tip substituţie polialfabetică este generalizarea sistemului
de cifrare de substituţie monoalfabetică, fiind compus dintr-un număr N de alfabete.
Fiecare alfabet reprezintă o permutare (stabilită ı̂n funcţie de parolă) a alfabetului
de intrare. Algoritmul de cifrare constă ı̂n substituirea celei de a i−a litere m din
textul clar cu litera corespunzătoare din cel de al i mod N alfabet.
Sistemele polialfabetice sunt uşor de identificat prin aplicarea analizei frecvenţelor
de apatiţie a literelor ı̂n secvenţe decimate din textul cifrat.
Un exemplu de sistem polialfabetic este algoritmul lui Vigenère ı̂n care parola
k1 , . . . , kn este folosită periodic pentru a transforma caracterul mj ∈ {A, . . . , Z} din
textul clar după formula: cj = (mj + kj mod n ) mod 26. Pentru descifrare se foloseşte
formula: mj = (cj − kj mod n ) mod 26.
Atacul sistemelor polialfabetice este similar cu atacul a N sisteme de substituţie
monoalfabetică. Deci, o procedură de tip divide et impera are o complexitate de
O(N ). Procedura este descrisă ı̂n continuare:
Intrare: Textul cifrat de lungime M suficient de mare.
Ieşire: Textul clar corespunzător sistemului de cifrare polialfabetic.
PASUL 1. Determină numărul de alfabete N .
PASUL 2. Pentru j = 0 to 4 execută:
pentru i = 1 to N − j execută:
aplică procedura de reconstrucţie parţială (pe baza frecven-
ţelor (j + 1)−gramelor) a alfabetelor i, . . . , i + j.
PASUL 3. Conform celor N alfabete reconstruieşte textul clar.

175
176 SISTEME DE CIFRARE POLIALFABETICE

Observaţia 13.1.1. Procedura descrisă mai sus are ca parametru implicit de


analiză numărul maxim de legături 4 : astfel, 1−gramele sunt caracterele, 2−gramele
sunt dubleţii, etc.

13.2. Exerciţii rezolvate


Exerciţiul 13.2.1. Să se cifreze mesajul WINDS OF CHANGE cu ajutorul
algoritmului Vigenère, parola fiind FUTURE.

Rezolvare: Aplicând cifrarea pentru fiecare caracter al textului clar, ţinând cont
de poziţia acestora ı̂n alfabet, se obţine:

j mj kj(mod 6) cj = (mj + kj(mod 6) )(mod 26)


1 W − 22 F −5 (22 + 5)(mod 26) = 1 − B
2 I −8 U − 20 (8 + 20)(mod 26) = 2 − C
3 N − 13 T − 19 (13 + 19)(mod 26) = 6 − G
4 D−3 U − 20 (3 + 20)(mod 26) = 23 − X
5 S − 18 R − 17 (18 + 17)(mod 26) = 9 − J
6 O − 14 E−4 (14 + 4)(mod 26) = 18 − S
7 F −5 F −5 (5 + 5)(mod 26) = 10 − K
8 C −2 U − 20 (2 + 20)(mod 26) = 22 − W
9 H −7 T − 19 (7 + 19)(mod 26) = 0 − A
10 A−0 U − 20 (0 + 20)(mod 26) = 20 − U
11 N − 13 R − 17 (13 + 17)(mod 26) = 4 − E
12 G−6 E−4 (6 + 4)(mod 26) = 10 − K
13 E−4 F −5 (4 + 5)(mod 26) = 9 − J

Rezultă textul cifrat: BCGXJ SKWAU EKJ.

Exerciţiul 13.2.2. Să se descifreze mesajul IHWGZ CIHGO GKAJV OI ştiind


că a fost cifrat cu ajutorul algoritmului Vigenère, parola fiind PASSWORD.

Rezolvare: Aplicând descifrarea pentru fiecare caracter al textului cifrat, ţinând


cont de poziţia acestora ı̂n alfabet, se obţine:
EXERCIŢII PROPUSE 177

j cj kj(mod 8) mj = (cj − kj(mod 8) )(mod 26)


1 I −8 P − 15 (8 − 15)(mod 26) = 19 − T
2 H −7 A−0 (7 − 0)(mod 26) = 7 − H
3 W − 22 S − 18 (22 − 18)(mod 26) = 4 − E
4 G−6 S − 18 (6 − 18)(mod 26) = 14 − O
5 Z − 25 W − 22 (25 − 22)(mod 26) = 3 − D
6 C −2 0 − 14 (2 − 14)(mod 26) = 14 − O
7 I −8 R − 17 (8 − 17)(mod 26) = 17 − R
8 H −7 D−3 (7 − 3)(mod 26) = 4 − E
9 G−6 P − 15 (6 − 15)(mod 26) = 17 − R
10 O − 14 A−0 (14 − 0)(mod 26) = 14 − O
11 G−6 S − 18 (6 − 18)(mod 26) = 14 − O
12 K − 10 S − 18 (10 − 18)(mod 26) = 18 − S
13 A−0 W − 22 (0 − 22)(mod 26) = 4 − E
14 J −9 0 − 14 (9 − 14)(mod 26) = 21 − V
15 V − 21 R − 17 (21 − 17)(mod 26) = 4 − E
16 O − 14 D−3 (14 − 3)(mod 26) = 11 − L
17 I −8 P − 15 (8 − 15)(mod 26) = 19 − T

Dupa gruparea literelor rezultă: THEODORE ROOSEVELT.

13.3. Exerciţii propuse


Exerciţiul 13.3.1. Să se cifreze mesajul OPTIMISTIC cu ajutorul algoritmului
Vigenère, folosind parola GOODDAYS.

Răspuns: UDHLPIQLOQ.

Exerciţiul 13.3.2. Să se cifreze mesajul THANK YOU cu ajutorul algoritmului


Vigenère, folosind parola POLITE.

Răspuns: IVLVD CDI.

Exerciţiul 13.3.3. Să se cifreze mesajul GOING BACK IN TIME cu ajutorul


algoritmului Vigenère, folosind parola MEMORY.

Răspuns: SSUBX ZMGW WE RUQQ.

Exerciţiul 13.3.4. Să se cifreze mesajul FAST CARS cu ajutorul algoritmului


Vigenère, folosind parola RADAR.
178 SISTEME DE CIFRARE POLIALFABETICE

Răspuns: WAVT TRRV.

Exerciţiul 13.3.5. Să se cifreze mesajul SUITCASE cu ajutorul algoritmului


Vigenère, folosind parola TRIP.

Răspuns: LLQIVRAT.

Exerciţiul 13.3.6. Să se descifreze mesajul WIUXGHG WXGALFYK ştiind


că a fost cifrat cu ajutorul algoritmului Vigenère, parola fiind TEST.

Răspuns: DECENDO DECISMUS.

Exerciţiul 13.3.7. Să se descifreze mesajul UAEGQD OOGAT ştiind că a fost
cifrat cu ajutorul algoritmului Vigenère, parola fiind TANGO.

Răspuns: BARACK OBAMA.

Exerciţiul 13.3.8. Să se descifreze mesajul XVLGM OXLDC ştiind că a fost
cifrat cu ajutorul algoritmului Vigenère, parola fiind BRIDE.

Răspuns: WEDDING DAY.

Exerciţiul 13.3.9. Să se descifreze mesajul IHZSV SKIEE CHWPU ACSH


ştiind că a fost cifrat cu ajutorul algoritmului Vigenère, parola fiind PARADOX.

Răspuns: THIS SENTENCE IS FALSE.

Exerciţiul 13.3.10. Să se descifreze mesajul MYEYS VOJFQ ZAVLL N ştiind


că a fost cifrat cu ajutorul algoritmului Vigenère, parola fiind TRANSILVANIA.

Răspuns: THE LAND OF DRACULA.

Exerciţiul 13.3.11. Să se cifreze mesajul OPERATIONAL RESEARCH cu


ajutorul algoritmului Vigenère, folosind parola PASSWORD.

Răspuns: DPWJW HZRCA DJAGV DGCZ.

Exerciţiul 13.3.12. Să se descifreze mesajul DPWJW HZRCA DJAGV DGCZ


ştiind că a fost cifrat cu ajutorul algoritmului Vigenère, parola fiind PASSWORD.
EXERCIŢII PROPUSE 179

Răspuns: OPERATIONAL RESEARCH.

Exerciţiul 13.3.13. Să se cifreze mesajul CRIPTOGRAFIE cu ajutorul algo-


ritmului Vigenère, folosind parola TEST.

Răspuns: VVAIM SYKTJ AX.

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

14.1. Breviar teoretic


Metoda transpoziţiei asigură, ı̂n cadrul sistemelor criptografice, realizarea di-
fuziei: ı̂mprăştierea proprietăţilor statistice ale textului clar ı̂n textul cifrat. Metoda
transpoziţiei ı̂mbracă mai multe forme: textul este citit ı̂ntr-o formă matriceală linie
cu linie sau coloană cu coloană, se permută liniile şi/sau coloanele, rezultatul fiind
apoi scris linie cu linie sau coloană cu coloană. Spre exemplu, ı̂n cazul transpoziţiei
coloanelor, textul clar se citeşte, linie cu linie, ı̂ntr-o formă tabelară cu n coloane,
acesta fiind scris pe coloane ı̂n funcţie de cheia de cifrare reprezentată de o permutare
din σn .
Dacă dimensiunea textului clar nu este un multiplu de n atunci acesta se poate
completa sau nu cu un caracter bine precizat. În faza de preprocesare delimitatorul
de spaţiu este ignorat sau ı̂nlocuit cu caracterul cel mai puţin frecvent din limba ı̂n
care este textul clar (ı̂n limba română Q).

14.2. Exerciţii rezolvate


Exerciţiul 14.2.1. Să se cifreze prin metoda transpoziţiei (N = 12), pornind
de la parola

CRIP T OGRAF IE

mesajul SI IN CRIPTOGRAFIE TACEREA ESTE AUR.

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

deci parola CRIP T OGRAF IE produce permutarea: 2 10 6 9 12 8 5 11 1 4 7 3.


Textul clar este scris ı̂ntr-o tabelă cu 12 coloane:

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

Deoarece lungimea textului nu este divizibilă cu 12 vom completa ultimul rând cu


o secvenţă cunoscută (ı̂n acest caz caracterul Q). Textul cifrat se obţine citind
coloanele tabelei de cifrare ı̂n ordinea indicată de parola numerică: IAASG EORRQ
PCUCQ EQAQT ERQET IFEIR ARTQN IS.
Descifrarea se va realiza ı̂n mod similar folosind permutarea inversă σ −1 .
Dacă dimensiunea transpoziţiei N este mai mică decât lungimea parolei atunci
se vor reţine N caractere din parolă.

14.3. Exerciţii propuse


Exerciţiul 14.3.1. Scrieţi un program care să implementeze funcţiile de cifrare/descifrare
specifice metodei transpoziţiei coloanelor.

Exerciţiul 14.3.2. Să se cifreze mesajul:


ELECTRIC HOTPLATE
printr-o transformare de tip transpoziţie cu ajutorul permutării σ = (2, 1, 3).

Răspuns: LTCOL EECIH PTERQ TAQ.

Exerciţiul 14.3.3. Să se cifreze mesajul:


CERCETARI OPERATIONALE
printr-o transformare de tip transpoziţie cu ajutorul permutării σ = (3, 1, 2).

Răspuns: EEROR IAQRT IPAOL QCCAQ ETNE.

Exerciţiul 14.3.4. Să se cifreze mesajul CRIPTOGRAFIE prin metoda transpoziţiei


utilizând permutarea σ = (4, 2, 1, 3). Verificaţi rezultatul obţinut.
EXERCIŢII PROPUSE 183

Exerciţiul 14.3.5. Să se descifreze mesajul:


EORSE TOROE LHDEO VT
cifrat printr-o transformare de tip transpoziţie cu ajutorul permutării σ = (2, 3, 1).

Răspuns: THEODORE ROOSEVELT.

Exerciţiul 14.3.6. Să se descifreze mesajul:


SFCME TAEAE NLR
cifrat printr-o transformare de tip transpoziţie cu ajutorul permutării σ = (1, 2, 3).

Răspuns: STEFAN CEL MARE.

Exerciţiul 14.3.7. Să se descifreze mesajul:


HTZMA VEUII IAL
cifrat printr-o transformare de tip transpoziţie cu ajutorul permutării σ = (2, 3, 1).

Răspuns: MIHAI VITEAZUL.

Exerciţiul 14.3.8. Să se descifreze mesajul:


NMTMA STEDI NEINO NT
cifrat printr-o transformare de tip transpoziţie cu ajutorul permutării σ = (2, 3, 1).

Răspuns: SENTIMENT DOMINANT.

Exerciţiul 14.3.9. Să se descifreze mesajul:


TDDDR TEAAU EIASN RLCPR
cifrat printr-o transformare de tip transpoziţie cu ajutorul permutării σ = (3, 1, 2).

Răspuns: STANDARDUL DE CRIPTARE.

Exerciţiul 14.3.10. Demonstraţi că algoritmul de cifrare ce utilizează transpoziţia


este un sistem ı̂nchis.

Exerciţiul 14.3.11. Să se cifreze mesajul:


CERCETARI OPERATIONALE
printr-o transformare de tip transpoziţie cu ajutorul permutării σ = (2, 1, 3).

Răspuns: EERPAOLCC AORIARTIETNE.


184 METODA TRANSPOZIŢIEI

Exerciţiul 14.3.12. Să se descifreze mesajul:


EERPAOLCC AORIARTIETNE
cifrat printr-o transformare de tip transpoziţie cu ajutorul permutării σ = (2, 1, 3).

Răspuns: CERCETARI OPERATIONALE.

Exerciţiul 14.3.13. Să se cifreze mesajul:


OPERATIONAL RESEARCH
printr-o transformare de tip transpoziţie cu ajutorul permutării σ = (2, 1, 4, 3).

Răspuns: PTASC OANER RORAE ILEH.

Exerciţiul 14.3.14. Să se descifreze mesajul:


PTASC OANER RORAE ILEH
cifrat printr-o transformare de tip transpoziţie cu ajutorul permutării σ = (2, 1, 4, 3).

Răspuns: OPERATIONAL RESEARCH.


Capitolul 15

SISTEME MIXTE

15.1. Breviar teoretic


Sistemele mixte au la bază o cifrare succesivă a mesajului prin metoda substituţiei
şi apoi prin metoda transpoziţiei sau invers.
Atacarea sistemul de cifrare se realizează de la ultima sa componentă către prima.
Remarcăm faptul că substituţia simplă este comutativă cu operaţia de transpoziţie
deci se poate oricând aborda mai ı̂ntâi substituţia şi apoi transpoziţia. În cazul
utilizării unui sistem polialfabetic, cu număr necunoscut de alfabete, recomandarea
este ca după stabilirea, prin metode statistice, a numărului de alfabete, să se abor-
deze concomitent identificarea efectivă a alfabetelor şi al transpoziţiei utilizate. În
cazul utilizării unui sistem poligrafic (tabele de cifrare) şi o transpoziţie este reco-
mandabilă o tehnică de tip backtracking.

15.2. Exerciţii rezolvate


Exerciţiul 15.2.1. Să se cifreze mesajul GEOMETRIC FIGURE cu ajutorul
algoritmului lui Cezar (k = 5) şi al transpoziţiei σ = (2, 1, 3).

Rezolvare: Mai ı̂ntâi textul este cifrat cu sistemul Cezar folosind cheia k = 5, deci
corespondenţa dintre cele 2 alfabete devine:

text clar A B C D E F G H I ...


text cifrat F G H I J K L M N ...

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

Textul cifrat se determină citind pe coloane ı̂n ordinea indicată de permutare


(coloana din mijloc, apoi cea din stânga şi ı̂n final cea din dreapta): JJNNWLRW
KZTYHLJ .

Exerciţiul 15.2.2. Să se decripteze mesajul următor:


DKVUR UTUBK WFCVG ETGOC XWVWC
OCVPQ VUVWG FGHTQ VKUUV KKNKC
RKCPQ OQFKC EWVG
ştiind că a fost cifrat cu ajutorul algoritmului lui Cezar (k = 2) şi supracifrat
prin metoda transpoziţiei utilizând permutarea (3, 2, 1).

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:

text cifrat A B C D E F G H I ...


text clar Y Z A B C D E F G ...

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

După rearanjarea coloanelor conform permutării inverse σ −1 se obţine tabela


din dreapta. Citind pe linii se descoperă textul clar: SUBSTITUTIA SIMPLA SI
TRANSPOZITIA SUNT DOUA METODE DE CIFRARE COMUTATIVE .

15.3. Exerciţii propuse


Exerciţiul 15.3.1. Dezvoltaţi o aplicaţie care să implementeze rutine specifice
decriptării sistemelor mixte compuse din transpoziţii şi substituţii simple.

Exerciţiul 15.3.2. Se dau criptogramele:


Criptograma 1:
VXEVW LWXWL DVLPS ODVLW UDQVS
RCLWL DVXQW GRXDP HWRGH GHFLI
UDUHF RPXWD WLYHX
Criptograma 2:
YAHYZ OZAZO GYOSV RGYOZ XGTYV
188 SISTEME MIXTE

UFOZO GYATZ JUAGS KZUJK JKIOL


XGXKI USAZG ZOBKX
Care din afirmaţiile de mai jos sunt adevărate:
a) metoda de cifrare utilizată este o substituţia simplă;
b) metoda de cifrare utilizată este o transpoziţie;
c) metoda de cifrare este reprezentată de algoritmul lui Cezar;
d) nu se poate preciza sistemul criptografic utilizat.
Justificaţi răspunsul. Decriptaţi mesajul.

Răspuns: a) şi c). Textul clar: SUBSTITUTIA SIMPLA SI TRANSPOZITIA


SUNT DOUA METODE DE CIFRARE COMUTATIVE.

Exerciţiul 15.3.3. Se dau criptogramele:


Criptograma 1:
BITSP SRSZI UDATE CREMA VUTUA
MATNO TSTUE DEFRO TISST IILIA
PIANO MODIA CUTE
Criptograma 2:
UTUAM ATNOT STUED EFROT IBITS
PSRSZ IUDAT ECREM AVSST IILIA
PIANO MODIA CUTE
Care din afirmaţiile de mai jos sunt adevărate:
a) metoda de cifrare utilizată este o substituţia simplă;
b) metoda de cifrare utilizată este o transpoziţie;
c) metoda de cifrare este reprezentată de algoritmul lui Cezar;
d) nu se poate preciza sistemul criptografic utilizat.
Justificaţi răspunsul. Decriptaţi mesajul.

Răspuns: b). Textul clar: SUBSTITUTIA SIMPLA SI TRANSPOZITIA SUNT


DOUA METODE DE CIFRARE COMUTATIVE.

Exerciţiul 15.3.4. Cifraţi mesajul SPECIAL PROPERTY folosind algoritmu-


lui lui Cezar (k = 13) şi transpoziţia dată de σ = (2, 4, 3, 1).

Răspuns: PCRFVEE RYCLCNBG.

Exerciţiul 15.3.5. Decriptaţi mesajul CPKQCG ZGTVTKGOERIH ştiind că


a fost cifrat cu ajutorul algoritmului lui Cezar şi al unei transpoziţii.

Răspuns: EXAMEN CRIPTOGRAFIE.


EXERCIŢII PROPUSE 189

Exerciţiul 15.3.6. Decriptaţi mesajul ZGTVTK GOERIHCPKQCG ştiind că


a fost cifrat cu ajutorul algoritmului lui Cezar şi al unei transpoziţii.

Răspuns: EXAMEN CRIPTOGRAFIE.


190 SISTEME MIXTE
Capitolul 16

GENERATOARE
PSEUDOALEATOARE

16.1. Breviar teoretic


Un registru de deplasare cu feedback constă ı̂n n locaţii de memorie de câte un
bit care se ”deplasează” spre dreapta şi o funcţie de feedback care exprimă orice
element nou a(t), cu t ≥ n, al secvenţei ı̂n funcţie de elementele generate anterior
a(t − n), a(t − n + 1), . . . , a(t − 1).
Funcţia de feedback trebuie să fie nesingulară, adică de forma:
a(t) = g(a(t − 1), . . . , a(t − n + 1)) ⊕ a(t − n), unde ⊕ desemnează operaţia
SAU exclusiv (XOR). Dacă funcţia de feedback este liniară (se poate implementa
doar folosind operaţia SAU exclusiv) spunem că generatorul este un registru de
deplasare cu feedback liniar (LFSR). Altfel, spunem că generatorul este un registru
de deplasare cu feedback neliniar (NLFSR).
O locaţie de memorie a registrului se numeşte nivel, iar semnalele binare a(0), a(1), . . . ,
a(n − 1) sunt ı̂ncărcate ca date iniţiale. Perioada secvenţei produse depinde atât de
numărul de niveluri, cât şi de detaliile conexiunilor de feedback. Mai exact, perioada
maximă a secvenţei care poate fi generată de un registru de deplasare cu feedback,
având n niveluri şi o funcţie de feedback nesingulară este 2n − 1, adică numărul
maxim de stări ı̂n care se poate afla un registru cu n niveluri (se exclude starea
nulă). LFSR-urile sunt folosite de mult timp pentru teste VSLI, comunicaţii cu
spectru distribuit etc. Funcţia de feedback a unui LFSR are forma:

a(t) = c1 a(t − 1) ⊕ c2 a(t − 2) ⊕ . . . ⊕ cn−1 a(t − n + 1) ⊕ a(t − n), (16.1)

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 + c1 X + c2 X 2 + . . . + cn−1 X n−1 + X n ,

cu nedeterminata X. Acest polinom decide perioada şi comportarea statistică a


secvenţei de ieşire. Pentru a preveni o secvenţă de ieşire trivială, trebuie ca starea
,,zero peste tot” să nu fie stare iniţială. De exemplu, dacă un LFSR cu patru
niveluri are polinomul de feedback:

f (X) = 1 + X + X 2 + X 3 + X 4 ,

dependent de starea iniţială, atunci el va genera una din secvenţele de perioadă 5.


a) 1111011110 . . . ,
b) 1000110001 . . . ,
c) 0100101001 . . . ,
Sau, alt exemplu, dacă LFSR are polinomul de feedback dat de f (X) = 1 + X +
X 4 , atunci el generează o singură secvenţă netrivială de perioadă 15, cu cea mai
bună statistică pe care o astfel de secvenţă o poate avea:
101100100011110 . . .
Pentru a garanta cea mai mare perioadă posibilă 2n − 1, polinomul de feedback
f (X) al LFSR-ului trebuie să fie primitiv. Aceasta ı̂nsemnă că f (X) trebuie ales
astfel ı̂ncât cel mai mic număr ı̂ntreg pozitiv T pentru care X T − 1 este divizibil cu
f (X) să fie T = 2n − 1. Există algoritmi care testează primitivismul unui polinom.
Numărul de polinoame primitive de grad n este:

Φ(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

16.2. Exerciţii rezolvate


Exerciţiul 16.2.1. O secvenţă determinată de polinomul de feedback 1 + X 3 +
X4 are perioadă maximă?

Rezolvare: Notăm cu α = X mod f (X) o rădacină a polinomului de feedback:


1 + α3 + α4 = 0. Succesiv obţinem puterile lui α:
α1 =α;
α2 =α2 ;
α3 =α3 ;
α4 =1 + α3 ;
α5 =αα4 = α(1 + α3 ) = 1 + α + α3 ;
α6 =αα5 = α(1 + α + α3 ) = 1 + α + α2 + α3 ;
α7 =αα6 = α(1 + α + α2 + α3 ) = 1 + α + α2 ;
α8 =αα7 = α(1 + α + α2 ) = α + α2 + α3 ;
α9 =αα8 = α(α + α2 + α3 ) = 1 + α2 ;
α10 =αα9 = α(1 + α2 ) = α + α3 ;
α11 =αα10 = α(α + α3 ) = 1 + α2 + α3 ;
α12 =αα11 = α(1 + α2 + α3 ) = 1 + α;
α13 =αα12 = α(1 + α) = α + α2 ;
α14 =αα13 = α(α + α2 ) = α2 + α3 ;
α15 =αα14 = α(α2 + α3 ) = 1.
Ordinul lui α este 24 − 1, ı̂n concluzie, polinomul de feedback este primitiv.
194 GENERATOARE PSEUDOALEATOARE

16.3. Exerciţii propuse


Exerciţiul 16.3.1. Implementaţi o rutină de testat primitivismul unui polinom
din Z2 [X].

Exerciţiul 16.3.2. O secvenţă determinată de polinomul de feedback 1 + X 2 +


X4 are perioadă maximă?

Răspuns: Nu. Polinomul nu este ireductibil, deci nu este primitiv.

Exerciţiul 16.3.3. O secvenţă determinată de polinomul de feedback 1+X+X 4


are perioadă maximă?

Răspuns: Da. Polinomul de feedback este primitiv.

Exerciţiul 16.3.4. O secvenţă determinată de polinomul de feedback 1+X+X 3


are perioadă maximă?

Răspuns: Da. Polinomul de feedback este primitiv.

Exerciţiul 16.3.5. O secvenţă determinată de polinomul de feedback 1 + X +


X2 + X 3 are perioadă maximă?

Răspuns: Nu. Polinomul nu este primitiv.

Exerciţiul 16.3.6. O secvenţă determinată de polinomul de feedback 1 + X 2 +


X5 are perioadă maximă?

Răspuns: Da. Polinomul de feedback este primitiv.

Exerciţiul 16.3.7. O secvenţă determinată de polinomul de feedback 1 + X +


X3 + X 4 + X 5 are perioadă maximă?

Răspuns: Da. Polinomul de feedback este primitiv.

Exerciţiul 16.3.8. O secvenţă determinată de polinomul de feedback 1 + X +


X 3 + X 5 are perioadă maximă?

Răspuns: Nu. Polinomul nu este primitiv.


EXERCIŢII PROPUSE 195

Exerciţiul 16.3.9. O secvenţă determinată de polinomul de feedback 1 + X +


X2 + X 3 + X 5 are perioadă maximă?

Răspuns: Da. Polinomul de feedback este primitiv.

Exerciţiul 16.3.10. O secvenţă determinată de polinomul de feedback 1+X 2 +


X 3 + X 4 + X 5 are perioadă maximă?

Răspuns: Da. Polinomul de feedback este primitiv.


196 GENERATOARE PSEUDOALEATOARE
Capitolul 17

CALCULE ÎN CORPURI


GALOIS

17.1. Breviar teoretic


Corpul Galois GF (2n ) este definit de un polinom f (X) ∈ Z2 [X] de grad n.
Elementele acestui corp sunt polinoame.
Operaţiile ı̂ntre două polinoame a(X) = a0 + a1 X + . . . an X n şi b(X) = b0 +
b1 X + . . . bn X n din GF (2n ) se definesc ı̂n modul următor:
a) a(X) ⊕ b(X) = c(X), ci = (ai + bi ) mod 2;
b) a(X) • b(X) = a(X)b(X) mod f (X).
Un element din GF (2n ) se poate reprezenta sub forma binară (şi apoi hexazec-
imală) prin coeficienţii săi : a0 + a1 X + . . . + an X n se identifică cu an . . . a1 a0 ,
ai ∈ {0, 1}
Inversul unui element din GF (2n ) se determină cu algoritmul lui Euclid, exem-
plificat ı̂n continuare.

17.2. Exerciţii rezolvate


Exerciţiul 17.2.1. Care este inversul elementului {45} (reprezentat ı̂n format
hexa) din GF (28 ) definit de polinomul f (X) = 1 + X + X 3 + X 4 + X 8 .

Rezolvare: Elementului {45} ı̂i corespunde polinomul X 6 + X 2 + 1. Pentru a afla


inversul lui {45} modf (X) utilizăm algoritmul lui Euclid:
X 8 + X 4 + X 3 + X + 1 = X 2 (X 6 + X 2 + 1) + X 3 + X 2 + X + 1,
X 6 + X 2 + 1 = (X 3 + X 2 )(X 3 + X 2 + X + 1) + 1,
plecând de la ultima ecuaţie către prima, succesiv obţinem:

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 .

Rezolvare: {57} • {83} = (X 6 + X 4 + X 2 + X + 1)(X 7 + X + 1) = X 13 + X 11 +


X 9 + X 8 + X 6 + X 5 + X 4 + X 3 + 1 mod (X 8 + X 4 + X 3 + X + 1) = X 7 + X 6 + 1 =
{11000001} = {C1}.

17.3. Exerciţii propuse


Exerciţiul 17.3.1. Implementaţi proceduri de calcul ı̂n corp Galois.

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}.

Exerciţiul 17.3.8. Se consideră transformarea dată de


   
1 1 1 1 1 0 0 0 0
 0 1 1 1 1 1 0 0   1 
   
 0 0 1 1 1 1 1 0   1 
   
 0 0 0 1 1 1 1 1  −1  0 
g(y) = 

y ⊕ 
 

 (17.1)
 1 0 0 0 1 1 1 1   0 
 1 1 0 0 0 1 1 1   0 
   
 1 1 1 0 0 0 1 1   1 
1 1 1 1 0 0 0 1 1
unde y−1 este inversul lui y ı̂n corpul Galois GF (28 ) definit de polinomul 1 +
X + X 3 + X 4 + X 8 . Calculaţi g(1), g(2), g(3), g(4), g(5).

Răspuns: Transformarea indicată ı̂n problemă defineşte tabela de substituţie a


algoritmului RIJNDAEL. Valorile solicitate (ı̂n zecimal) sunt: g(1) = 124, g(2) =
119, g(3) = 123, g(4) = 242, g(5) = 107.
200 CALCULE ÎN CORPURI GALOIS
Capitolul 18

ALGORITMUL RIJNDAEL -
STANDARDUL AES

18.1. Breviar teoretic


Pentru rezolvarea următoarelor exerciţii plecăm de la ipoteza cunoaşterii standar-
dului FIPS 197 - Advanced Encryption Standard compus din patru operaţii (sumare
modulo 2 cu cheia de rundă, subtituţia la nivel de octet, shiftarea liniilor, mixarea
coloanelor etc.) ı̂n cadrul procesului de transformare a stărilor şi din generatorul de
chei de rundă.

18.2. Exerciţii rezolvate


Exerciţiul 18.2.1. Intrarea ı̂n runda i = 6 a algoritmului AES 128/128 pentru
cifrarea textului ,,zero peste tot”, cu ajutorul cheii ,,zero peste tot”, este:
 
D4 55 7E 79
 6F B8 05 79 
 
 4F 96 BB DE 
6C 33 3D 23
cheia de rundă fiind:
 
EC 14 99 6A
 61 25 FF B4 
 
 4B 75 09 9B 
85 8C 37 A7
Care este ieşirea după procesarea rutinelor SubBytes, ShiftRows, MixColumns şi
AddRoundKey?

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

Rutina MixColumns presupune ı̂nmulţirea fiecărei coloane din stare cu următoarea


matrice fixată:
 
02 03 01 01
 01 02 03 01 
 
 01 01 02 03 
03 01 01 02

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)),

unde m(X) este polinomul generator m(X) = X 4 + X 3 + X + 1 al corpului Galois


GF(28 ). Dacă b7 = 0, atunci polinomul este ı̂n forma redusă ı̂n GF (28 ) (are gradul
7).
Dacă b7 = 1, atunci:

X ∗ f (X) = X 8 mod m(X) + b6 X 7 + b5 X 6 + b4 X 5 + b3 X 4 + b2 X 3 + b1 X 2 + b0 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

Coloana rezultat va conţine următoarele linii:


 
02 ∗ 48 ⊕ 03 ∗ 6C ⊕ EA ⊕ 26
 01 ∗ 48 ⊕ 02 ∗ 6C ⊕ 03 ∗ EA ⊕ 26 
 
 48 ⊕ 6C ⊕ 02 ∗ EA ⊕ 03 ∗ 26 
03 ∗ 48 ⊕ 6C ⊕ EA ⊕ 02 ∗ 26

Rămân de efectuat ı̂nmulţirile care apar pe fiecare linie:


02 ∗ 48 = 02 ∗ 01001000 = 10010000.
03 ∗ 48 = 02 ∗ 48 ⊕ 48 = 11011000.
03 ∗ 6C = 03 ∗ 01101100 = 02 ∗ 01101100 ⊕ 01101100 = 11011000 ⊕ 01101100 =
10110100.
02 ∗ EA = 02 ∗ 11101010 = 11010100 ⊕ 00011011 = 11110001.
03 ∗ EA = 02 ∗ EA ⊕ EA = 11110001 ⊕ 11101010 = 00011011.
02 ∗ 26 = 02 ∗ 00100110 = 01001100.
03 ∗ 26 = 02 ∗ 26 ⊕ 26 = 01001100 ⊕ 00100110 = 01101010.
După calculele rămase, coloana rezultat va fi:
 
E8
 93 
 
 81 
12

Pentru celelalte coloane din stare se procedează similar.


Starea rezultată după aplicarea rutinei MixColumns este următoarea:
 
E8 13 7B 23
 93 5D D0 71 
 
 81 5D 08 4C 
12 C9 A1 B7

Aplicarea rutinei AddRoundKey presupune o simplă operaţie de XOR pe fiecare


octet din stare cu octet-ul corespunzător din cheia de rundă.

     
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

18.3. Exerciţii propuse


Exerciţiul 18.3.1. Intrarea ı̂n runda i = 7 a algoritmului AES 128/128 pentru
cifrarea textului ,,zero peste tot”, cu ajutorul cheii ,,zero peste tot”, este:
 
04 07 E2 49
 F2 78 2F C5 
 
 CA 28 01 D7 
97 45 96 10

cheia de rundă fiind:


 
21 35 AC C6
 75 50 AF 1B 
 
 17 62 6B F0 
87 0B 3C 9B

Care este ieşirea după procesarea rutinelor SubBytes, ShiftRows, MixColumns şi
AddRoundKey?

Răspuns: Ieşirea din runda 7 este:


 
B7 1D 6C 94
 AA 25 92 E5 
 
 E4 2D 0F 81 
C5 4F 81 50

Exerciţiul 18.3.2. Intrarea ı̂n runda i = 8 a algoritmului AES 128/128 pentru


cifrarea textului ,,zero peste tot”, cu ajutorul cheii ,,zero peste tot”, este:
 
B7 1D 6C 94
 AA 25 92 E5 
 
 E4 2D 0F 81 
C5 4F 81 50

cheia de rundă fiind:


 
0E 3B 97 51
 F9 A9 06 1D 
 
 03 61 0A FA 
33 38 04 9F

Care este ieşirea după procesarea rutinelor SubBytes, ShiftRows, MixColumns şi
AddRoundKey?
206 ALGORITMUL RIJNDAEL - STANDARDUL AES

Răspuns: Ieşirea din runda 8 este:


 
23 13 AA 2E
 37 21 C0 03 
 
 8C 63 C6 CB 
3C DB 57 95

Exerciţiul 18.3.3. Intrarea ı̂n runda i = 8 a algoritmului AES 128/128 pentru


cifrarea textului ,,zero peste tot”, cu ajutorul cheii ,,zero peste tot”, este:
 
23 13 AA 2E
 E7 21 C0 03 
 
 8C 63 C6 CB 
3C DB 57 95

cheia de rundă fiind:


 
B1 8A 1D 4C
 D4 7D 7B 66 
 
 D8 B9 B3 49 
E2 DA DE 41

Care este ieşirea după procesarea rutinelor SubBytes, ShiftRows, MixColumns şi
AddRoundKey?

Răspuns: Ieşirea din runda 9 este:


 
7F 51 0E 29
 FE A5 34 29 
 
 0E 66 7C EC 
95 35 47 CB

Exerciţiul 18.3.4. Executaţi o rundă completă, pentru algoritmul RIJNDAEL


(AES), cu următoarele intrări:
pentru starea curentă:
 
00 00 00 00
 00 00 00 00 
 
 00 00 00 00 
00 00 00 01

pentru cheia de rundă:


EXERCIŢII PROPUSE 207

 
62 62 62 62
 63 63 63 63 
 
 7C 7C 7C 7C 
63 63 63 62

Răspuns: Ieşirea din rundă este:


 
1E 01 01 01
 1F 00 00 00 
 
 3E 1F 1F 1F 
3E 00 00 01

Exerciţiul 18.3.5. Executaţi o rundă completă, pentru algoritmul RIJNDAEL


(AES), cu următoarele intrări:
pentru starea curentă:
 
1E 01 01 01
 1F 00 00 00 
 
 3E 1F 1F 1F 
3E 00 00 01

pentru cheia de rundă:


 
9B F9 9B F9
 73 10 73 10 
 
 D6 AA D6 AA 
C9 AA C9 AB

Răspuns: Ieşirea din rundă este:


 
66 D6 17 F9
 E0 43 67 CF 
 
 D8 E3 13 28 
04 F2 5A E9

Exerciţiul 18.3.6. Executaţi o rundă completă, pentru algoritmul RIJNDAEL


(AES), cu următoarele intrări:
pentru starea curentă:
208 ALGORITMUL RIJNDAEL - STANDARDUL AES

 
66 D6 17 F9
 E0 43 67 CF 
 
 D8 E3 13 28 
04 F2 5A E9

pentru cheia de rundă:


 
55 AC 37 CE
 DF CF BC AC 
 
 B4 1E C8 62 
50 FA 33 98

Răspuns: Ieşirea din rundă este:


 
7E 09 A1 70
 41 86 69 61 
 
 45 08 F0 E1 
5E B5 DA BF

Exerciţiul 18.3.7. Executaţi o rundă completă, pentru algoritmul RIJNDAEL


(AES), cu următoarele intrări:
pentru starea curentă:
 
7E 09 A1 70
 41 86 69 61 
 
 45 08 F0 E1 
5E B5 DA BF

pentru cheia de rundă:


 
CC 60 57 99
 75 BA 06 AA 
 
 F2 EC 24 46 
DB 21 12 8A

Răspuns: Ieşirea din rundă este:


 
79 D2 A2 C2
 89 19 96 E1 
 
 5E 17 41 0D 
0D 93 74 64
EXERCIŢII PROPUSE 209

Exerciţiul 18.3.8. Executaţi o rundă completă, pentru algoritmul RIJNDAEL


(AES), cu următoarele intrări:
pentru starea curentă:
 
79 D2 A2 C2
 89 19 96 E1 
 
 5E 17 41 0D 
0D 93 74 64

pentru cheia de rundă:


 
70 10 47 DE
 2F 95 93 39 
 
 8C 60 44 02 
35 14 06 8C

Răspuns: Ieşirea din rundă este:


 
A0 CA A4 04
 F7 AE 76 D0 
 
 36 92 49 D6 
25 22 4B 8B
210 ALGORITMUL RIJNDAEL - STANDARDUL AES
Capitolul 19

CRIPTANALIZA
CIFRURILOR BLOC

19.1. Breviar teoretic


Deoarece nu există o formulă matematică universală care să poată fi aplicată ı̂n
operaţia de criptanaliză, am propus ca exerciţii la acest capitol modificări ale unor
algoritmi de cifruri bloc consacrate. Sunt date o serie de indicaţii precedate de o
scurtă descriere a algoritmilor propriu-zişi.

19.2. Exerciţii rezolvate


Exerciţiul 19.2.1. Studiaţi următorele simplificări ale algoritmului RC5:
-RC5 cu 8 iteraţii dar fără rotaţii;
-RC5 cu 8 iteraţii iar numărul de rotaţii egal cu numărul de iteraţii.

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 .

Algoritmul astfel setat nu ı̂ndeplineşte criteriul de avalanşă strictă (schimbarea


unui bit ı̂n blocul de text clar produce, ı̂n medie, schimbări de 50% la ieşire). Schema
de mai sus permite atacul cu ajutorul tehnicii criptanalizei liniare pentru aflarea lui
S, deci a cheii efective.
Dacă setăm numărul de iteraţii r = 8 şi numărul de rotaţii egal cu r atunci pentru
i = 1, . . . , 8 se execută:
½
L = ((L ⊕ R) << 8) + S2i ,
R = ((R ⊕ L) << 8) + S2i+1 .
Algoritmul astfel setat nu ı̂ndeplineşte criteriul de avalanşă strictă. Schema de
mai sus permite atacul cu ajutorul tehnicii criptanalizei diferenţial/liniare pentru
aflarea lui S.

Exerciţiul 19.2.2. Studiaţi următorele simplificări ale algoritmului DES:


-DES cu 12 iteraţii dar fără aplicaţiile S;
-DES cu 4 iteraţii;
-DES cu 6 iteraţii.

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.

19.3. Exerciţii propuse


Exerciţiul 19.3.1. Studiaţi regula B a algoritmului Skipjack cu 8 iteraţii.

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 ))?

Răspuns. Ca metodă de atac generică se poate opta pentru cifrarea repetitivă.

Exerciţiul 19.3.3. Aplicaţi tehnica criptanalizei diferenţiale şi criptanalizei li-


niare asupra algorimului FEAL.

Exerciţiul 19.3.4. Studiaţi tehnica criptanalizei diferenţiale ı̂n cazul algorit-


mului DES cu 16 iteraţii.

Exerciţiul 19.3.5. Aplicaţi tehnica criptanalizei liniare ı̂n cazul algoritmului


DES cu 16 iteraţii.

Exerciţiul 19.3.6. Având la dispoziţie un cifru bloc Ek (.) proiectaţi un cifru


flux şi viceversa.

Exerciţiul 19.3.7. Scrieţi funcţia analitică a celor opt funcţii de substituţie S


ale cifrului DES.

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.9. Implementaţi modalităţi de testare a cifrurilor bloc.

Exerciţiul 19.3.10. Implementaţi modalităţi de generare a tabelelor de substi-


tuţie.

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

20.1. Breviar teoretic


Teorema 20.1.1. (Lema chinezească a resturilor- CRT) Fie m1 , . . . , mk nu-
mere ı̂ntregi cu (mi , mj ) = 1 pentru orice i 6= j. Atunci sistemul

x ≡ ai mod mi

Q
k
are o soluţie unică modulo mi .
i=1

Demonstraţie. Existenţa soluţiei. Vom nota


k
Y
M= 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

şi reducem modulo mi avem:


k
X
x= aj Mj Nj mod mi pentru orice i.
j=0

Folosind faptul că (Mi , mj ) 6= 1 pentru i 6= j obţinem:

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.

20.2. Exerciţii rezolvate


Exerciţiul 20.2.1. Să se rezolve sistemul de ecuaţii:

 x ≡ 3 mod 13
x ≡ 34 mod 47

x ≡ 2 mod 51

Rezolvare:
Soluţia sistemului de congruenţe este dată de formula:
3
X
x= aj Mj Nj mod M.
j=1

unde a1 = 3, a2 = 34, a3 = 2 iar m1 = 13, m2 = 47, m3 = 51. Se observă că


m1 , m2 şi m3 sunt prime ı̂ntre ele.
Calculăm M = 13 · 47 · 51 = 31161 şi M1 = 47 · 51 = 2397, M2 = 13 · 51 = 663 si
M3 = 13 · 47 = 611.
Mai departe trebuie calculat inversul lui Mj pentru j = 1 , j = 2 şi j = 3.
Cu algoritmul lui Euclid extins, se calculează N1 = M1−1 mod m1 = 2397−1 mod
13 = 5−1 mod 13 = 8.
Similar se calculează N2 = M2−1 mod m2 = 663−1 mod 47 = 5−1 mod 47 = 19,
iar
EXERCIŢII PROPUSE 217

N3 = M3−1 mod m3 = 611−1 mod 51 = 50−1 mod 51 = 50.


În acest moment, avem toate datele necesare pentru a calcula soluţia x a sistemu-
lui de congruenţe:
x = a1 M1 N1 + a2 M2 N2 + a3 M3 N3 mod M.
Deci x = 3 · 2397 · 8 + 34 · 663 · 19 + 2 · 611 · 50 mod 31161 = 57528 + 428928 +
61100 mod 31161 de unde x = 17819 mod 31161; se poate verifica faptul că ı̂ntr-
adevăr aceasta este soluţia sistemului.

20.3. Exerciţii propuse


Exerciţiul 20.3.1. Să se rezolve sistemul de ecuaţii:

 x ≡ 1 mod 13
x ≡ 2 mod 17

x ≡ 3 mod 11

Răspuns: x = 1158 mod 2431.

Exerciţiul 20.3.2. Să se rezolve sistemul de ecuaţii:



 x ≡ 3 mod 13
x ≡ 2 mod 11

x ≡ 2 mod 19

Răspuns: x = 211 mod 2717.

Exerciţiul 20.3.3. Să se rezolve sistemul de ecuaţii:



 x ≡ 3 mod 5
x ≡ 5 mod 7

x ≡ 7 mod 11

Răspuns: x = 348 mod 385.

Exerciţiul 20.3.4. Să se rezolve sistemul de ecuaţii:



 x ≡ 5 mod 17
x ≡ 3 mod 19

x ≡ 2 mod 23

Răspuns: x = 991 mod 7429.


218 LEMA CHINEZEASCĂ A RESTURILOR

Exerciţiul 20.3.5. Să se rezolve sistemul de ecuaţii:



 x ≡ 5 mod 11
x ≡ 3 mod 19

x ≡ 2 mod 23

Răspuns: x = 3613 mod 4807.

Exerciţiul 20.3.6. Să se rezolve sistemul de ecuaţii:



 x ≡ 5 mod 17
x ≡ 3 mod 21

x ≡ 2 mod 23

Răspuns: x = 4119 mod 8211.

Exerciţiul 20.3.7. Să se rezolve sistemul de ecuaţii:



 x ≡ 4 mod 21
x ≡ 9 mod 31

x ≡ 14 mod 23

Răspuns: x = 6178 mod 14973.

Exerciţiul 20.3.8. Să se rezolve sistemul de ecuaţii:



 x ≡ 4 mod 47
x ≡ 9 mod 11

x ≡ 3 mod 23

Răspuns: x = 10767 mod 11891.

Exerciţiul 20.3.9. Să se rezolve sistemul de ecuaţii:



 x ≡ 11 mod 17
x ≡ 12 mod 19

x ≡ 13 mod 23

Răspuns: x = 3394 mod 7429.

Exerciţiul 20.3.10. Să se rezolve sistemul de ecuaţii:


EXERCIŢII PROPUSE 219

 x ≡ 8 mod 23
x ≡ 14 mod 29

x ≡ 17 mod 31

Răspuns: x = 1319 mod 20677.

Exerciţiul 20.3.11. Să se rezolve sistemul de ecuaţii:



 x ≡ 15 mod 23
x ≡ 3 mod 19

x ≡ 13 mod 36

Răspuns: x = 15241 mod 15732.


220 LEMA CHINEZEASCĂ A RESTURILOR
Capitolul 21

SISTEMUL DE CIFRARE
MERKLE-HELLMAN

21.1. Breviar teoretic


Algoritmul de cifrare Merkle-Hellman constă ı̂n codificarea mesajului ca o soluţie
a unei probleme de tip rucsac pentru care ponderile {M1 , ..., Mn } constituie cheia
P
n
de cifrare, şi textului clar {b1 , ..., bn } ı̂i corespunde textul cifrat bi Mi .
i=1

Definiţia 21.1.1. Un şir de ponderi {M1 , ..., Mn } se numeşte supercrescător


dacă:
k−1
X
Mk > Mi pentru orice k. (21.1)
i=1

Problema rucsacului supercrescător este uşor de rezolvat folosind următoarea


schemă: pentru k = n, ..., 1:

• dacă Mk < S atunci bk = 1 şi S = S − Mk ;

• altfel bk = 0.

Algoritmii de tip rucsac care nu sunt supercrescători nu sunt uşor de rezolvat


şi nu există niciun algoritm rapid care să rezolve problema. Singura modalitate
cunoscută de a determina dacă bi = 1 constă ı̂n testarea tuturor soluţiilor. Cei mai
rapizi algoritmi de testare au o complexitate exponenţială.
Algoritmul Merkle-Hellman se bazează pe această proprietate: cheia privată este
şirul ponderilor pentru un rucsac supercrescător iar cheia publică este şirul ponderilor

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

{mM1 mod p, ..., mMn mod p},

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

Pentru descifrare destinatarul mesajului cunoaşte cheia privată: ponderile origi-


nale şi valorile lui m şi p. Acesta va calcula mai ı̂ntâi pe m−1 mod p. Se va multiplica
apoi textul cifrat cu m−1 mod p iar după aceea se va rezolva problema rucsacului
supercrescător pentru a recupera textul original.

21.2. Exerciţii rezolvate


Exerciţiul 21.2.1. Să se construiască cheia publică pentru algoritmul Merkle-
Hellman reprezentat de cheia privată {2, 3, 6, 13, 27, 52}, modulul p = 105 şi multi-
plicatorul m = 31. Cifraţi mesajul 101110.

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

Exerciţiul 21.2.2. Să se descifreze mesajul C = 4608 cifrat cu ajutorul algo-


ritmului Merkle-Hellman cu parametrii n = 9, cheia privată:

{1, 2, 5, 10, 19, 40, 98, 179, 355},

modulul p = 1717 şi multiplicatorul m = 507.

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.

21.3. Exerciţii propuse


Exerciţiul 21.3.1. Dezvoltaţi o aplicaţie care să implementeze funcţiile de cifrare
şi descifrare ale sistemului Merkle-Hellman.

Exerciţiul 21.3.2. Să se construiască cheia publică pentru algoritmul Merkle-


Hellman reprezentat de cheia privată {2, 3, 6, 13, 27, 52}, modulul p = 105 şi multi-
plicatorul m = 31. Cifraţi mesajul 011111.

Răspuns: Cheia publică {62, 93, 81, 88, 102, 37}, mesajul cifrat c = 401.

Exerciţiul 21.3.3. Să se construiască cheia publică pentru algoritmul Merkle-


Hellman reprezentat de cheia privată {2, 3, 6, 13, 27, 52}, modulul p = 105 şi multi-
plicatorul m = 31. Cifraţi mesajul 111110.

Răspuns: Cheia publică {62, 93, 81, 88, 102, 37}, mesajul cifrat c = 426.

Exerciţiul 21.3.4. Să se construiască cheia publică pentru algoritmul Merkle-


Hellman reprezentat de cheia privată {2, 3, 6, 13, 27, 52}, modulul p = 105 şi multi-
plicatorul m = 31. Cifraţi mesajul 001110.

Răspuns: Cheia publică {62, 93, 81, 88, 102, 37}, mesajul cifrat c = 271.

Exerciţiul 21.3.5. Să se descifreze mesajul 333 cifrat cu ajutorul algoritmului


Merkle-Hellman cu următorii parametrii: n = 6, cheia privată {2, 3, 6, 13, 27, 52},
modulul p = 105 şi multiplicatorul m = 31.
224 SISTEMUL DE CIFRARE MERKLE-HELLMAN

Răspuns: Cheia publică {62, 93, 81, 88, 102, 37}, mesajul clar 101110.

Exerciţiul 21.3.6. Să se descifreze mesajul 320 cifrat cu ajutorul algoritmului


Merkle-Hellman cu următorii parametrii: n = 6, cheia privată {2, 5, 14, 23, 56, 125},
modulul p = 228 şi multiplicatorul m = 191.

Răspuns: Cheia publică {154, 43, 166, 61, 208, 163}, m−1 mod p = 191, mesajul
clar 101000.

Exerciţiul 21.3.7. Să se construiască cheia publică pentru algoritmul Merkle-


Hellman cu următorii parametrii: n = 6, cheia privată {3, 4, 11, 25, 50, 113}, modulul
p = 209 şi multiplicatorul m = 20. Cifraţi mesajul 27.

Răspuns: Cheia publică este {60, 80, 11, 82, 164, 170}, mesajul cifrat 425.

Exerciţiul 21.3.8. Să se descifreze mesajul 425 cifrat cu ajutorul algoritmului


Merkle-Hellman cu următorii parametrii: n = 6, cheia privată {3, 4, 11, 25, 50, 113},
modulul p = 209 şi multiplicatorul m = 20.

Răspuns: Cheia publică {60, 80, 11, 82, 164, 170}, m−1 mod p = 115, mesajul clar
011011.

Exerciţiul 21.3.9. Să se construiască cheia publică pentru algoritmul Merkle-


Hellman cu următorii parametrii: n = 6, cheia privată {3, 4, 11, 26, 58, 106}, modulul
p = 238 şi multiplicatorul m = 167. Cifraţi mesajul 29.

Răspuns: Cheia publică este {25, 192, 171, 58, 166, 90}, mesajul cifrat 511.

Exerciţiul 21.3.10. Să se descifreze mesajul 511 cifrat cu ajutorul algoritmului


Merkle-Hellman cu următorii parametrii: n = 6, cheia privată {3, 4, 11, 26, 58, 106},
modulul p = 238 şi multiplicatorul m = 167.

Răspuns: Cheia publică {25, 192, 171, 58, 166, 90}, m−1 mod p = 181, mesajul
clar 011101.
Capitolul 22

SISTEMUL DE CIFRARE RSA

22.1. Breviar teoretic


Algoritmul RSA a fost inventat de către Ron Rivest, Adi Shamir şi Leonard
Adleman şi a fost studiat ı̂n cadrul unor studii criptanalitice extinse. Securitatea
RSA-ului se bazează pe dificultatea factorizării numerelor mari. Cheia publică şi
cheia privată sunt funcţie de o pereche de numere prime mari (de 200 de cifre sau
chiar mai mari). Factorizarea produsului a două numere prime implică recuperarea
textului clar din textul cifrat, cunoscând cheia publică.
Pentru generarea a două chei (publică şi privată) se aleg aleatoriu două numere
prime mari p şi q. Din raţionamente de securitate p şi q au acelaşi ordin de mărime.
Se va calcula produsul n = p · q. Se va alege apoi, aleatoriu, exponentul public (de
cifrare) e astfel ca e şi (p − 1)(q − 1) să fie relativ prime. Utilizând algoritmul extins
al lui Euclid vom calcula exponentul privat (de descifrare) d astfel ca

ed ≡ 1 mod (p − 1)(q − 1).

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.

Observaţia 22.1.1. Pentru a evita metodele de factorizare cunoscute numerele


p şi q trebuie să fie numere prime tari. Un număr prim p se numeşte număr prim
tare dacă:
i) p − 1 are un factor mare r;
ii) p + 1 are un factor mare s;
iii) r − 1 are un factor mare t.

Operaţia de semnare a unui mesaj M se realizează prin exponenţierea amprentei


H(M ) cu ajutorul cheii private: s = H(M )d mod n. Verificarea semnăturii se real-
izează prin comparaţia lui H(M ) cu se mod n.
În cazurile practice valoarea lui e este un număr relativ mic, deci d are o val-
oare mare. Acest lucru conduce la timpi de rulare diferiţi ı̂ntre operaţiile private
(descifrare/semnare) şi cele publice(cifrare/verificare semnătură).
Pentru optimizarea calculelor de verificare a semnăturii se poate utiliza lema
chinezească a resturilor (CRT), ı̂nsă acest lucru induce vulnerabilităţi ı̂n mediul de
implementare.
Astfel, dacă p > q, sunt precalculate valorile:
dP = (e−1 mod n) mod (p − 1),
dQ = (e−1 mod n) mod (q − 1),
qInv = q −1 mod p.
În faza de calcul se execută:
m1 = cdP mod p,
m2 = cdQ mod q,
h = qInv(m1 − m2 ) mod p,
m = m2 + hq.
Cheia privată ce se stochează fiind (p, q, dP, dQ, qInv).
EXERCIŢII REZOLVATE 227

22.2. Exerciţii rezolvate


Exerciţiul 22.2.1. Se dă numărul n = 36187829 despre care se cunoaste faptul
că este un produs de două numere cu valoarea φ(n) = 36175776. Factorizaţi numărul
n.
p
Rezolvare: Folosim relaţile p+q = n−(p−1)(q −1)+1 şi p−q = (p + q)2 − 4n.
Obţinem p = 5657 şi q = 6397.

Exerciţiul 22.2.2. Să se cifreze mesajul M = 3, utilizând sistemul RSA cu


următorii parametrii: N = 187 (modulul de cifrare), e = 7 (exponentul de cifrare).

Rezolvare: Criptograma este: C = M e = 37 = 2187 = 130 mod 187.

Exerciţiul 22.2.3. Să se descifreze mesajul C = 130, utilizând sistemul RSA


cu următorii parametrii: N = 187 = 11 · 17 (modulul de cifrare), e = 7 (exponentul
de cifrare).

Rezolvare: Deoarece se cunoaşte factorizarea N = 11·17, se poate calcula ϕ(N ) =


16 · 10 = 160, ϕ(ϕ(N )) = 64.
Exponentul de descifrare va fi:
d = eϕ(ϕ(N ))−1 = 763 = (79 )7 = (40353607)7 = 77 = 823543 = 23 mod 160.
Descifrarea mesajului cifrat C va fi: C d = 13023 = 3 = M mod 187.

Exerciţiul 22.2.4. Să se descifreze, utilizând CRT, mesajul cifrat c = 8363,


pentru cazul ı̂n care p = 137, q = 131, n = p · q = 17947, e = 3, d = 11787.

Rezolvare: În faza de precalcul avem:

dP = (e−1 mod n) mod (p − 1) = 91,


dQ = (e−1 mod n) mod (q − 1) = 87,
qInv = q −1 mod p = 114.
Calculăm apoi:

m1 = cdP mod p = 102,


m2 = cdQ mod q = 120,
h = qInv(m1 − m2 ) mod p = 3,
m = m2 + hq = 513.
228 SISTEMUL DE CIFRARE RSA

22.3. Exerciţii propuse


Exerciţiul 22.3.1. Fie numerele prime p = 211 şi q = 167. Să se cifreze mesajul
TEST cu ajutorul algoritmului RSA, utilizând exponentul public e = 28 + 1. Ele-
mentele din mesajul clar se codifică conform codului ASCII.

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: N = 35237, φ(N ) = 34860, d = 23873, mesajul clar este TEST.

Exerciţiul 22.3.3. Să se cifreze mesajul M = 146, utilizând sistemul RSA cu


următorii parametrii: n = 187 (modulul de cifrare), e = 7 (exponentul de cifrare).

Răspuns: C = 141.

Exerciţiul 22.3.4. Să se descifreze mesajul C = 141, utilizând sistemul RSA


cu următorii parametrii: n = 187 (modulul de cifrare), d = 23(exponentul de de-
scifrare).

Răspuns: M = 146.

Exerciţiul 22.3.5. Să se cifreze mesajul M = 9, utilizând sistemul RSA cu


următorii parametrii: n = 187 (modulul de cifrare), e = 7 (exponentul de cifrare).

Răspuns: C = 70.

Exerciţiul 22.3.6. Să se descifreze mesajul C = 70, utilizând sistemul RSA


cu următorii parametrii: n = 187 (modulul de cifrare), d = 23 (exponentul de
descifrare).

Răspuns: M = 9.

Exerciţiul 22.3.7. Să se cifreze mesajul M = 3, utilizând sistemul RSA cu


următorii parametrii: n = 35237 (modulul de cifrare), e = 11 (exponentul de
cifrare).
EXERCIŢII PROPUSE 229

Răspuns: C = 962.

Exerciţiul 22.3.8. Să se descifreze mesajul C = 962, utilizând sistemul RSA


cu următorii parametrii: n = 35237 (modulul de cifrare), d = 31691 (exponentul de
descifrare).

Răspuns: M = 3.

Exerciţiul 22.3.9. Să se cifreze mesajul M = 5, utilizând sistemul RSA cu


următorii parametrii: n = 221 (modulul de cifrare), e = 11 (exponentul de cifrare).

Răspuns: C = 164.

Exerciţiul 22.3.10. Să se descifreze mesajul C = 164, utilizând sistemul RSA


cu următorii parametrii: n = 221 = 13 · 17 (modulul de cifrare), e = 11 (exponentul
de cifrare).

Răspuns: M = 5, d = 35.

Exerciţiul 22.3.11. Să se cifreze mesajul M = 4, utilizând sistemul RSA cu


următorii parametrii: N = 209 (modulul de cifrare), e = 11 (exponentul de cifrare).

Rezolvare: Criptograma este: C = M e = 411 = 92 mod 209.

Exerciţiul 22.3.12. Să se descifreze mesajul C = 92, utilizând sistemul RSA


cu următorii parametrii: N = 209 = 11 · 19 (modulul de cifrare), e = 11 (exponentul
de cifrare).

Rezolvare: Deoarece se cunoaşte factorizarea N = 11·19, se poate calcula ϕ(N ) =


18 · 10 = 180, d = 131, M = 4.
230 SISTEMUL DE CIFRARE RSA
Capitolul 23

SISTEMUL DE CIFRARE
ELGAMAL

23.1. Breviar teoretic


Algoritmul de cifrare ElGamal este definit de un număr prim p şi un element
g ∈ Zp∗ primitiv, numit generator. Pentru cheia privată x ∈ Zp∗ se calculează y =
g x mod p, cheia publică fiind tripletul (y, g, p).
Pentru a cifra un mesaj M ∈ Zp se alege aleatoriu k ∈ Zp−1 , textul cifrat fiind
(y1 , y2 ) = (g k mod p, M y k mod p).
Pentru a descifra mesajul (y1 , y2 ) se calculează y2 (y1x )−1 mod p.

23.2. Exerciţii rezolvate


Exerciţiul 23.2.1. Să se cifreze mesajul M = 4 cu ajutorul algoritmului ElGa-
mal cu parametrii p = 17, g = 14, x = 2.

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

23.3. Exerciţii propuse


Exerciţiul 23.3.1. Să se cifreze mesajul 5 cu ajutorul algoritmului ElGamal cu
parametrii p = 23, g = 14, x = 2. Valoarea k utilizată pentru cifrare este 7.

Răspuns: Mesajul cifrat este (19, 11).

Exerciţiul 23.3.2. Să se cifreze mesajul 5 cu ajutorul algoritmului ElGamal cu


parametrii p = 23, g = 14, x = 2. Valoarea k utilizată pentru cifrare este 9.

Răspuns: Mesajul cifrat este (21, 20).

Exerciţiul 23.3.3. Să se cifreze mesajul 3 cu ajutorul algoritmului ElGamal cu


parametrii p = 47, g = 14, x = 3. Valoarea k utilizată pentru cifrare este 5.

Răspuns: Mesajul cifrat este (3, 34).

Exerciţiul 23.3.4. Să se cifreze mesajul 8 cu ajutorul algoritmului ElGamal cu


parametrii p = 47, g = 4, x = 2. Valoarea k utilizată pentru cifrare este 3.

Răspuns: Mesajul cifrat este (17, 9).

Exerciţiul 23.3.5. Să se cifreze mesajul 4 cu ajutorul algoritmului ElGamal cu


parametrii p = 23, g = 7, x = 3. Valoarea k utilizată pentru cifrare este 3.

Răspuns: Mesajul cifrat este (21, 14).

Exerciţiul 23.3.6. Să se descifreze mesajul (17, 9) cu ajutorul algoritmului El-


Gamal cu parametrii p = 47, g = 4, x = 2.

Răspuns: Mesajul clar este 8.

Exerciţiul 23.3.7. Să se descifreze mesajul (3, 34) cu ajutorul algoritmului El-
Gamal cu parametrii p = 47, g = 14, x = 3.

Răspuns: Mesajul clar este 3.

Exerciţiul 23.3.8. Să se descifreze mesajul (21, 14) cu ajutorul algoritmului


ElGamal cu parametrii p = 23, g = 7, x = 3.

Răspuns: Mesajul clar este 4.


Capitolul 24

ARITMETICA PE CURBE
ELIPTICE

24.1. Breviar teoretic


Definiţia 24.1.1. O curbă eliptică E este constituită din elemente (numite
puncte) de tipul (x, y) ce satisfac ecuaţia:

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.

O curbă eliptică E are o structură de grup abelian ı̂mpreună cu operaţia adunare.


Adunarea a două puncte de pe o curbă eliptică este definită ı̂n concordanţă cu o
mulţime simplă de reguli (vezi figura 24.1).
Fiind date două puncte pe E, P1 (x1 , y1 ) şi P2 (x2 , y2 ), avem următoarele cazuri:
- dacă x2 = x1 şi y2 = −y1 atunci P1 + P2 = O.
- altfel P1 + P2 = (x3 , y3 ), unde:
½
x3 = λ2 − x1 − x2
y3 = λ(x1 − x3 ) − y1
cu  y −y
 2 1
 , dacă P1 6= P2
x2 − x1
λ= 3x21 + a

 , dacă P1 = P2 .
2y1

233
234 ARITMETICA PE CURBE ELIPTICE

Figura 24.1: Operaţia de adunare pe o curbă eliptică.

Observaţia 24.1.1. A nu se confunda punctul la infinit O cu perechea (0, 0).


Punctul la infinit aparţine tuturor curbelor eliptice, ı̂n timp ce punctul (0, 0) este
un element doar pentru curbele eliptice cu parametrul b = 0.

24.2. Exerciţii rezolvate


Exerciţiul 24.2.1. Fie curba eliptică y 2 = x3 + 7x + 4 definită peste F71 . Să se
adune punctele P (15, 17) şi Q(43, 24).

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.

24.3. Exerciţii propuse


Exerciţiul 24.3.1. Fie curba eliptică y 2 = x3 + 2x + 3 definită peste F23 . Să se
adune punctele P (6, 1) şi Q(13, 8).

Răspuns: R(5, 0).

Exerciţiul 24.3.2. Fie curba eliptică y 2 = x3 + 7x + 4 definită peste F71 . Se dă


punctul P (15, 17). Aflaţi 2P .

Răspuns: (66, 25).

Exerciţiul 24.3.3. Fie curba eliptică y 2 = x3 + x + 6 definită peste F11 . Să se


arate că punctul (2, 7) este un generator al punctelor de pe curba eliptică.

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.

Exerciţiul 24.3.4. Fie curba eliptică y 2 = x3 + 6x + 11 definită peste F17 . Se


dă punctul P (6, 5). Aflaţi 2P .

Răspuns: (1, 1).

Exerciţiul 24.3.5. Fie curba eliptică y 2 = x3 + x + 3 definită peste F7 . Arătaţi


că punctul (4, 6) este un generator al punctelor de pe curba eliptică.
236 ARITMETICA PE CURBE ELIPTICE

Răspuns: Succesiv obţinem 1P = (4, 6), 2P = (6, 1), 3P = (5, 0), 4P = (6, 6),
5P = (4, 1), 6P = O.

Exerciţiul 24.3.6. Fie curba eliptică y 2 = x3 + 9 definită peste F37 . Se dă


punctul P (6, 22). Aflaţi 2P .

Răspuns: (35, 1).

Exerciţiul 24.3.7. Fie curba eliptică y 2 = x3 + 9 definită peste F37 . Se dau


punctele P (6, 22) şi Q(8, 15). Aflaţi P + Q.

Răspuns: (26, 11).

Exerciţiul 24.3.8. Fie curba eliptică y 2 = x3 + 11x + 20 definită peste F23 . Se


dau punctele P (7, 7) şi Q(15, 15). Aflaţi P + Q.

Răspuns: (2, 21).

Exerciţiul 24.3.9. Fie curba eliptică y 2 = x3 + 7x + 11 definită peste F23 . Se


dau punctele P (21, 14) şi Q(7, 9). Aflaţi P + Q.

Răspuns: (22, 7).

Exerciţiul 24.3.10. Fie curba eliptică y 2 = x3 + 5x + 5 definită peste F17 . Se


dă punctul P (3, 8). Aflaţi 3P .

Răspuns: (12, 5).

Exerciţiul 24.3.11. Fie curba eliptică y 2 = x3 + 3x definită peste F11 . Arătaţi


că punctele P (0, 0) şi Q(1, 2) aparţin curbei. Aflaţi P + Q.

Răspuns: Cele 2 puncte satisfac fiecare ecuaţia curbei eliptice. Suma lor este
(3, 5).

Exerciţiul 24.3.12. Fie curba eliptică y 2 = x3 + 6x + 11 definită peste F17 . Se


dau punctele P (12, 3) şi Q(6, 12). Aflaţi P + Q.

Răspuns: (14, 0).


Capitolul 25

SISTEMUL DE CIFRARE
ELGAMAL PE CURBE
ELIPTICE

25.1. Breviar teoretic


Algoritmul ElGamal poate fi extins pe orice grup finit (G, ◦), ı̂n care problema
logaritmului discret este dificilă, ı̂n particular şi pe grupul punctelor de pe o curbă
eliptică.
Astfel, fie α ∈ G pentru care problema logaritmului ı̂n subgrupul H = {αi |i ≥ 0}
este dificilă. Pe baza cheii private x ∈ Z, se construieşte β = αx , cheia publică fiind
{G, α, β}.
Pentru a cifra un mesaj M se alege aleatoriu k ∈ Z|H| şi se aplică regula de
cifrare: E(M, k) = (αk , M ◦ β k ).
Mesajul clar m se recuperează din mesajul cifrat (y1 , y2 ) după regula: y2 ◦ (y1x )−1 .
Într-adevăr y2 ◦ (y1x )−1 = M ◦ β k ◦ ((αk )x )−1 = M ◦ αkx ◦ (αkx )−1 = M.

25.2. Exerciţii rezolvate


Exerciţiul 25.2.1. Să se cifreze mesajul (10, 9) utilizând curba eliptică (pub-
lică) E : y 2 = x3 + x + 6 pe Z11 cu ajutorul algoritmului ElGamal.

Rezolvare: Pentru a calcula punctele curbei eliptice se calculează valorile z =


x3 + x + 6 mod 11, se vede care din aceste valori sunt reziduri pătratice cu ajutorul
p−1
teoremei lui Euler (z este reziduu pătratic dacă şi numai dacă z 2 ≡ 1 mod p) şi

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:

E(M, k) = (kα, M + kβ).

Operaţia de descifrare pentru a obţine M este:

Dk (y1 , y2 ) = y2 − dy1 .

Fie d = 3. Se determină β = 3(2, 7) = (8, 3).


Considerând valoarea aleatoare k = 4, se obţine: E(M, k) = (4(2, 7), (10, 9) +
4(8, 3)) = ((10, 2), (10, 9) + (2, 4)) = ((10, 2), (3, 5))

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.

Rezolvare: Se determină mesajul clar ca fiind: M = y2 − dy1 = (3, 5) − 3(10, 2) =


(3, 5) − (2, 4) = (3, 5) + (2, 7) = (10, 9).

25.3. Exerciţii propuse


Exerciţiul 25.3.1. Se consideră algoritmul ElGamal precizat de parametrii E :
y 2 = x3 + x + 6 peste Z11 . Arătaţi că α = (2, 7) este un generator al grupului E.
Se consideră cheia privată d = 5. Să se cifreze mesajul (10, 9) cu valoarea aleatoare
k = 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)).

Exerciţiul 25.3.2. Se consideră algoritmul ElGamal precizat de parametrii E :


y2 = x3 + x + 6 peste Z11 . Arătaţi că α = (2, 7) este un generator al grupului E. Să
se descifreze mesajul ((8, 3), (5, 9)) cu ajutorul cheii private d = 5.
EXERCIŢII PROPUSE 239

Răspuns: Dk (y1 , y2 ) = (y2 − dy1 ) = ((5, 9) − 5(8, 3)) = ((5, 9) − (5, 2)) = ((5, 9) +
(5, 9)) = (10, 9).

Exerciţiul 25.3.3. Se consideră algoritmul ElGamal precizat de parametrii E :


y2 = x3 + x + 6 peste Z13 . Arătaţi că α = (4, 3) este un generator al grupului E.
Se consideră cheia privată d = 3. Să se cifreze mesajul (3, 7) cu valoarea aleatoare
k = 4.

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)).

Exerciţiul 25.3.4. Se consideră algoritmul ElGamal precizat de parametrii E :


y2 = x3 + x + 6 peste Z13 . Arătaţi că α = (4, 3) este un generator al grupului E. Să
se descifreze mesajul ((9, 4), (2, 9)) cu ajutorul cheii private d = 3.

Răspuns: Dk (y1 , y2 ) = (y2 −dy1 ) = ((2, 9)−3(9, 4)) = ((2, 9)−(4, 10)) = ((2, 9)+
(4, 3)) = (3, 7).

Exerciţiul 25.3.5. Se consideră algoritmul ElGamal precizat de parametrii E :


y 2 = x3 + x + 6 peste Z17 . Se alege generatorul subgrupului ciclic α = (1, 5) al lui
E. Se consideră cheia privată d = 7. Să se cifreze mesajul (8, 4) utilizând valoarea
aleatoare k = 3.

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)).

Exerciţiul 25.3.6. Se consideră algoritmul ElGamal precizat de parametrii E :


y2 = x3 + x + 6 peste Z17 . Să se descifreze mesajul ((7, 4), (16, 2)) cu ajutorul cheii
private d = 3.

Răspuns: Dk (y1 , y2 ) = (y2 − dy1 ) = ((16, 2) − 7(7, 4)) = ((16, 2) − (1, 5)) =
((2, 9) + (1, 12)) = (8, 4).

Exerciţiul 25.3.7. Se consideră algoritmul ElGamal precizat de parametrii E :


y 2 = x3 + 2x + 6 peste Z29 . Se alege generatorul subgrupului ciclic α = (20, 10) al lui
E. Se consideră cheia privată d = 5. Să se cifreze mesajul (10, 9) utilizând valoarea
aleatoare k = 6.

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

Exerciţiul 25.3.8. Se consideră algoritmul ElGamal precizat de parametrii E :


y2 = x3 + 2x + 6 peste Z29 . Să se descifreze mesajul ((14, 9), (5, 20)) cu ajutorul
cheii private d = 5.

Răspuns: Dk (y1 , y2 ) = (y2 − dy1 ) = ((5, 20) − 5(14, 9)) = ((5, 20) − (14, 9)) =
((5, 20) + (14, 20)) = (10, 9).

Exerciţiul 25.3.9. Se consideră algoritmul ElGamal precizat de parametrii E :


y 2 = x3 + 2x + 7 peste Z17 . Să se descifreze mesajul ((16, 2), (2, 6)) cu ajutorul cheii
private d = 5.

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

26.1. Breviar teoretic


În acest sistem de cifrare - de fapt o variantă a lui ElGamal - curba eliptică
este utilizată pentru mascare, textele clare şi cele cifrate putând fi formate din orice
elemente nenule (nu neapărat puncte din E).
Fie E o curbă eliptică peste Zp , p > 3 număr prim care conţine un subgrup ciclic
G ı̂n care problema logaritmului discret este dificilă. Pe baza cheii private d ∈ Z, se
construieşte β = dα, cheia publică fiind {E, α, β}.
Pentru a cifra mesajul m = (m1 , m2 ) ∈ Zp∗ × Zp∗ se alege aleatoriu k şi se con-
struieşte textul cifrat (y0 , y1 , y2 ) după regulile:
y0 = kα, (c1 , c2 ) = kβ, yi = ci mi , i = 1, 2.
La descifrare, cunoscând (y0 , y1 , y2 ) şi cheia privată d se determină textul clar
astfel:
(m1 , m2 ) = (y1 c−1 −1
1 mod p, y2 c2 mod p), unde dy0 = (c1 , c2 )

26.2. Exerciţii rezolvate


Exerciţiul 26.2.1. Se consideră algoritmul Menezes-Vanstone precizat de para-
metrii E : y 2 = x3 + x + 6 peste Z13 . Arătaţi că α = (4, 3) este un generator al
grupului E. Se consideră cheia privată d = 3. Să se cifreze mesajul (3, 7) cu valoarea
aleatoare k = 4.

Rezolvare: Curba eliptica are 13 puncte deci grupul E este ciclic şi orice element
este generator.

241
242 SISTEMUL DE CIFRARE MENEZES-VANSTONE

Se calculează β = 3α = 3 · (4, 3) = (3, 7)


Cifrarea mesajului (3, 7) cu valoarea aleatoare k = 4 se face dupa următoarea
formulă ek (x, k) = (y0 , y1 , y2 ) unde y0 = k · α, (c1 , c2 ) = k · β, yi = ci · xi (modp)
pentru i = 1, 2.
Calculăm y0 = 4 · (4, 3) = (9, 4) iar (c1 , c2 ) = 4 · β = 12α = (4, 10) deci c1 = 4 iar
c2 = 10
Se calculează şi y1 = 4 · 3 mod 13 = 12 şi y2 = 10 · 7 mod 13 = 5. Rezultatul
cifrarii mesajului (3, 7) cu valoarea aleatoare k = 4 este ((9,4), 12,5).

26.3. Exerciţii propuse


Exerciţiul 26.3.1. Se consideră algoritmul Menezes-Vanstone precizat de para-
metrii E : y 2 = x3 + x + 6 peste Z13 . Arătaţi că α = (4, 3) este un generator al
grupului E. Se consideră cheia privată d = 3. Să se cifreze mesajul (1, 1) cu valoarea
aleatoare k = 2.

Răspuns: β = (3, 7), (y0 , y1 , y2 ) = ((2, 9), 11, 3).

Exerciţiul 26.3.2. Se consideră curba eliptică E : y 2 = x3 + x + 6 peste Z13 .


Câte puncte are această curbă? Gasiţi un generator al punctelor de pe curba eliptică.
Câte elemente se pot cifra prin algoritmul ElGamal? Dar cu ajutorul algoritmului
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 .

Exerciţiul 26.3.3. Se consideră algoritmul Menezes-Vanstone precizat de para-


metrii E : y 2 = x3 +2x+5 peste Z11 . Cunoscând cheia publică (α, β) = ((3, 7), (4, 0)),
să se cifreze mesajul (5, 2) cu valoarea aleatoare k = 7.

Răspuns: (y0 , y1 , y2 ) = ((0, 7), 9, 0).

Exerciţiul 26.3.4. Se consideră algoritmul Menezes-Vanstone precizat de para-


metrii E : y 2 = x3 +7x+3 peste Z17 . Cunoscând cheia publică (α, β) = ((12, 8), (7, 2)),
să se cifreze mesajul (14, 7) cu valoarea aleatoare k = 7.

Răspuns: (y0 , y1 , y2 ) = ((12, 9), 13, 3).


EXERCIŢII PROPUSE 243

Exerciţiul 26.3.5. Se consideră algoritmul Menezes-Vanstone precizat de para-


metrii E : y 2 = x3 +3x+2 peste Z23 . Cunoscând cheia publică (α, β) = ((15, 15), (15, 8)),
să se cifreze mesajul (13, 19) cu valoarea aleatoare k = 2.

Răspuns: (y0 , y1 , y2 ) = ((18, 0), 4, 0).

Exerciţiul 26.3.6. Se consideră algoritmul Menezes-Vanstone precizat de para-


metrii E : y 2 = x3 +2x+7 peste Z23 . Cunoscând cheia publică (α, β) = ((5, 21), (16, 15)),
să se cifreze mesajul (8, 10) cu valoarea aleatoare k = 4.

Răspuns: (y0 , y1 , y2 ) = ((21, 8), 13, 12).

Exerciţiul 26.3.7. Se consideră algoritmul Menezes-Vanstone precizat de para-


metrii E : y 2 = x3 +2x+7 peste Z23 . Cunoscând cheia publică (α, β) = ((5, 21), (16, 15)),
să se cifreze mesajul (19, 2) cu valoarea aleatoare k = 5.

Răspuns: (y0 , y1 , y2 ) = ((15, 13), 5, 16).

Exerciţiul 26.3.8. Se consideră algoritmul Menezes-Vanstone precizat de para-


metrii E : y 2 = x3 +2x+5 peste Z17 . Cunoscând cheia privată d = 3, să se descifreze
mesajul (y0 , y1 , y2 ) = ((1, 12), 2, 10).

Răspuns: (m1 , m2 ) = (12, 5).

Exerciţiul 26.3.9. Se consideră algoritmul Menezes-Vanstone precizat de para-


metrii E : y 2 = x3 +5x+4 peste Z19 . Cunoscând cheia privată d = 2, să se descifreze
mesajul (y0 , y1 , y2 ) = ((17, 9), 12, 14).

Răspuns: (m1 , m2 ) = (11, 11).

Exerciţiul 26.3.10. Se consideră algoritmul Menezes-Vanstone precizat de para-


metrii E : y 2 = x3 +2x+7 peste Z23 . Cunoscând cheia privată d = 7, să se descifreze
mesajul (y0 , y1 , y2 ) = ((21, 8), 8, 4).

Răspuns: (m1 , m2 ) = (12, 11).


244 SISTEMUL DE CIFRARE MENEZES-VANSTONE
Capitolul 27

FUNCŢII DE DISPERSIE

27.1. Breviar teoretic


Problematica funcţiilor hash fiind deosebit de vastă, ı̂n cele ce urmează ne vom
opri numai asupra aspectelor strict necesare ı̂nţelegerii utilizării acestor funcţii ı̂n
cadrul algoritmilor de semnătură digitală.

Definiţia 27.1.1. O funcţie f se numeşte funcţie unidirecţională dacă:


a) fiind dat x, este uşor de calculat f (x);
b) fiind dat f (x), este greu de calculat x.

Definiţia 27.1.2. O funcţie f se numeşte funcţie unidirecţională cu trapă (trap-


door) dacă:
a) fiind dat x, este uşor de calculat f (x);
b) fiind dat f (x), este greu de calculat x;
c) pe baza unei informaţii secrete y, este uşor de calculat x din f (x).

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).

Definiţia 27.1.4. O funcţie H se numeşte funcţie hash unidirecţională dacă:


a) H este funcţie hash;
b) H este funcţie unidirecţională.

Pentru a putea fi folosite pentru semnături digitale, funcţiile hash unidirecţionale


trebuie să mai ı̂ndeplinească, printre altele una din următoarele două condiţii:
0 0
1) oricare ar fi M dat, este greu de găsit M astfel ı̂ncât H(M ) = H(M );

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

h(x1 , x2 ) = αx1 β x2 mod p.

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:

β = β (x4 −x2 )y mod p = α(x1 −x3 )y mod p.

Deci logα β = (x1 − x3 )(x4 − x2 )−1 mod (p − 1).


Cazul d = 2. Deoarece p − 1 = 2q, q număr prim, rezultă (x4 − x2 , q) = 1. Fie
y = (x4 − x2 )−1 mod q. Deci, există k număr ı̂ntreg astfel ı̂ncât (x4 − x2 )y = kq + 1.
Deoarece β q = −1 mod p, rezultă:

β (x4 −x2 )y = β (kq+1) = (−1)k β mod p = ±β mod p.


EXERCIŢII PROPUSE 247

Acest lucru conduce la:

α(x1 −x3 )y = β (x4 −x2 )y mod p = ±β mod p.

Suntem ı̂n una din următoarele două situaţii:

logα β = (x1 − x3 )(x4 − x2 )−1 mod (p − 1),

logα β = (x1 − x3 )(x4 − x2 )−1 + q mod (p − 1),

Se verifică direct care dintre rezultate este cel corect.


Cazul d = q. Deoarece 0 ≤ x2 ≤ q − 1 şi 0 ≤ x4 ≤ q − 1 rezultă faptul că
−(q − 1) ≤ x4 − x2 ≤ q − 1. Acest lucru arată faptul că este imposibil să avem
(x4 − x2 , p − 1) = q.
Cazul d = p − 1. Aceast caz este posibil numai dacă x4 = x2 , rezultă x1 = x3 .
S-a ajuns la (x1 , x2 ) = (x3 , x4 ), ceea ce contrazice ipoteza.

27.2. Exerciţii propuse


Exerciţiul 27.2.1. Fie f : Z2 n → Z2 n o funcţie hash pentru care problema
CSP 1 este satisfăcută. Definim funcţia g : Z2 2n → Z2 n prin g(x1 ||x2 ) = f (x1 ⊕ x2 ).
Arătaţi că g nu satisface problema CSP.

Exerciţiul 27.2.2. Fie p = 12347, α = 2, β = 8461 parametrii pentru funcţia


de dispersie Chaum - van Heijst - Pfitzmann. Fiind dată coliziunea α5692 β 144 =
α212 β 4214 mod p, să se calculeze logα β.

Răspuns: logα β = 5689.

Exerciţiul 27.2.3. Fie p = 15083, α = 154, β = 2307 parametrii pentru funcţia


de dispersie Chaum - van Heijst - Pfitzmann. Fiind dată coliziunea α7431 β 5564 =
α1459 β 954 mod p, să se calculeze logα β.

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

28.1. Breviar teoretic

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.

28.2. Exerciţii rezolvate


Exerciţiul 28.2.1. Să se semneze mesajul x = 101 cu ajutorul algoritmului
ElGamal specificat de parametrii următori: p = 467, α = 2, cheia privată a = 127,
alegând valoarea k = 213.

Rezolvare: Se calculează β = αa mod p = 2127 mod 467 = 132


Semnătura mesajului x = 101 cu k = 213 (de remarcat faptul că (213, 466) = 1
şi 213−1 mod 466 = 431) este:

γ = αk mod p = 2213 mod 467 = 29 şi δ = (101 − 127 · 29) · 431 mod 466 = 16.

249
250 SEMNĂTURA ELGAMAL

28.3. Exerciţii propuse


Exerciţiul 28.3.1. Să se semneze mesajul x = 100 cu ajutorul algoritmului
ElGamal specificat de parametrii următori: p = 163, α = 2, cheia privată a = 127,
alegând valoarea k = 215.

Răspuns: Semnătura mesajului este (γ, δ) = (52, 24).

Exerciţiul 28.3.2. Să se semneze mesajul x = 102 cu ajutorul algoritmului


ElGamal specificat de parametrii următori: p = 467, α = 2, cheia privată a = 127,
alegând valoarea k = 213.

Răspuns: Semnătura mesajului este (γ, δ) = (29, 447).

Exerciţiul 28.3.3. Să se semneze mesajul x = 57 cu ajutorul algoritmului El-


Gamal specificat de parametrii următori: p = 97, α = 3, cheia privată a = 27,
alegând valoarea k = 37.

Răspuns: Semnătura mesajului este (γ, δ) = (66, 39).

Exerciţiul 28.3.4. Să se semneze mesajul x = 29 cu ajutorul algoritmului El-


Gamal specificat de parametrii următori: p = 127, α = 5, cheia privată a = 13,
alegând valoarea k = 19.

Răspuns: Semnătura mesajului este (γ, δ) = (66, 89).

Exerciţiul 28.3.5. Să se semneze mesajul x = 78 cu ajutorul algoritmului El-


Gamal specificat de parametrii următori: p = 131, α = 7, cheia privată a = 19,
alegând valoarea k = 17.

Răspuns: Semnătura mesajului este (γ, δ) = (3, 93).

Exerciţiul 28.3.6. Mesajul x = 57 a fost semnat cu ajutorul algoritmului El-


Gamal specificat de parametrii următori: p = 97, α = 3, β = 70, obţinându-se
semnătura (γ, δ) = (66, 39). Este aceasta o semnătură validă?

Răspuns: Semnătura este validă deoarece se satisface relaţia de verificare β γ γ δ mod


p = αx mod p = 89.
EXERCIŢII PROPUSE 251

Exerciţiul 28.3.7. Mesajul x = 34 a fost semnat cu ajutorul algoritmului El-


Gamal specificat de parametrii următori: p = 131, α = 7, β = 16, obţinându-se
semnătura (γ, δ) = (3, 110). Este aceasta o semnătură validă?

Răspuns: Semnătura nu este validă deoarece nu se satisface relaţia de verificare


β γ γ δ mod p = 4; αx mod p = 9.

Exerciţiul 28.3.8. Mesajul x = 78 a fost semnat cu ajutorul algoritmului El-


Gamal specificat de parametrii următori: p = 131, α = 7, β = 16, obţinându-se
semnătura (γ, δ) = (3, 93). Este aceasta o semnătură validă?

Răspuns: Semnătura este validă deoarece se satisface relaţia de verificare β γ γ δ mod


p = αx mod p = 61.
252 SEMNĂTURA ELGAMAL
Capitolul 29

SEMNĂTURA DSA/ECDSA

29.1. Breviar teoretic


Fie p un număr prim de 512 biţi şi q un factor prim de 160 biţi ai lui p − 1 şi
α ∈ Zp ∗ o rădacină primitivă de ordin q a unităţii.
Cheia publică β se construieşte din cheia privată a: β = αa mod p. Semnătura
mesajului x, calculată cu ajutorul valorii aleatoare (secrete) k ∈ Zq∗ , este definită ca
fiind (γ, δ) unde:
(γ, δ) = ((αk mod p) mod q, (H(x) + aγ)k −1 mod q),
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 următoarea egalitate,
unde e1 = H(x)δ −1 mod q şi e2 = γδ −1 mod q:
(αe1 β e2 mod p) mod q = γ.
O variantă a DSA-ului este reprezentată de extensia acesteia pe curbele eliptice
(ECDSA). În această situaţie se lucrează pe curbă eliptică E peste Zq . Elementele
necesare algoritmului sunt:
G(xG , yG ) generatorul punctelor de pe curba eliptică;
n numărul elementelor de pe curba eliptică (sau ordinul lui G dacă G nu este
generator);
Ln numărul de biţi ai lui n;
dA cheia privată,dA ∈ [1, n];
QA = dA G cheia publică.
În contexul celor de mai sus, algoritmul ECDSA este următorul:
PASUL 1. Se calculează e = H(M ). Fie z cei cei mai semnificativi Ln biţi ai
lui e.
PASUL 2. Se alege valoarea aleatoare1 k in intervalul [1, n − 1].
1
valoarea k se numeşte cheie efemeră.

253
254 SEMNĂTURA DSA/ECDSA

PASUL 3. r = x1 mod n, unde (x1 , y1 ) = kG. Dacă r = 0 atunci revenim la


PASUL 2.
PASUL 4. s = k −1 (z + rdA ) mod n. Dacă r = 0 atunci revenim la PASUL 2.
PASUL 5. Semnătura este (r, s).
Verificarea semnăturii ECDSA (r, s se realizează după următorul algoritm.
PASUL 1. Dacă r, s ∈ / [1, n] semnătura este invalidă.
PASUL 2. Fie e = H(M ), z cei mai semnificativi Ln biţi ai lui e.
PASUL 3. Se calculează: w = s−1 mod n.
PASUL 4. Se calculează: u1 = zw mod n şi u2 = rw mod n.
PASUL 5. Fie (x1 , y1 ) = u1 G + u2 QA .
PASUL 6. Semnătura este validă dacă şi numai dacă r = x1 mod n.

29.2. Exerciţii rezolvate


Exerciţiul 29.2.1. Să se semneze mesajul x = 100 cu ajutorul algoritmului
DSA specificat de parametrii următori: p = 7879, q = 101, α = 170, valoarea
aleatoare utilizată k = 50, cheia secretă fiind a = 75. Verificaţi rezultatul obţinut.

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 = γ.

29.3. Exerciţii propuse


Exerciţiul 29.3.1. Să se semneze mesajul x = 101 cu ajutorul algoritmului
DSA specificat de parametrii următori: p = 7879, q = 101, α = 170, valoarea
aleatoare utilizată k = 50, cheia secretă fiind a = 75. Verificaţi rezultatul obţinut.

Răspuns: Semnătura mesajului este (γ, δ) = (94, 40). Cheia publică este β =
4567.
EXERCIŢII PROPUSE 255

Exerciţiul 29.3.2. Să se semneze mesajul x = 102 cu ajutorul algoritmului


DSA specificat de parametrii următori: p = 7879, q = 101, α = 170, valoarea
aleatoare utilizată k = 50, cheia secretă fiind a = 75. Verificaţi rezultatul obţinut.

Răspuns: Semnătura mesajului este (γ, δ) = (94, 38). Cheia publică este β =
4567.

Exerciţiul 29.3.3. Să se semneze mesajul x = 75 cu ajutorul algoritmului DSA


specificat de parametrii următori: p = 131, q = 13, α = 7, a = 3, valoarea aleatoare
utilizată k = 11. Verificaţi rezultatul obţinut.

Răspuns: Semnătura mesajului este (γ, δ) = (10, 6). Totuşi, semnătura nu se


verifică pentru ca ord(α) = 65 şi nu q = 13. În concluzie, algoritmul DSA este setat
impropriu.

Exerciţiul 29.3.4. Mesajul x = 502 a fost semnat cu ajutorul algoritmului


DSA specificat de parametrii următori: p = 617, q = 11, α = 113, β = 489, valoarea
aleatoare utilizată k = 21 şi s-a obţinut semnătura (γ, δ) = (3, 10). Este această
semnătură validă?

Răspuns: Semnătura este validă deoarece se satisface relaţia de verificare


(αe1 β e2 mod p) mod q = γ = 3.

Exerciţiul 29.3.5. Mesajul x = 99 a fost semnat cu ajutorul algoritmului DSA


specificat de parametrii următori: p = 7879, q = 101, α = 170, β = 4567, valoarea
aleatoare utilizată k = 50 şi s-a obţinut semnătura (γ, δ) = (94, 78). Este această
semnătură validă?

Răspuns: Semnătura nu este validă deoarece nu se satisface relaţia de verificare


(αe1 β e2 mod p) mod q 6= γ.

Exerciţiul 29.3.6. Mesajul x = 99 a fost semnat cu ajutorul algoritmului DSA


specificat de parametrii următori: p = 7879, q = 101, α = 170, β = 4567, valoarea
aleatoare utilizată k = 50 şi s-a obţinut semnătura (γ, δ) = (94, 44). Este această
semnătură validă?

Răspuns: Semnătura este validă deoarece se satisface relaţia de verificare


(αe1 β e2 mod p) mod q = γ = 94.
256 SEMNĂTURA DSA/ECDSA
Capitolul 30

PROTOCOLUL
DIFFIE-HELLMAN

30.1. Breviar teoretic


Fie p un număr prim, q un divizor prim al lui p − 1 şi α ∈ Zp∗ , element de ordin
q. Protocolul Diffie-Hellman (DH), ce returnează o cheie comună de sesiune K este
următorul:
PASUL 1. A genererază aleator a ∈ Zq∗ şi trimite lui B valoarea RA = αa (mod
p).
PASUL 2. B genererază aleator b ∈ Zq∗ şi trimite lui A valoarea RB = αb (mod
p).
PASUL 3. A calculează K = KA,B = RB a = αab .
PASUL 4. B calculează K = KB,A = RA b = αab .

30.2. Exerciţii rezolvate


Exerciţiul 30.2.1. Să se specifice cheia rezultată ı̂n urma aplicării protocolului
Diffie-Hellman specificat de parametrii: p = 25307, α = 2, a = 2009, b = 2010.

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

PASUL 3. A calculează K = KA,B = RB a = 115102009 mod 25307 = 21554.


PASUL 4. B calculează K = KB,A = RA b = 57552010 mod 25307 = 21554.

30.3. Exerciţii propuse


Exerciţiul 30.3.1. Să se specifice cheia rezultată ı̂n urma aplicării protocolului
Diffie-Hellman specificat de parametrii: p = 25307, α = 2, a = 3578, b = 19956.

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.

Exerciţiul 30.3.10. În urma aplicării protocolului Diffie-Hellman, una dintre


entităţile care doresc să genereze o cheie comună alege parametrul secret a = 1 (sau
b = 1). Cum poate un atacator determina cheia ı̂n acest caz?
260 PROTOCOLUL DIFFIE-HELLMAN
Capitolul 31

PROTOCOLUL BLOM

31.1. Breviar teoretic


Protocolul lui Blom asigură implementarea principiului compartimentării, ı̂ntre
oricare doi participanţi, dintr-o mulţime de n utilizatori. Protocolul se bazează pe
existenţa unei autorităţi de ı̂ncredere T . Fie n ≥ 3 numărul de utilizatori şi p ≥ n
un număr prim. Cheia, ce urmează a fi calculată de oricare doi participanţi este
un element din Zp ∗ . Vom nota prin k numărul maxim de intruşi1 ı̂mpotriva cărora
poate fi asigurată protecţia. Vom exemplifica protocolul pentru k = 1.
PASUL 0. T face public: numărul prim p şi pentru fiecare utilizator A un
număr aleator rA ∈ Zp , rA 6= rB pentru orice A 6= B.
PASUL 1. T generează aleatoriu trei numere a, b, c ∈ Zp şi formează polinomul2 :

f (X, Y ) = a + b(X + Y ) + cXY mod p.

PASUL 2. Pentru fiecare utilizator A, T va construi polinomul:

gA (X) = f (X, rA ) mod p,

pe care ı̂l va transmite, cu asigurarea confidenţialităţii, către A.


PASUL 3. Cheia stabilită de către A şi B va fi:

KA,B = KB,A = f (rA , rB ).


1
numit şi nivel de compartimentare.
P
2
pentru k arbitrar polimonul utilizat ı̂n cadrul protocolului este f (X, Y ) = ki,j=0 ai,j X i Y j mod
p, ai,j ∈ Zp , ai,j = aj,i pentru orice i, j.

261
262 PROTOCOLUL BLOM

Observaţia 31.1.1. Protocolul Blom, pentru k = 1, este necondiţionat sigur


ı̂mpotriva oricărui atac individual. Cu alte cuvinte, orice alt participant C nu poate
determina, din valorile publice rA şi rB , cheia KA,B . Acesta este utilizat ı̂n schema
de protecţie, utilizată de HDCP (High-bandwidth Digital Content Protection), ı̂n
generarea cheilor dintre sursă şi destinaţie (playere HD DVD sau televiziunea HD).

31.2. Exerciţii rezolvate

Exerciţiul 31.2.1. Specificaţi elementele de securitate pentru protocolul Blom,


ce asigură compartimentarea ı̂ntre trei utilizatori A, B, C, caracterizat de p = 17,
k = 1, cheile publice ale acestora fiind rA = 12, rB = 7 şi rC = 1. Valorile alese de
către T fiind a = 8, b = 7, c = 2.

Rezolvare: T construieşte polinomul:

f (X, Y ) = 8 + 7(X + Y ) + 2XY.

Polinoamele specifice fiecărui utilizator sunt:

gA (X) = 7 + 14X, gB (X) = 6 + 4X, gC (X) = 15 + 9X.

Cheile de compartimentare (secrete) sunt:

KA,B = 3, KA,C = 4, KB,C = 10.

A poate calcula KAB prin:

gA (rB ) = 7 + 14 · 7 mod 17 = 3.

B poate calcula KBA prin:

gB (rA ) = 6 + 4 · 12 mod 17 = 3.

31.3. Exerciţii propuse

Exerciţiul 31.3.1. Specificaţi cheile rezultate ı̂n urma protocolului Blom, ce


asigură compartimentarea ı̂ntre trei utilizatori A, B, C, caracterizat de p = 29, k = 1,
cheile publice ale acestora fiind rA = 1, rB = 2 şi rC = 3. Valorile alese de către T
fiind a = 13, b = 11, c = 17.
EXERCIŢII PROPUSE 263

Răspuns. Polinoamele secrete sunt gA (X) = 324+28X, gB (X) = 6+16X, gC (X) =


17 + 4X. Cheile rezultate sunt KAB = 22, KAC = 21, KBC = 25.

Exerciţiul 31.3.2. Specificaţi cheile rezultate ı̂n urma protocolului Blom, ce


asigură compartimentarea ı̂ntre trei utilizatori A, B, C, caracterizat de p = 29, k = 1,
cheile publice ale acestora fiind rA = 13, rB = 11 şi rC = 17. Valorile alese de către
T fiind a = 1, b = 2, c = 3.

Răspuns. Polinoamele secrete sunt gA (X) = 27+12X, gB (X) = 23+6X, gC (X) =


6 + 24X. Cheile rezultate sunt KAB = 14, KAC = 28, KBC = 9.
264 PROTOCOLUL BLOM
Capitolul 32

PROTOCOLUL SHAMIR DE
PARTAJARE A SECRETELOR

32.1. Breviar teoretic

Schema lui Shamir ı̂şi propune să partajeze cheia de cifrare S ∈ K = Zq la o


mulţime de n participanţi (q ≥ n + 1) astfel ı̂ncât pentru reconstrucţia cheii să fie
nevoie de cooperarea a cel puţin k dintre participanţi.
Iniţializare. n numărul participanţilor, k pragul minim de reconstrucţie al se-
cretului S. Se aleg n valori (publice) distincte x1 , . . . xn şi se distribuie fiecărui par-
ticipant i valoarea xi .
PASUL 1. Se alege de către autoritatea de distribuţie a secretului T P (Trusted
Party) un număr prim q suficient de mare (q ≥ n + 1). Se generează aleatoriu, de
către autoritatea de distribuţie a secretului T P , un polinom de grad k − 1:

k−1
X
P (X) = ai X i + S mod q.
i=1

PASUL 2 (distribuţia secretului). Autoritatea T P distribuie participantului i


valoarea yi = P (Xi ), i = 1, . . . , n.
PASUL 3 (recuperarea secretului). Cu informaţia oferită de k participanţi se
poate recupera, prin rezolvarea unui sistem liniar de k ecuaţii, valoarea S. Dacă
numărul participanţilor care pun la dispoziţie informaţia yi este mai mic decât k,
atunci nu se poate determina S.

265
266 PROTOCOLUL SHAMIR DE PARTAJARE A SECRETELOR

32.2. Exerciţii rezolvate


Exerciţiul 32.2.1. Să se partajaze secretul S = 13, pentru o schema majoritară
k = 3 din n = 5 participanţi, utilizând algoritmul lui Shamir specificat de q = 17,
valorile publice xi = i, i = 1, . . . , 5 şi valorile aleatoare a[1] = 10, a[2] = 2.

Rezolvare: Se obţine polinomul P (X) = a2 X 2 + a1 X + S = 2X 2 + 10X + 13.


Secretul se partajează ı̂n:
y1 = P (1) = (2 + 10 + 13) mod 17 = 8;
y2 = P (2) = (8 + 20 + 13) mod 17 = 7;
y3 = P (3) = (18 + 30 + 13) mod 17 = 10;
y4 = P (4) = (32 + 40 + 13) mod 17 = 0;
y5 = P (5) = (50 + 50 + 13) mod 17 = 11.

32.3. Exerciţii propuse


Exerciţiul 32.3.1. Să se partajaze secretul S = 4, pentru o schema majoritară
k = 3 din n = 5 participanţi, utilizând algoritmul lui Shamir specificat de q = 17,
valorile publice xi = i, i = 1, . . . , 5 şi valorile aleatoare a[1] = 10, a[2] = 2.

Răspuns: {16, 15, 1, 8, 2}.

Exerciţiul 32.3.2. Să se partajaze secretul S = 0, pentru o schema majoritară


k = 3 din n = 5 participanţi, utilizând algoritmul lui Shamir specificat de q = 17,
valorile publice xi = i, i = 1, . . . , 5 şi valorile aleatoare a[1] = 10, a[2] = 2.

Răspuns: {12, 11, 14, 4, 15}.

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.

Exerciţiul 32.3.6. Ce se ı̂ntâmplă dacă ı̂n protocolul lui Shamir se renunţă la


condiţia de primalitate asupra lui q?
268 PROTOCOLUL SHAMIR DE PARTAJARE A SECRETELOR
Capitolul 33

SCHEME DE PARTAJARE A
SECRETELOR BAZATE PE
CRT

33.1. Breviar teoretic


Una dintre primele scheme de partajare a secretelor, bazate pe CRT, este schema
Mignotte. Aceasta presupune faptul că şirul p1 < p2 < . . . < pn este un şir Mignotte:
k−2
Y k
Y
pn−i < pi .
i=0 i=0

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.

33.2. Exerciţii rezolvate

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

Rezolvare: S1 = S mod 5 = 0, S2 = S mod 7 = 5, S3 = S mod 9 = 6, S4 =


S mod 11 = 10, S5 = S mod 13 = 12. Spre exemplu, grupul {P1 , P3 , P4 } trebuie să
rezolve problema:

 x ≡ 0 mod 5
x ≡ 6 mod 9

x ≡ 10 mod 11

ce are soluţie unică 285.


Capitolul 34

CANALE SUBLIMINALE

34.1. Breviar teoretic


În sistemul de autentificare ElGamal, A alege un număr prim mare q şi un element
primitiv α ∈ Zq . Valorile q şi α sunt publice. Printr-un canal sigur, A şi B stabilesc
un număr p ∈ Zq . Protocolul prin care A transmite lui B mesajul subliminal y ∈ Zq
prin utilizarea textului x este următorul:
PASUL 0. A calculeaza β = αy mod q.
PASUL 1. Se determină γ ca soluţie a ecuaţiei x = p · β + y · γ mod (q − 1).
PASUL 2. A trimite lui B tripletul (x, β, γ).
PASUL 3. B calculează a = (αp )β · β γ mod q.
PASUL 4. Dacă a = αx mod q atunci B decide că mesajul este autentic.
PASUL 5. B recuperează mesajul subliminal: y = (x − p · β) · γ −1 mod (q − 1).

34.2. Exerciţii rezolvate


Exerciţiul 34.2.1. Se consideră canalul subliminal ElGamal dat de q = 11 şi
α = 2. Să presupunem că se doreşte transmiterea mesajului y = 9 folosind cheia
secretă k = 0 şi textul cifrat x = 5. Care este mesajul ce se va transmite pe canalul
de comunicaţie?

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

34.3. Exerciţii propuse


Exerciţiul 34.3.1. Se consideră canalul subliminal ElGamal dat de q = 11 şi
α = 2. Să presupunem că se doreşte transmiterea mesajului y = 9 folosind cheia
secretă k = 8 şi textul cifrat x = 5. Care este mesajul ce se va transmite pe canalul
de comunicaţie?

Răspuns: {5, 6, 3}.

Exerciţiul 34.3.2. Se consideră canalul subliminal ElGamal dat de q = 11 şi


α = 2. Să presupunem că se doreşte transmiterea mesajului y = 1 folosind cheia
secretă k = 8 şi textul cifrat x = 5. Care este mesajul ce se va transmite pe canalul
de comunicaţie?

Răspuns: {5, 2, 9}.

Exerciţiul 34.3.3. Se consideră canalul subliminal ElGamal dat de q = 11,


α = 2 şi cheia secretă k = 8. Se recepţionează mesajul {5, 6, 3}. Acesta conţine
mesaje ascunse?

Răspuns: Mesajul recepţionat este autentic, mesajul subliminal fiind y = 9.

Exerciţiul 34.3.4. Se consideră canalul subliminal ElGamal dat de q = 11,


α = 2 şi cheia secretă k = 8. Se recepţionează mesajul {5, 6, 2}. Acesta conţine
mesaje ascunse?

Răspuns: Mesajul recepţionat nu este autentic.

Exerciţiul 34.3.5. Se consideră canalul subliminal ElGamal dat de q = 11,


α = 2 şi cheia secretă k = 8. Se recepţionează mesajul {5, 2, 9}. Acesta conţine
mesaje ascunse?

Răspuns: Mesajul recepţionat este autentic, mesajul subliminal fiind y = 1.

Exerciţiul 34.3.6. Se consideră canalul subliminal ElGamal dat de q = 11,


α = 2 şi cheia secretă k = 0. Se recepţionează mesajul {5, 6, 5}. Acesta conţine
mesaje ascunse?

Răspuns: Mesajul recepţionat este autentic, se ajunge la rezolvarea următoarei


ecuaţii 5 = 5 × y mod 10 ce nu are soluţie unică, verificarea autenticităţii se face prin
EXERCIŢII PROPUSE 273

repetarea procedeului de construcţie a mesajului ce se transmite. Se obţine mesajul


ascuns y = 9.

Exerciţiul 34.3.7. În cadrul protocolui ElGamal, de transmitere a mesajelor


subliminale, autentificatorul obţinut γ nu este relativ prim cu q − 1. Cum se rezolvă
această speţă?
274 CANALE SUBLIMINALE
Capitolul 35

PRINCIPII CRIPTOGRAFICE

Exerciţiul 1. Metoda one-time pad (OTP) cifrează un mesaj m prin aplicarea


operaţiei XOR cu o cheie secretă k. Având ı̂n vedere că o cheie bună are, statistic,
jumătate din biţi zero şi că operaţia XOR cu zero nu modifică nimic, rezultă că
metoda OTP lasă jumătate din mesaj ı̂n clar. Cu alte cuvinte, prin simpla observare
a unui text cifrat cu această metodă, un atacator cunoaşte jumătate din biţii textului
clar. Acest lucru ı̂nseamnă, de fapt, că metoda OTP este una foarte slabă? Cum
poate fi considerat ”‘perfect” un cifru bloc care cifrează numai jumătate din textul
clar?

Exerciţiul 2. Pentru verificarea semnăturii ElGamal este necesară efectuarea ope-


raţiei ax by mod p unde a, b sunt fixate iar x, y sunt variabile. Arăţi că numărul de
ı̂nmulţiri necesare pentru efectuarea acestui calcul este mai mic decât numărul de
operaţii necesare pentru a calcula ax by mod p prin două exponenţieri succesive.

Exerciţiul 3. Considerăm două numere prime p şi q. Fie ip = p−1 mod q si iq =


q −1 mod p iar n = p · q. Care este valoarea rezultată ı̂n urma operaţiei q · iq + p · ip ?
Puteţi explica cum poate fi folosită această valoare pentru a reduce stocarea cheii
secrete la implementarea RSA CRT?

Exerciţiul 4. Se doreşte semnarea a două mesaje cu algoritmul de semnătura El


Gamal. Cum putem calcula valorile g k1 şi g k2 pentru a produce semnăturile ı̂ntr-un
timp mai scurt decât cel necesar pentru a calcula două semnături secvenţiale?

Exerciţiul 5. Considerăm protocolul Fiat-Shamir unde secretul s este ales astfel


ı̂ncât ı̂ncât vs2 = 1 mod n, v fiind cheia publică. Protocolul este după cum urmeză:

275
276 PRINCIPII CRIPTOGRAFICE

• Alice alege un r aleator şi ı̂i trimite lui Bob x = r2 mod n;

• Bob răspunde cu un bit aleator e;

• Alice răspunde cu y = se r mod n;

• Bob verifică dacă y 2 = v e x mod n.

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 7. Un administrator de sistem are o cheie de 100 de biţi pe care doreşte


să o ı̂mpartă celor doi utilizatori ı̂n care are ı̂ncredere ı̂n mod egal. El doreşte ca
accesul la informaţie să fie posibilă numai când cei doi cooperează. Câti biţi din
cheie ar trebui să dea fiecăruia din cei doi utilizatori?

Exerciţiul 8. Pentru a grăbi verificarea semnăturilor Q e si de


Q tip RSA a mesajelor
mi , se foloseşte următoarea idee: se verifică dacă ( si ) = hash(mi ) mod n unde
”hash” reprezintă full domain hash - o schemă de semnătură bazată pe RSA care
mai ı̂ntâi aplică o funcţie hash şi apoi semnătura RSA. Arătaţi că această idee nu
este sigură pentru un exponent e mic şi propuneţi o contramăsură.

Exerciţiul 9. De ce următorul context este nesigur? O autoritate de ı̂ncredere


generează un modul RSA n a cărui factorizare rămâne secretă. Autoritatea furnizează
fiecărui utilizator din sistem o pereche (ei , di ) aşa ı̂ncât ei di = 1 mod φ(n) unde
i 6= j ⇒ di 6= dj .

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 11. După ce a studiat protocolul Diffie-Hellman, un tânăr criptograf de-


cide să ı̂l implementeze. Pentru a simplifica implementarea, el hotărăşte să folosească
grupul aditiv (Zp , +) ı̂n locul grupului multiplicativ (Z∗p , ·). În calitate de criptograf
cu experienţă, ce credeţi despre acest protocol?

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 13. Presupunem că n = p · q, unde p si q sunt numere prime distincte.


1) Calculaţi S = n + 1 − φ(n).
2) Care sunt rădăcinile ecuaţiei x2 − Sx + n? Daţi expresiile acestor rădăcini şi
explicaţi cum pot fi găsite p şi q cu ajutorul unui simplu algoritm pentru calculul
rădăcinilor pătrate ı̂ntregi?
3) Factorizaţi n ı̂n următoarele două cazuri:
a) n = 667, φ(n) = 616;
b) n = 15049, φ(n) = 14800.

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:

βi = αi+1 ⊕ E(βi−1 ; K).

Î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

ATACURI ÎN MEDIUL DE


IMPLEMENTARE

36.1. Breviar teoretic


Atacurile ı̂n mediul de implementare presupun o serie de măsurători hardware
asupra modului criptografic:
Atacuri prin măsurarea timpului de execuţie. Prin măsurarea timpului necesar
efectuării unor operaţii asupra cheii private, atacatorul poate determina exponenţii
utilizaţi ı̂n protocolul Diffie-Hellman, factorul RSA (ı̂n special asupra algoritmului
RSA ce foloseşte pentru semnătură lema chinezescă a resturilor CRT), precum şi o
serie de alte sisteme criptografice cum ar fi algoritmul de semnătură digitală DSS.
Atacuri prin măsurarea puterii consumate. Atacul cu ajutorul analizei simple
a puterii (SPA) constă ı̂n măsurarea puterii consumate de dispozitiv ı̂n timpul
operaţiei criptografice. Acest tip de atac se aplică, de regulă, dispozitivelor cu
sursă de tensiune exterioară (ca de exemplu smart-cardurile). Consumul de putere
depinde de instrucţiunea executată. Astfel, monitorizând consumul de putere, se
poate deduce secvenţa de instrucţiuni (codul sursă). Dacă secvenţa de instrucţiuni
depinde de lungimea cheii, atunci consumul de putere poate da informaţii despre
cheie. În majoritatea procesoarelor, patternul puterii consumate de o instrucţiune
depinde şi de valoarea operanzilor (de exemplu setarea unui bit ı̂ntr-un registru
consumă mai multă energie decât ştergerea acestuia). Măsurători efectuate asupra
mai multor intrări pot deduce valoarea operandului. Tehnica se numeşte analiza
diferenţială a puterii (DPA).
Atacuri cu ajutorul defecţiunilor (erorilor) hardware. Echipamentele hardware
pot genera erori (tranziente, latente sau induse) ı̂n timpul efectuarii unor operaţii
aritmetice. Prin exploatarea raţională a acestor erori se pot recupera cheia privată

279
280 ATACURI ÎN MEDIUL DE IMPLEMENTARE

pentru algoritmii de semnătură RSA şi Rabin. O serie de protocoale criptografice


cum ar fi Fiat-Schamir şi Schnorr se pot sparge prin folosirea judicioasă a rezultatelor
acestor erori.
Analiza diferenţială a defecţiunilor. Analiza diferenţială a defecţiunilor (DFA)
este o schemă ce se utilizează pentru recuperarea cheilor secrete ale unui sistem crip-
tografic dintr-un dispozitiv HSM (Hardware Security Module) securizat fizic. Mod-
elul de defect este acela al defectelor tranziente (aleatoare) şi al defectelor induse.
Metoda foloseşte la identificarea cheilor ı̂n cazul utilizării unor cifruri cunoscute (de
exemplu DES) şi/sau a unor cifruri cu algoritm necunoscut sau la reconstrucţia
algoritmului (cu o structură cunoscută).

36.2. Exerciţii propuse


Exerciţiul 36.2.1. Arătaţi că tehnica DPA poate fi accelerată folosind un com-
promis spaţiu-timp.

Rezolvare: Faceţi referire la articolul Computational Improvements to Differen-


tial Side Channel Analysis, NATO Advanced Research Workshop on Security and
Embedded Systems, August 2005.

Exerciţiul 36.2.2. Descrieţi un atac prin măsurarea timpului de execuţie asupra


unei proceduri de comparaţie a parolelor.

Exerciţiul 36.2.3. Pentru a proteja implementarea RSA de un atac prin mă-


surarea timpului de execuţie, dezvoltatorii decid să adauge la finalul procedurii un
timp de aşteptare de durată aleatoare, cuprins ı̂ntre 0 şi n tacturi de ceas. În acest
fel, se va elimina total riscul atacului sau acesta va fi doar ı̂ncetinit?

Exerciţiul 36.2.4. Numiţi 3 factori care determină forma graficului puterii con-
sumate de un microprocesor.

Rezolvare: Instrucţiunea, datele manipulate de instrucţiune şi adresa instrucţiunii.


Capitolul 37

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

• Calculare de rezumate de mesaj;


• Cifrare şi descifrare folosind diverse cifruri;
• testare clienţi/servere (SSL/TLS);
• Semnături şi cifrare de mail (S/MIME);
• Cereri, generări şi verificări de mărci temporare.
OpenSSL este unul dintre puţinele proiecte open source supuse validării de confor-
mitate cu standardului FIPS 140-2, utilizat ı̂n securitatea calculatoarelor, dezvoltat
de National Institute of Standards and Technology (NIST). Pachetul software ı̂n
sine nu este validat, fiind dezvoltată o componentă software a acestuia denumită
OpenSSL FIPS Object Module, aceasta fiind compatibilă cu OpenSSL fiind creată
pentru a oferi posibilitatea produselor ce folosesc API de tip OpenSSL de a fi su-
puse validării de confomitate FIPS 140-2. În ianuarie 2006 această componentă fost
certificată, aceasta fiind ı̂nsă revocată ı̂n iulie 2006 datorită unor nelămuriri privind
validitatea interacţionării modulului cu software extern. În februarie 2007 produsul
a fost recertificat.
Validarea OpenSSL FIPS Object Module este unică printre toate validările FIPS
140-2 prin faptul că producătorul pune la dispoziţie ı̂ntreg codul sursă. Prin urmare,
folosit fără nicio modificare şi construit pe orice platformă conform documentaţiei
pusă la dispoziţie se obţine direct un modul criptografic validat. Orice modificare
minoră asupra codului implică necesitatea revalidării, proces costisitor (aproximativ
50000$) şi ı̂ndelungat (ı̂ntre 6 şi 12 luni). Cea mai recentă validare open source
este OpenSSL FIPS Object Module (Software Version: 1.2), FIPS 140-2 certificate
#1051. În prezent nu există niciun alt produs open source supus validării FIPS
140-2 datorită lispei de finanţare. Validarea versiunilor precedente au fost finanţate
de sectorul comercial şi sponsori guvernamentali, o parte dintre aceştia preferând să
rămână anonimi.

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.

Exemplul 37.3.1. Algoritmul de cifrare ElGamal.

p (ordinul grupului), α (generatorul) numere prime publice;


a cheia privată, β := αa mod p cheia publică;
m mesajul clar;
k număr aleator secret;
286 RESURSE SOFTWARE

regula de cifrare: y1 := αk mod p; y2 := (m ∗ β k ) mod p;


regula de descifrare: des := y2 ∗ (y1a )−1 mod p.
> p:=17;

> alpha:=14;

> a:=2;

> beta:=alpha^a mod p;

> m:=4;

> k:=4;

> y1:=alpha^k mod p;

> y2:=(m*(beta^k)) mod p;

> text_cifrat:=(y1,y2);

> text_descifrat:=y2*(y1^a)^(-1) mod p;

Exemplul 37.3.2. Algoritmul de semnătură ElGamal.

p şi α numere prime publice;


a cheia secretă, β := αa mod p cheia publică;
x mesajul ce trebuie semnat;
k număr secret;
γ := αk mod p, δ := (x − a ∗ γ)k −1 mod (p − 1), sign := (γ, δ);
verificarea semnăturii: β γ ∗ γ δ mod p = αx mod p.
> p:=467;

> alpha:=2;

> a:=127;

> beta:=alpha^a mod p;

> x:=102;

> k:=15;

> gamma:=alpha^k mod p;

> delta:=(x-a*gamma)*k^(-1) mod (p-1);

> (beta^gamma*gamma^delta - alpha^x) mod p;

Exemplul 37.3.3. Algoritmul de semnătură DSA.

p şi q numere prime (publice);


α (public) rădăcina de ordin q a unităţii;
a cheia secretă, β = (αa ) mod p;
MAPLE 287

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;

> beta:=(alpha^a) mod p;

> x:=1234;

> k:=50;

> gamma:=(alpha^k mod p) mod q;

> delta:=(x+a*gamma)*k^(-1) mod q;

Exemplul 37.3.4. Protocolul Diffie-Hellman.

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;

> k:=((alpha^a) mod p)^b mod p;

Exemplul 37.3.5. Protocolul Blom.

p număr prim, n numărul de utilizatori;


k = 1 nivel de compartimentare (protocolul este neconditionat sigur ı̂mpotriva
atacului unui utilizator);
a, b, c coeficienţii polinomului;
A denumire generică participant protocol, rA cheia publică a lui A;
f (X, Y )a + b(X + Y ) + cXY polinom (simetric), gA (X) = f (X, rA ) polinomul
secret al lui A;
288 RESURSE SOFTWARE

K matricea cheilor de compartimentare(simetrică).


> p:=29;

> 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);

> for i from 1 to n do:

> g[i]:=eval(f(X,Y),Y=r[i]) mod p;

> end do;

> K:=array(1..n, 1..n);

> for i from 1 to n do:

> for j from 1 to n do:

> K[i,j]:=eval(g[i],X=r[j]) mod p;

> end do;

> end do;

> print(K);

Exemplul 37.3.6. Schema de partajare a lui Shamir.

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;

Exemplul 37.3.7. Recuperarea secretului din schema lui Shamir.

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]});

Exemplul 37.3.8. Canalul subliminal ElGamal.

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);

Exemplul 37.3.9. Extragerea datelor din canalul subliminal ElGamal.

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).

Problema 1. Obiectivul primei probleme este acela de a recunoaşte când s-a


folosit criptografia clasică (cifrurile Caesar, Vigenère, Hill etc) ı̂n mediul digital.
Scenariul ipotetic este următorul: găsim un fişier “ciudat, pe care nu l-am creat
noi, ı̂n calculatorul personal. Acest fişier, neededinformation.txt, este pus la
dispoziţie ı̂n cadrul problemei.
Se cere decriptarea informaţiei conţinute ı̂n acest fişier şi găsirea parolei ascunse
ı̂n interiorul său. Ştim că această parolă ı̂ncepe cu ”S”, se termină cu ”D” şi este
formată numai din majuscule.
Problema se poate rezolva foarte uşor folosind pachetul software CrypTool pen-
tru a face o criptanaliză a nedeedinformation.txt: Analysis à Symmetric encryp-
tion(classic) à Ciphertext-Only à Vigenère.
În urma acestei criptanalize rezultă pentru ı̂nceput că lungimea cheii folosite este
6, iar la următorul pas obţinem cheia ”SQUARE” cu ajutorul căreia putem decripta
1
http://www.iccs.fordham.edu/mitre/

291
292 APLICAŢII PRACTICE

textul conţinut ı̂n neededinformation.txt. La sfârşitul textului decriptat se află


şi parola pe care o căutam:
”PASSWORDFORTOMMOROWISSTRONGPASSWORDSAREGOOD”.

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) Chacun semble des yeux approuver mon courroux.


(b) Ma bouche mille fois lui jura le contraire.
(c) J‘embrasse mon rival mais c‘est pour l‘etouffer.
(d) De grâce, apprenez-moi, Seigneur, mes attentats.

3. Cifraţi textul ”Attaque à l‘aube ” cu ajutorul algoritmului de substituţie pre-


cizat mai jos.

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Ă

Care este textul cifrat obţinut?

(a) JOOJCXPJDJXGP
(b) SHHSMYVSWSYPV
(c) JOOJCXPJBJXGP
(d) SHHSMYVSZSYPV

4. Cifrul Vigenère reprezintă o modalitate de cifrare ı̂mbunătăţită a sistemelor


de cifrare cu substituţie simplă. În ce constă acesta?

(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.

5. Reprezentarea ı̂n baza 2 a numărului 1729 este:

(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?

(a) Proastă: sistemul reprezintă o variantă a sistemului lui Cezar.


(b) Bună, dacă adversarul nu cunoaşte algoritmul de cifrare.
(c) Foarte bună, cu condiţia să nu utilizeze cheia k decât o singură dată.
(d) Excelentă: sistemul reprezintă o variantă a algoritmului RSA.

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

8. Care dintre acronimele următoare desemnează un algoritm de cifrare de tip


bloc?

(a) AES
(b) HMAC
(c) SHA-1
(d) NIST

9. Inversul lui 17 modulo 100:

(a) este 83.


(b) este 53.
(c) este 1/17.
(d) nu există.

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:

(a) un text cifrat corespunzător lui m cu o cheie cunoscută numai de mine.


(b) un text cifrat corespunzător lui m cu o cheie cunoscută de toată lumea.
(c) imaginea lui m printr-o funcţie de dispersie (funcţie hash).
(d) imaginea lui m printr-un MAC folosind o cheie aleatoare.

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Ă

12. Construim un generator de numere pseudo-aleatoare care iniţializează cu x0


cu o valoare ı̂ntre 0 şi 999 şi determină xn+1 = 500xn + 789 mod 1000. În ce
condiţii aţi utiliza acest generator?

(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?

(a) Se obţine din parola introdusă pentru conectare, printr-un algoritm de


derivare a cheii precum PBKDF (Password Based Key Derivation Func-
tion).
(b) Provine din cheia publică a serverului, conţinută ı̂ntr-un certificat.
(c) Provine din cheia privată a serverului, divulgată clientului după stabilirea
conexiunii.
(d) Se obţine ı̂n urma unui schimb de chei ı̂ntre client şi server, precum schim-
bul de chei Diffie-Hellman.

14. Care este dificultatea de a factoriza un număr prim pe 1024 de biţi astăzi?

(a) Este simplu!


(b) Numărul poate fi factorizat cu ajutorul a câteva mii de calculatoare ac-
tuale care să ruleze ı̂ntre 1 şi 2 ani.
(c) Nimeni nu poate face asta momentan, dar poate se va reuşi de către
agenţii precum NSA.
(d) Acest lucru nu va fi posibil timp de mai multe milenii.

15. Algoritmul RSA (fără padding) este un algoritm de cifrare:

(a) simetric, tip bloc.


(b) simetric, tip fluid (debit).
(c) parţial homomorfic.
(d) bazat pe identitate.
ENUNŢURI 303

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?

Figura 39.1: Generatorul Geffe.

(a) LC= 640, P= 264 .


(b) LC=64 , P=(219 − 1)(221 − 1)(224 − 1).
(c) LC=876 , P=(219 − 1)(221 − 1)(224 − 1).
(d) Niciunul dintre răspunsuri nu este corect.

17. Fie secvenţa dată de reprezentarea binară (scrisă pe 8 biţi) a numărului i,


i = 0, ..., 255 :
| {z } 00000001
00000000 | {z } 00000010
| {z } 00000011
| {z } 00000100
| {z } ... 11111111
| {z }
Care este statistica testului frecvenţei aplicată acestei secvenţe binare? Este
secvenţa aleatoare, relativ la testul frecvenţei, la riscul de ordinul 1 de 5%?

(a) ftf = 256, şirul nu este aleatoriu.


(b) ftf = 1, şirul este aleatoriu.
(c) ftf = 0, şirul este aleatoriu.
(d) niciunul dintre răspunsuri nu este corect.

18. Care dintre următoarele afirmaţii sunt adevărate:

(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.

19. Care dintre următoarele afirmaţii sunt adevărate:

(a) Un registru de deplasare de lungime n are perioada de 2n − 1.


(b) Un registru de deplasare de lungime n are perioada maximă de 2n − 1.
(c) Un registru de deplasare de lungime n, cu polinomul caracteristic primi-
tiv, are perioada de 2n − 1.

20. Probabilitatea de coliziune a două mesaje de lungime n biţi procesate de


aceeaşi funcţie hash ideală, ce are ieşirea pe m biţi, este:

(a) 2−m .
(b) 2−n .
(c) 2−mn .
(d) 2m−n .
(e) 2n−m .
(f) Niciuna din valorile de mai sus.

21. Fie extensia Galois GF(32 ) generată de rădăcina polinomului X 2 − X − 1. În


această extensie valoarea log2α+1 (1 + α) este:

(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ă?

27. Descifraţi, cu ajutorul algoritmului RSA-CRT, indicând semnificaţiile elementelor


algoritmului, mesajul:
C = 9686 9613 7546 2206 1477 1409 2225 4355 8829 0575 9991 1245 7431 9874
6951 2093 0816 2982 2514 5708 3569 3147 6622 8839 8962 8013 3919 9055 1829
9451 5781 5154.
Textul clar este ı̂n limba engleză.
1
pachet de date.
2
L(X ⊕ Y ) = L(X) ⊕ L(Y ).
ENUNŢURI 307

Parametrii algoritmului sunt următorii:


a) exponentul de cifrare este e = 9007,
b) p = 3490 5295 1084 7650 9491 4784 9619 9038 9813 3417 7646 3849 3387
8439 9082 0577,
c) q = 0003 2769 1329 9326 6709 5499 6198 8190 8344 6141 3177 6429 6799
2942 5397 9828 8533.

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.

4. Răspuns: (d). Metoda (a) este doar o substituţie normală (compunerea a


2 permutări este tot o permutare). Metoda (b) este mai slabă decât prima
ı̂ntrucât expune mai multe informaţii despre textul clar. Metoda (c) se numeşte
substituţie polialfabetică.

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).

6. Răspuns: (c). Algoritmul este o variantă a one-time pad. Oferă securitate


perfectă dacă nu se utilizează cheia de criptare decât o singură dată. Poate fi
de asemenea considerat o variantă a cifrului lui Cezar, dar aplicat unei singure
litere şi cu un decalaj ales aleator. Utilizat ı̂n acest fel, cifrul lui Cezar ar fi
sigur. Sistemul nu are nicio legătură cu RSA. Răspunsul (b) nu ar satisface
principiul lui Kerckhoff: un sistem de criptare trebuie să rămână sigur când
adversarul cunoaşte tot despre acesta, mai puţin cheia utilizată.

7. Răspuns: (b). Operaţia inversă adunării cu k mod N este scăderea cu k mod


N.

8. Răspuns: (a). HMAC este MAC, SHA-1 este o funcţie de dispersie şi NIST
este o agenţie americană de standardizare.

9. Răspuns: (b). 53 × 17 = 1 mod 100

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

O cheie cunoscută de toată lumea ar conduce la determinare textului clar m,


ceea ce ar fi echivalent cu divulgarea mesajului m.

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.

14. Răspuns: (a). Factorizarea unui număr prim este imediată.

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.

16. Răspuns: (c). Se aplică proprietăţile generatorului Geffe.

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.

18. Răspuns: (a).

19. Răspuns: (b), (c). Un registru de deplasare de lungime n are 2n − 1 stări


posibile (starea nulă este exclusă). În situaţia ı̂n care polinomul caracteristic
este primitiv atunci el generează toate stările posibile.

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 .

21. Răspuns: (e).

22. Răspuns: (a).

23. Răspuns: a) A va determina două chei k şi k ∗ astfel ı̂ncât:


DES(”banul”; k) = DES(”stema”, k ∗ ).
Pentru acest lucru procedează după cum urmează:
i) A va construi două liste (DES(”banul”; k), k) şi (DES(”stema”; k ∗ ), k ∗ ),
pentru toate cheile k respectiv k ∗ . Listele sunt sortate ı̂n raport cu primul
câmp al fiecărei intrări (i.e. DES(”banul”; k) respectiv DES(”stema”; k ∗ )).
310 PROBLEME DE SINTEZĂ

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

Deci, p + 1 generează G. Pentru orice y ∈ G avem: y = logp+1 (x) dacă şi


numai dacă x = (p + 1)y mod p2 .
Deoarece (p + 1)y mod p2 = 1 + py, obţinem:
RĂSPUNSURI 311

x−1
y= mod p = L(x).
p

Acestă funcţie logaritm stă la baza algoritmului criptografic Okamoto-Uchiyama.

25. Răspuns: Să considerăm semnăturile pentru mesajele m şi m∗ . Semnăturile


sunt (r, s) şi (r, s∗ ). Avem:

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Ă

d) Fie M ∗ = M ⊕ ∆ un nou mesaj, unde ∆ este un şir de n biţi. Vom calcula


diferenţa dintre noul text cifrat C ∗ şi C:

C ∗ ⊕ C = (P ∗ ⊕ RC4(IV, K)) ⊕ (P ⊕ RC4(IV, K))


= P∗ ⊕ P
= (M ⊕ M ∗ )||(L(M ) ⊕ L(M ∗ ))
= ∆ ⊕ L(∆).

Deci, pentru orice ∆ nenul, adversarul cunoaşte faptul că C ∗ = C ⊕ (∆||L(∆))


care verifică CRC-ul. În concluzie acesta are (2n − 1) posibilităţi de alegere
pentru ∆ (şi C ∗ ). Proprietatea violată este cea de integritate a mesajului. O
concluzie ce se desprinde din acest exerciţiu este aceea că CRC-urile (cu sau
fără cheie) ne asigură protecţia contra erorilor de transmisie nu şi ı̂mpotriva
unui adversar maliţios.

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

[1] Abramowitz M., Stegun I.A., Handbook of Mathematical Functions, Wash-


ington, D.C., U.S. Government Printing Office, 1964.

[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.

[7] Atanasiu A., Securitatea Informaţiei, vol. 2, Protocoale de securitate, ed.


InfoData, Cluj, 2009.

[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.

[10] Bellman R. E., Teoria grafurilor, Editura Tehnică, Bucureşti, 1976.

[11] Bellman R., Dynamic Programming, Princeton University Press, 1957.

[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.

[17] Bondy J.A., Murty U.S.R., Graph Theory, Springer, 2008.

[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.

[20] Budnick F., Richard M., Vollmann T. E. , Principles of Operations


Research for Management, Homewood: Irwin, 1977.

[21] Chartrand G., Introductory Graph Theory, Dover, 1985.

[22] Clemen R., Making Hard Decisions: An Introduction to Decision Analysis,


2nd ed., Belmont CA: Duxbury Press, 1996.

[23] Cormen T., Leiserson C., Rivest R. Introduction to Algorithms MIT


Press, 1990.

[24] Dantzig, George B., Linear Programming and Extensions, Princeton:


Princeton U P, 1963.

[25] De Groot M., Optimal Statistical Decisions, Wiley Classics Library, 2004.

[26] Denardo E.V., Dynamic Programming: Models and Applications, Mineola,


NY: Dover Publications, 2003.

[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.

[30] Fryer K., Operational Reasearch, Operational Research Society.


BIBLIOGRAFIE 315

[31] Goodwin P., Wright G. Decision Analysis for Management Judgment, 3rd
ed., Chichester: Wiley 2004.

[32] Gibbons Alan, Algorithmic Graph Theory, Cambridge University Press,1985.

[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.

[35] Harary F., Graph Theory, Reading, MA: Addison-Wesley,1969

[36] Harary F., Palmer E., Graphical Enumeration, New York, NY: Academic
Press,1973.

[37] Harsanyi J. C., Reinhard S., A General Theory of Equilibrium Selection


in Games, Cambridge, Mass.: MIT Press, 1988.

[38] Heims S. J., John Von Neumann and Norbert Wiener: From Mathematics
to the Technologies of Life and Death, Cambridge, Mass.: MIT Press, 1980.

[39] Heinze C. D., Management Science: Introductory Concepts and Applica-


tions, 1982.

[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.

[46] McKinsey, Introduction to the Theory of Games, McGraw-Hill Book Com-


pany, Inc., New York.

[47] Menezes A.J. , Handbook of Applied Cryptography, CRC Press, 1997.


316 BIBLIOGRAFIE

[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.

[52] Owen G., Teoria Jocurilor, Editura Tehnică, Bucureşti, 1976.

[53] Pidd M., Tools for Thinking: Modelling in Management Science, J. Wiley &
Sons Ltd., Chichester; 2nd. Edition, 2003.

[54] Peterson M., An Introduction to Decision Theory, Cambridge University


Press,2009.

[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.

[59] Riker W. H., Ordeshook P. C., An Introduction to Positive Political The-


ory, Englewood Cliffs, N.J.: Prentice Hall, 1973.

[60] Robert C., The Bayesian Choice, 2nd ed., New York: Springer, 2007.

[61] Roth A. E., R. E. Verrecchia, The Shapley Value as Applied to Cost


Allocation: a Reinterpretation, Journal of Accounting Research 17 (1979):
295303.

[62] Rubinstein A., Modeling Bounded Rationality, Cambridge, Mass.: MIT


Press, 1998.

[63] Rumelt R. P., Schendel D. E., Teece D. J., Fundamental Issues in


Strategy: A Research Agenda, Boston: Harvard Business School Press, 1994.
BIBLIOGRAFIE 317

[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.

[67] Schneier B., Applied Cryptography, Adison-Wesley, 1998.

[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.

[73] Shubik M., A Game-Theoretic Approach to Political Economy, Vol. 2 of


Game Theory in the Social Sciences. Cambridge, Mass.: MIT Press, 1984.

[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.

[77] Simion E., Enciclopedie Matematică, Ediţie coordonată de M. Iosifescu, O.


Stănăşilă şi D. Ştefănoiu, Editura AGIR, ISBN 978-973-720-288-8, pp. 905-
944, 2010.
318 BIBLIOGRAFIE

[78] Smith J.Q., Decision Analysis: A Bayesian Approach, Chapman and Hall,
1988.

[79] Sniedovich M., Dynamic Programming: Foundations and Principles, Taylor


& Francis, 2010.

[80] Stokey N., Lucas R. E., Prescott E. Recursive Methods in Economic


Dynamics, Harvard Univ. Press, 1989.

[81] Taha H., Operational Research, Prentice Hall, 1994.

[82] Tomescu I., Introducere ı̂n combinatorică, Editura Tehnică, Bucureşti, 1970.

[83] S. Vaudenay, A Classical Introduction to Cryptography: Applications for


Communications Security, Springer-Verlag, 2005.

[84] Wald A., Contributions to the Theory of Statistical Estimation and Testing
Hypotheses, Annals of Mathematical Statistics 10 (4), 1939.

[85] Winston W., Operations Research: Applications and Algorithms, Duxbury


Press; 4th. Edition, 2003.

[86] Zidăroiu C., Programare liniară, Editura Tehnică, Bucureşti, 1983.

[87] Zidăroiu C., Programare dinamică, Editura Tehnică, Bucureşti, 1980.

S-ar putea să vă placă și