Sunteți pe pagina 1din 46

UNIVERSITATEA BABE-BOLYAI

Facultatea de Matematic i Informatic

INTELIGEN
ARTIFICIAL
Curs 4

Rezolvarea problemelor de cutare


Strategii de cutare informat
algoritmi inspirai de natur

Laura Dioan

Sumar
A. Scurt introducere n Inteligena Artificial (IA)
B. Rezolvarea problemelor prin cutare

Definirea problemelor de cutare


Strategii de cutare

C.

Strategii de cutare neinformate


Strategii de cutare informate
Strategii de cutare locale (Hill Climbing, Simulated Annealing, Tabu Search, Algoritmi
evolutivi, PSO, ACO)
Strategii de cutare adversial

Sisteme inteligente

Sisteme bazate pe reguli n medii certe


Sisteme bazate pe reguli n medii incerte (Bayes, factori de
certitudine, Fuzzy)
Sisteme care nva singure

Arbori de decizie
Reele neuronale artificiale
Maini cu suport vectorial
Algoritmi evolutivi

Sisteme hibride

Materiale de citit i legturi utile

capitolul 16 din C. Groan, A. Abraham, Intelligent


Systems: A Modern Approach, Springer, 2011

James Kennedy, Russel Eberhart, Particle Swarm


Optimisation, Proceedings of IEEE International Conference
on Neural Networks. IV. pp. 19421948, 1995
(05_ACO_PSO/PSO_00.pdf)

Marco Dorigo, Christian Blum, Ant colony optimization


theory: A survey, Theoretical Computer Science 344 (2005)
243 27 (05_ACO_PSO/Dorigo05_ACO.pdf)

Cutare local

Tipologie

Cutare local simpl - se reine o singur stare


vecin

Cutare tabu reine lista soluiilor recent vizitate


Hill climbing alege cel mai bun vecin
Simulated annealing alege probabilistic cel mai bun
vecin

Cutare local n fascicol (beam local search) se


rein mai multe stri (o populaie de stri)

Algoritmi evolutivi
Optimizare bazat pe comportamentul de grup (Particle
swarm optimisation)
Optimizare bazat pe furnici (Ant colony optmisation)

Algoritmi inspirai de natur

Care este cea mai bun metod de rezolvare a unei probleme?

Creierul uman

Mecanismul evoluiei

A creat roata, maina, oraul, etc


A creata creierul (mintea) uman

Simularea naturii

Cu ajutorul mainilor reele neuronale artificiale simuleaz mintea


uman

Maini de zbor, computere bazate pe ADN, computere cu membrane

Cu ajutorul algoritmilor

algoritmii evolutivi simuleaz evoluia naturii


algoritmii inspirai de comportamentul de grup simuleaz adaptarea
colectiv si procesele sociale dintr-un colectiv
Particle Swarm Optimisation (PSO)
http://www.youtube.com/watch?feature=endscreen&v=JhZKc1Mg
ub8&NR=1
http://www.youtube.com/watch?v=ulucJnxT7B4&feature=related
Ant Colony Optimisation (ACO)
http://www.youtube.com/watch?v=jrW_TTxP1ow

Algoritmi inspirai de natur

Inteligena de grup (colectiv)

O populaie de indivizi care interacioneaz n scopul atingerii unor


obiective prin adaptarea colectiv la un mediu global sau local
Metafor computaional inspirat de:

deoarece

zborul psrilor n form de V


furnicile aflate n cutarea hranei
roiurile de albine care i construiesc cuibul
bancurile de peti
controlul este distribuit ntre mai muli indivizi
comunicarea ntre indivizi se realizeaz local
comportamentul sistemului transcede din comportamentul individual
sistemul este robust i se poate adapta schimbrilor de mediu

Insecte sociale (2% din totalul insectelor):

Furnici
50% din insectele sociale
1 furnic are aprox. 1 mg Greutatea total a furnicilor greutatea total a
oamenilor
Triesc de peste 100 milioane de ani (oamenii triesc de aprox. 50 000 de ani)
Termite
Albine

Algoritmi inspirai de natur

Grup (roi - Swarm)

O colecie aparent dezorganizat de indivizi care se mic tinznd s


se grupeze, dar fiecare individ pare s se mite ntr-o direcie oarecare
n interiorul coleciei apar anumite procese sociale
Colecia este capabil s efectueze sarcini complexe

fr nici o ghidare sau control extern


fr nici o coordonare central

Colecia poate atinge performane care nu pot fi atinse de indivizi n


izolare

Adaptare colectiv auto-organizare

Mulimea mecanismelor dinamice care genereaz un comportament global ca rezultat al


interaciunii componentelor individuale
Regulile care specific interaciunea sunt executate doar pe baza unor informaii locale, fr
referine globale
Comportamentul global este o proprietate emergent a sistemului (i nu una impus din
exterior)

PSO
Aspecte teoretice
Algoritm
Exemplu
Proprieti
Aplicaii

PSO aspecte teoretice

Propus

Cutare

de Kennedy i Eberhart n 1995 http://www.particleswarm.info/


Inspirat de comportamentul social al stolurilor de psri i al
bancurilor de peti

Cooperativ, ghidat de calitatea relativ a indivizilor

Operatori de cutare

Un fel de mutaie

PSO aspecte teoretice

Elemente speciale

Metod de optimizare bazat pe:

Fiecare particul:

populaii ( AG) de particule ( cromozomi) care caut soluia optim


cooperare (n loc de competiie ca n cazul AG)

Se mic (deplaseaz n spaiul de cutare) i are o vitez (vitez mutare pt


c timpul este discret)
Reine locul (poziia) unde a obinut cele mai bune rezultate
Are asociat o vecintate de particule

Particulele coopereaz

Schimb informaii (legate de descoperirile fcute n locurile deja vizitate)


ntre ele
Fiecare particul tie fitnessul vecinilor ei a.. poate folosi poziia celui mai
bun vecin pentru a-i ajusta propria vitez

PSO aspecte teoretice


Ideea de baz: comportament cognitiv un individ i amintete
cunotinele acumultate n trecut (are memorie)

Where should
I move to?
Food : 80
Food : 50

Food : 100

PSO aspecte teoretice


Ideea de baz: comportament social un individ se bazeaz i pe
cunotinele celorlali membri ai grupului

Where should
I move to?
Bird 1
Food : 150

Bird 2
Food : 100

Bird 3
Food : 100

Bird 4
Food : 400

PSO algoritm

Schema general
1.

Crearea populaiei iniiale de particule

2.
3.

Evaluarea particulelor
Pentru fiecare particul

4.

Poziii aleatoare
Viteze nule/aleatoare

Actualizarea memoriei
Stabilirea celei mai bune particule din swarm (gBest) /
dintre particulele vecine (lBest)
Stabilirea celei mai bune poziii (cu cel mai bun fitness)
n care a ajuns pn atunci pBest
Modificarea vitezei
Modificarea poziiei

Dac nu se ndeplinesc condiiile de oprire, se revine la


pasul 2, altfel STOP

PSO algoritm
1.

Crearea populaiei iniiale de particule

Fiecare particul are asociat

Fiecare particul trebuie s poat:

o poziie potenial soluie a problemei


o vitez modific o poziie n alt poziie
o funcie de calitate (fitness)

interaciona (schimba informaii) cu vecinii ei


memora o poziie precedent
utiliza informaiile pentru a lua decizii

Iniializarea particulelor

poziii aleatoare
viteze nule/aleatoare

PSO algoritm
2.

Evaluarea particulelor
dependent de problem

PSO algoritm
3.

Pentru fiecare particul x


Actualizarea memoriei

Stabilirea celei mai bune particule din swarm (gBest) / dintre particulele
vecine (lBest)

Vecintate a unei particule

ntinderea vecintii

Global

Local
Tipul vecintii

Geografic

Social

Circular

global

1
2

geografic

social
3

6
5

PSO algoritm
3.

Pentru fiecare particul x


Actualizarea memoriei

Stabilirea celei mai bune particule din swarm (gBest) / dintre particulele
vecine (lBest)
Stabilirea celei mai bune poziii (cu cel mai bun fitness) n care a ajuns
pn atunci pBest

pBesti

PSO algoritm
3.

gBest/lBest

Pentru fiecare particul xi = (xi1,xi2,...,xiD)

Modificarea vitezei v i a poziiei x (pe fiecare dimensiune)

vid = w *vid + c1 * rand()* (pBest


xid = xid + vid

unde:

xid) + c2* rand() * (gBest

xid)

i=1,N (N nr total de particule); d = 1,D


w factor de inerie (Shi, Eberhart)
w*vid termen inerial foreaz particula s se deplaseze n aceeai
direcie ca i pn acum (tendin curajoas audacious)
balanseaz cutarea ntre explorare global (w mare) i local (w mic).
poate fi constant sau descresctoare (pe msura mbtrnirii grupului)
c1 - factor de nvare cognitiv
c1 * rand()* (pBest d xid) termen cognitiv foreaz particula s se
deplaseze spre cea mai bun poziie atins pn atunci (tendin de
conservare)
c2 - factor de nvare social
c2* rand() * (gBestd xid) termen social foreaz particula s se
deplaseze spre cea mai bun poziie a vecinilor; spirit de turm, de urmritor
Cei doi factori c1 i c2 pot fi egali sau diferii (c1 > c2 i c1 + c2 < 4 Carlise, 2001)

Fiecare component a vectorului vitezelor este restricionat la un


interval: [vmax, vmax] pentru a asigura pstrarea particulelor n
spaiul de cutare.

PSO proprieti

Principii n PSO:

Diferene fa de EC:

proximitate grupul trebuie s efectueze calcule n spaiu i timp


calitate grupul trebui s fie capabil s rspund la factorii calitativi ai mediului
stabilitate grupul nu trebuie s i schimbe comportamentul la fiecare sesizare
a mediului
adaptabilitate grupul trebuie s fie capabil s i schimbe comportamentul
atunci cnd costul schimbrii nu este prohibit.

nu exist un operator de recombinare direct schimbul de informaie are loc n


funcie de experiena particulei i n funcie de cea a celui mai bun vecin i nu n
funcie de prinii selectai pe baza fitness-ului.
Update poziie ~ similar cu mutaia
Nu se folosete selecia supravieuirea nu este legat de fitness.

Versiuni ale algoritmului de tip PSO

PSO
PSO
PSO
PSO

binar discret
cu mai muli termeni de nvare social
cu particule eterogene
ierarhic

PSO proprieti

PSO discret (binar)

Versiune a PSO pentru spaiu de cutare


discret
Poziia unei particule

Potenial soluie a problemei string binar


Se modific n funcie de viteza particulei

Viteza unei particule

element din spaiu continuu


se modific conform principiilor de la PSO standard
se interpreteaz ca probabilitatea de modificare a bitului corespunzator din poziia particulei
1, dac s (vij )
1
xij
, unde s (vij )
v
altfel
1 e ij
0,

PSO proprieti

Pericole

Particulele tind s se grupeze n acelai loc

Converg prea repede i nu reuesc s evadeze dintrun optim local


Soluia:
Reiniializarea unor particule

Deplasarea particulelor spre regiuni nefezabile

PSO proprieti

Analiza algoritmilor de tip PSO

Comportamentul dinamic al grupului poate fi analizat cu


ajutorul a 2 indici

Indicele de dispersie
Msoar gradul de mprtiere a particulelor n jurul
celei mai bune particule din grup
Media distanelor absolute (pe fiecare dimensiune)
ntre fiecare particul i particula cea mai bun
Explic gradul de acoperire (ntins sau restrns) a
spaiului de cutare
Indicele vitezei
Msoar viteza de micare a grupului ntr-o iteraie
Media vitezelor absolute
Explic cum (agresiv sau lent) se mic grupul

PSO aplicaii

Controlul i proiectarea antenelor


Aplicaii biologice, medicale, farmaceutice

Analiza tremurului n boala Parkinson


Clasificare cancerului
Predicia structurii proteinelor

Comunicare n reele
Optimizare combinatorial
Optimizri financiare
Analiza imaginilor i analiza video
Robotic
Planificare
Securitatea reelelor, detecia intruilor, criptografie,
criptanaliz
Procesarea semnalelor

ACO
Aspecte teoretice
Algoritm
Exemplu
Proprieti
Aplicaii

ACO aspecte teoretice

Propus

de Colorni i Dorigo n 1991 iniial pentru rezolvarea problemelor de


optimizare discret gen TSP (ca o contrapartid pentru AG)
http://iridia.ulb.ac.be/~mdorigo/ACO/about.html

inspirat de comportamentul social al furnicilor n cutarea unui drum ntre


cuib i o surs de hran

De ce furnici?

Cutare

Munca n colonie (de la cteva furnici pn la milioane de furnici)


Diviziunea muncii
Au comportament social complex

Cooperativ, ghidat de calitatea relativ a indivizilor

Operatori de cutare

Constructuvi, adugnd elemente n soluie

ACO aspecte teoretice

Elemente speciale

Problema de optimizare trebuie transformat ntr-o problem de


identificare a drumului optim ntr-un graf orientat

Furnicile construiesc soluia plimbndu-se prin graf i depunnd pe


muchii feromoni

Metod de optimizare bazat pe:

Colonii (AG) de furnici (n loc de cromozomi) care caut soluia optim


cooperare (n loc de competiie ca n cazul AG)

Fiecare furnic:

Se mic (deplaseaz n spaiul de cutare) i depune o cantitate de feromon pe drumul


parcurs
Reine drumul parcurs
Alege drumul pe care s-l urmeze n funcie de
Feromonul existent pe drum
Informaia euristic asociat acelui drum
Coopereaz cu celelalte furnici prin urma de feromon corespunztoare unui drum care
depinde de calitatea soluiei i
se evapor cu trecerea timpului

ACO aspecte teoretice

Furnici naturale

O colonie de furnici pleac n cutarea hranei

ACO aspecte teoretice

Furnici naturale

O colonie de furnici pleac n cutarea hranei


La un moment dat, n drumul lor apare un obstacol

ACO aspecte teoretice

Furnici naturale

O colonie de furnici pleac n cutarea hranei


La un moment dat, n drumul lor apare un obstacol
Furnicile vor ocoli obstacolul fie pe ruta A, fie pe ruta B

ACO aspecte teoretice

Furnici naturale

O colonie de furnici pleac n cutarea hranei


La un moment dat, n drumul lor apare un obstacol
Furnicile vor ocoli obstacolul fie pe ruta A, fie pe ruta B
Pentru c ruta A este mai scurt, furnicile de pe acest drum vor face
mai multe ture, deci vor lsa mai mult feromon
Concentraia de feromon va crete mai accelerat pe ruta A dect pe
ruta B a.. furniciile de pe ruta B vor alege (pe baz de miros) ruta A
Pentru c pe ruta B nu vor mai merge furnici i pentru c feromonii
sunt volatili, urma furnicilor de pe ruta B va disprea
Deci, furnicile se vor plimba doar pe cel mai scurt drum (ruta A)

A
feromon

ACO aspecte teoretice

Furnicile artificiale seamn cu furnicile reale

navigheaz de la cuib spre sursa de hran


descoper drumul mai scurt pe baza urmei de feromon

fiecare frunic execut micri aleatoare


fiecare furnic depoziteaz feromon pe drumul parcurs
fiecare furnic detecteaz drumul urmat de furnica ef,
nclinnd s-l urmeze
creterea cantitii de feromon de pe un drum crete acestuia
probabilitatea de a fi urmat de tot mai multe furnici

dar au anumite mbuntiri:

au memorie
pentru a reine aciunile efectuate au stare proprie (cu
istoricul aciunilor efectuate)
se pot ntoarce la cuib (si pe baza urmei de feromon)
nu sunt complet oarbe pot aprecia calitatea spaiului vecin
execut micri ntr-un timp discret
depun feromoni i n funcie de calitatea soluiei identificate

ACO aspecte teoretice

Urma de feromon are rolul

unei memorii colective dinamice distribuit (n


colonie)
unui depozit cu cele mai recente experiene de
cutare a hranei ale furnicilor din colonie

Furnicile pot comunica indirect i se pot


influena reciproc

prin modificarea i mirosirea acestui depozit


chimic
n vederea identificrii celui mai scurt drum de
la cuib pn la hran

ACO algoritm

Ct timp nu s-a ajuns la nr maxim de iteraii


1.
2.

Iniializare
Ct timp nu s-a parcurs numrul necesar de pai pentru identificarea
soluiei

Pentru fiecare furnic din colonie

3.

Se modific urma de feromon de pe drumurile parcurse de

4.

Se mrete soluia parial cu un element (furnica execut o mutare)


Se modific local urma de feromon corespunztor ultimului element adugat n
soluie

Toate furnicile/cea mai bun furnic

Se returneaz soluia gsit de cea mai bun furnic

ACO algoritm

3 versiuni principale n funcie de:

Regulile de tranziie de la o stare la alta (regulile de deplasare a furnicilor)


Momentul la care furnicile depun feromon:

Furnica deponent de feromon

pe parcursul construciei soluiei


la sfritul crerii unei soluii
Toate furnicile
Doar cea mai bun furnic

Versiuni:

Ant system (AS)

MaxMin Ant System (MMAS) AS, dar

Toate furnicile depun feromon dup construirea unei soluii complete (modificare
global colectiv)
doar cea mai bun frunic depune feromon dup construirea unei soluii complete
(modificare global a leader-ului)
feromonul depus este limitat la un interval dat

Ant Colony System (ACO) AS, dar

toate furnicile depun feromon la fiecare pas n construcia soluiei (modificare local
colectiv)
doar cea mai bun furnic depune feromon dup construirea unei soluii complete
(modificare global a leader-ului)

ACO exemplu

Problema comisului voiajor

Travelling salesman problem - TSP

s se gseasc un drum care s treac prin n orae (inclusiv


ntre primul i ultimul) astfel nct costul s fie minim i fiecare
ora s fie vizitat o singur dat.

ACO exemplu
1.

Iniializare:

t := 0 (timpul)
pentru fiecare muchie (i,j) se iniializeaz

ij(t ) c

(intensitatea urmei de feromon pe muchia (i,j) la momentul t)

ij 0

(cantitatea de feromon lsat pe muchia (i,j) de ctre toate furnicile)

se plaseaz aleator m furnici n cele n noduri-ora (m n)


fiecare furnic i modific memoria (lista cu oraele vizitate)

adaug n list oraul din care pleac n cutare

ACO exemplu pentru TSP


2.

Ct timp nu s-a parcurs numrul necesar de pai pentru


construcia soluiei (nr de pai = n)

Pentru fiecare furnic din colonie

Se mrete soluia parial cu un element (furnica execut o mutare)

fiecare furnic k (aflat n oraul i) alege urmtorul ora pe care l viziteaz (j) astfel:

unde:

arg max il il ,
j l permis k

J,

daca q q0
altfel

q numr aleator uniform distribuit n [0,1]


q0 parametru, 0 q0 1 (q0 = 0 AS/MMAS, altfel ACO)
J este un ora selectat cu probabilitatea

unde:

Regula aleatoare proporional

ij( t ) ij

p ijk (t ) is( t ) is
s permis k ( t )

0,

Regula pseudo-aleatoare proporional

j permis
altfel

pijk probabilitatea de tranziie a furnicii k situat n oraul i spre oraul j


ij

1
- vizibilitatea din oraul i spre oraul j (atractivitatea alegerii muchiei (i,j))
d ij

permisk oraele pe care le mai poate vizita a k-a furnic la momentul t

controleaz importana urmei (cte furnici au mai trecut pe muchia respectiv)

- controleaz importana vizibilitii (ct de aproape se afl urmtorul ora)

ACO exemplu pentru TSP


2.

Ct timp nu s-a parcurs numrul necesar de pai pentru


construcia soluiei (nr de pai = n)

Pentru fiecare furnic din colonie

Se mrete soluia parial cu un element (furnica execut o mutare)


Se modific local urma de feromon lsat de fiecare furnic pe ultimul element adugat n soluie

ij( t 1) (1 ) ij( t ) 0

unde:

coeficient de degradare a feromonului; [0,1]; pentru = 0 AS/MMAS, altfel ACO


0 valoarea iniial a feromonului
(i,j) ultima muchie parcurs de furnic

ACO exemplu pentru TSP


3.

Se modific urma de feromon de pe


drumurile parcurse de toate furnicile (AS)

Pentru fiecare muchie


Se calculeaz cantitatea unitar de feromoni lsat de a k-a furnic pe
muchia (ij)

Lk - dac a k-a furnic a folosit muchia (i,j)


0
k
ij

Q cantitatea de feromon lsat de o furnic.


Lk lungimea (costul) turului efectuat de a k-a furnic
m

k
Se calculeaz cantitatea total de feromoni de pe muchia (ij) ij ij
k 1

Se calculeaz intensitatea urmei


de feromoni
ca sum ntre evaporarea feromonilor
(t n)
(t)

(
1

)
*

ij
ij
ij
vechi i feromonul nou lsat

unde (0<<1) coeficientul de evaporare a urmei de feromon ntre 2 tururi complete

ACO exemplu pentru TSP


Se modific urma de feromon de pe

3.

cel mai bun drum (ACO)


cel mai bun drum parcurs de cea mai bun furnic (MMAS)
Pentru fiecare muchie a celui mai bun drum

Se calculeaz cantitatea unitar de feromoni lsat de cea mai bun furnic


pe muchia (ij)
ij

Lbest lungimea (costul) celui mai bun drum

1
Lbest

din iteraia curent


din toate iteraiile executate pn atunci

Se calculeaz intensitatea urmei de feromoni ca sum ntre evaporarea


feromonilor vechi i feromonul nou lsat

ij(t n ) (1 ) * ij( t ) * ijbest

max
min

unde (0<<1) coeficientul de evaporare a urmei de feromon ntre 2 tururi


complete
min i max limitele (inferioar i superioar) feromonului;

pentru min = - i max = + ACO, altfel MMAS

ACO proprieti

Proprieti

Algoritm iterativ
Algoritm care construiete progresiv soluia pe baza

Algoritm stocastic

Avantaje

Rulare nentrerupt i adaptabil schimbrii n timp real a datelor de intrare

Informaiilor euristice
Urmei de feromon

Ex. Pt TSP graful se poate modifica dinamic

Feedback-ul pozitiv ajut la descoperirea rapid a soluiei


Calculul distribuit evit convergena prematur
Euristica greedy ajut la gsirea unei soluii acceptabile nc din primele stadii
ale cutrii
Interaciunea colectiv a indivizilor

Dezavantaje

Converge ncet fa de alte cutri euristice


Funcioneaz relativ slab pentru instane cu mai mult de 75 de orae ale TSP
n AS nu exist un proces central care s ghideze cutarea spre soluiile bune

ACO aplicaii

Probleme de identificare a drumului


optim n grafe

Ex. Traveling Salesman Problem

Probleme de atribuiri quadratice

Probleme de optimizri n reele

Probleme de transport

Recapitulare

PSO

Algoritm de cutare local n fascicol


Potenialele soluii particule caracterizate prin:

Cutare cooperativ i perturbativ bazat pe

poziie n spaiul de cutare


Vitez
Poziia celei mai bune particule din grup
Cea mai bun poziie a particulei de pn atunci (particula are memorie)

ACO

Algoritm de cutare local n fascicol


Potenialele soluii furnici caracterizate prin:

Memorie rein paii fcui n construirea soluiei


Miros iau decizii pe baza feromonului depus de celelalte furnici
(comportament social, colectiv, colaborativ)

Cutare cooperativ i constructiv

Cursul urmtor
A. Scurt introducere n Inteligena Artificial (IA)
B. Rezolvarea problemelor prin cutare

Definirea problemelor de cutare


Strategii de cutare

C.

Strategii de cutare neinformate


Strategii de cutare informate
Strategii de cutare locale (Hill Climbing, Simulated Annealing, Tabu Search, Algoritmi
evolutivi, PSO, ACO)
Strategii de cutare adversial

Sisteme inteligente

Sisteme bazate pe reguli n medii certe


Sisteme bazate pe reguli n medii incerte (Bayes, factori de
certitudine, Fuzzy)
Sisteme care nva singure

Arbori de decizie
Reele neuronale artificiale
Maini cu suport vectorial
Algoritmi evolutivi

Sisteme hibride

Cursul urmtor
Materiale de citit i legturi utile

capitolul II.5 din S. Russell, P. Norvig, Artificial Intelligence:


A Modern Approach, Prentice Hall, 1995

capitolul 6 din H.F. Pop, G. erban, Inteligen artificial,


Cluj Napoca, 2004

documentele din directorul 06_adversial_minimax

Informaiile prezentate au fost colectate din


diferite surse de pe internet, precum i din
cursurile de inteligen artificial inute n anii
anteriori de ctre:

Conf. Dr. Mihai Oltean www.cs.ubbcluj.ro/~moltean

Lect. Dr. Crina Groan - www.cs.ubbcluj.ro/~cgrosan

Prof. Dr. Horia F. Pop - www.cs.ubbcluj.ro/~hfpop

S-ar putea să vă placă și