Studierea algoritmilor IAsi utilizarea acestora ˆn [614793]
MINISTERUL EDUCAT ¸ IEI, CERCET ˘ARII S ¸I INOV ˘ARII
UNIVERSITATEA DIN CRAIOV A
FACULTATEA DE S ¸TIINT ¸ E
LUCRARE DE DISERTAT ¸ IE
Studierea algoritmilor IAs¸i utilizarea acestora ˆn
dezvoltarea testelor online
Coordonator S ¸tiint ¸ific:
Lect.Univ.Dr. Claudiu Ionut ¸ POP ˆIRLAN
Student: [anonimizat] ¸a
Cuprins
1 Not ¸iuni Introductive 2
1.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Aplicat ¸ii IA 6
2.1 Domenii ˆın care este folosit ˘a IA . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Aplicat ¸ii de ultim ˘a or˘aˆın IA . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 Agent ¸i inteligent ¸i s ¸i c ˘autare neinformat ˘a 10
3.1 Agent ¸i Inteligent ¸i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Agent ¸i de c ˘autare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3 C ˘autare neinformat ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.1 Breadth-first search (BFS) . . . . . . . . . . . . . . . . . . . . . . 17
3.3.2 Depth-first search (DFS) . . . . . . . . . . . . . . . . . . . . . . . 18
3.3.3 Uniform-cost search (UCS) . . . . . . . . . . . . . . . . . . . . . 19
4 C ˘autare euristic ˘a(informat ˘a) 21
4.1 Euristici s ¸i algoritmul de c ˘autare Greedy . . . . . . . . . . . . . . . . . . . 21
4.1.1 Best-first search . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.1.2 Greedy best-first search . . . . . . . . . . . . . . . . . . . . . . . . 23
4.1.3 A* (A-star)search . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5 Preg ˘atirea mediului de dezvoltare 27
6 Prezentarea aplicat ¸iei 33
6.1 Prezentarea aplicat ¸iei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
7 Concluzii 34
7.1 Sectiunea 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
7.2 Subcapitol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1
Capitolul 1
Not¸iuniIntroductive
1.1 Introducere
Ce este Inteligent ¸a Artificial ˘a?
Inteligent ¸a artificial ˘a este o s ¸tiint ¸ ˘a s ¸i tehnologia bazat ˘a pe discipline precum Informa-
tica, Biologia, Psihologia, Matematica s ¸i Ingineria. O orientare major ˘a a Inteligent ¸ei Arti-
ficiale este ˆın dezvoltarea funct ¸iilor pe calculator asociate cu inteligent ¸a uman ˘a, cum ar fi
rat ¸ionamentul, ˆınvatarea s ¸i rezolvarea problemelor.
Potrivit tat ˘alui inteligent ¸ei artificiale, John McCarthy, este ,, S ¸tiint ¸a s ¸i ingineria de a
face mas ¸ini inteligente, ˆın special programe informatice inteligente ”.
Inteligent ¸a Artificial ˘a este o modalitate de a face un calculator, un robot controlat de
calculator sau un software care s ˘a gˆandeasc ˘a inteligent, ˆın acelas ¸i mod ˆın care g ˆandesc
oamenii inteligent ¸i.
Inteligent ¸a artificial ˘a (IA) se realizeaz ˘a studiind modul ˆın care g ˆandes ¸te creierul uman
s ¸i cum oamenii ˆınvat ¸ ˘a, decid s ¸i lucreaz ˘aˆın timp ce ˆıncearc ˘a s˘a rezolve o problem ˘a s ¸i apoi
folosesc rezultatele acestui studiu ca baz ˘a pentru dezvoltarea de software s ¸i sisteme inteli-
gente.
De la inventarea computerelor sau a mas ¸inilor, capacitatea lor de a ˆındeplini diverse
sarcini a continuat s ˘a creasc ˘a exponent ¸ial. Oamenii au dezvoltat puterea sistemelor infor-
matice ˆın ceea ce privesc diversele lor domenii de lucru, viteza lor cresc ˘atoare s ¸i diminuarea
dimensiunii ˆın raport cu timpul.
O ramur ˘a a informaticii numit ˘a Inteligent ¸a Artificial ˘a urm ˘areste crearea calculatoarelor
sau a mas ¸inilor la fel de inteligente ca fiint ¸ele umane.
2
CAPITOLUL 1. INTRODUCERE 3
Filozofia Inteligent ¸ei artificiale (IA)
ˆIn timp ce exploateaz ˘a puterea sistemelor informatice, curiozitatea omului, ˆıl conduce
s˘a seˆıntrebe: ,, Poate o mas ¸in ˘a s˘a gˆandeasc ˘a s ¸i s ˘a se comporte ca oamenii?, ˆIn ce m ˘asur˘a
mas ¸inile inteligente vor face parte din viat ¸a oamenilor ?, Sunt oamenii capabili s ˘a constru-
iasc˘a mas ¸ini cu adev ˘arat inteligente s ¸i dac ˘a da, cum le vor controla ? etc. ,,.
Astfel, dezvoltarea IA a ˆınceput cu intent ¸ia de a crea inteligent ¸ ˘a similar ˘aˆın mas ¸inile pe
care le g ˘asim s ¸i le privim foarte mult la oameni.
Obiectivele Inteligent ¸ei artificiale (IA)
Pentru a crea sisteme de expert ¸i – Sistemele care manifest ˘a comportament inteligente,
ˆınvat ˘a, demonstreaz ˘a, explic ˘a s ¸i sf ˘atuiesc utilizatorii.
Implementarea inteligent ¸ei umane ˆın mas ¸ini – Crearea de sisteme care s ˘aˆınteleaga,
s˘a gˆandeasc ˘a, s˘aˆınvet ¸e s ¸i s ˘a se comporte ca oamenii.
Ce contribuie la realizarea Inteligent ¸ei artificiale?
Din urm ˘atoarele domenii, una sau mai multe zone pot contribui la construirea unui
sistem inteligent:
CAPITOLUL 1. INTRODUCERE 4
Diferent ¸ele principale dintre folosirea program ˘arii cu s ¸i f ˘ar˘a Inteligent ¸a artificial ˘a sunt:
Lipsa inteligent ¸ei artificiale:
– Un program de pe un calculator f ˘ar˘a Inteligent ¸ ˘a Artificial ˘a poate r ˘aspunde la ˆıntreb ˘arile
specifice pe care intent ¸ioneaz ˘a s˘a le rezolve.
– Modificarea programului duce la modificarea structurii sale.
– Modificarea nu este rapid ˘a s ¸i usoar ˘a. Aceasta poate duce la afectarea negativ ˘a a pro-
gramului.
Folosind inteligent ¸a artificial ˘a:
– Un program de pe un calculator cu Inteligent ¸ ˘a Artificial ˘a poate r ˘aspunde la ˆıntreb ˘arile
generice pe care intent ¸ioneaz ˘a s˘a le rezolve.
– Programele care cont ¸in Inteligent ¸a Artificial ˘a pot absorbi noi modific ˘ari prin punerea
ˆımpreunarea unor informat ¸ii extrem de independente. Prin urmare, putet ¸i modifica chiar s ¸i
o singur ˘a bucat ˘a de informat ¸ie a programului, f ˘ar˘a a afecta structura sa.
– Modificarea rapid ˘a s ¸i usoar ˘a a programului.
Inteligent ¸a este capacitatea unui sistem de a calcula, rat ¸iona, percepe relat ¸iile s ¸i analo-
giile, ˆınvat ¸ ˘a din experient ¸ ˘a, stocheaz ˘a s ¸i preia informat ¸ii din memorie, rezolv ˘a probleme,
ˆınt ¸elege ideile complexe, foloses ¸te fluent limba natural ˘a, clasific ˘a, generalizeaz ˘a s ¸i se adap-
teaz˘a la situat ¸ii noi.
Inteligent ¸a este de mai multe feluri: inteligent ¸a lingvistic, inteligent ¸a muzical ˘a, inteligent ¸a
de logic ˘a-matematic ˘a, inteligent ¸a fizico-kinestezic ˘a, inteligent ¸a spat ¸ial ˘a, inteligent ¸a inter-
personal ˘a etc. In acest caz putem spune ca o mas ¸in ˘a sau un sistem det ¸ine inteligent ¸a artifici-
al˘a atunci c ˆand este echipat cu cel put ¸in una din cele c ˆateva feluri de inteligent ¸ ˘a prezentate
mai sus.
Inteligent ¸a este intangibil ˘a. Este compus ˘a din :
Rat ¸ionamentul- Este setul de procese care ne permite s ˘a oferim o baz ˘a pentru jude-
cat˘a, luare de decizii s ¸i predict ¸ie.
ˆInv˘at ¸area – Este activitatea de a dob ˆandi cunos ¸tint ¸e sau pricepere prin studiere, prac-
ticare, ˆınv˘at ¸are sau experimentare de ceva.
CAPITOLUL 1. INTRODUCERE 5
Rezolvarea problemelor- Este procesul ˆın care cineva percepe s ¸i ˆıncearc ˘a s˘a ajung ˘a
la o solut ¸ie dorit ˘a dintr-o situat ¸ie actual ˘a, luˆand o cale blocat ˘a de obstacole cunoscute
sau necunoscute.
Percept ¸ia – Este procesul de dob ˆandire, interpretare, selectare s ¸i organizare a informat ¸iilor
senzoriale.
Inteligent ¸a lingvistic ˘a – Este abilitatea cuiva s ˘a foloseasc ˘a, s˘aˆınteleag ˘a, s˘a vorbeasc ˘a
s ¸i s˘a scrie ˆıntr-o anumit ˘a limb ˘a. Este important ˘aˆın comunicarea interpersonal ˘a.
Diferent ¸a dintre inteligent ¸a omului s ¸i a mas ¸inilor este aceea c ˘a:
-Oamenii percep ˆın funct ¸ie de modele, ˆın timp ce mas ¸inile percep prin seturi de reguli
s ¸i date.
-Oamenii stocheaz ˘a s ¸i is ¸i reamintesc anumite informat ¸ii dup ˘a modele, ˆın schimb mas ¸inile
o fac prin c ˘autarea algoritmilor. De exemplu, num ˘arul 40404040 este us ¸or de memorat, de
stocat s ¸i de rechemat deoarece modelul sau este simplu.
-Oamenii pot descoperi obiectul complet chiar dac ˘a o parte din el lipses ¸te sau acel
obiect este distorsionat, ˆın schimb mas ¸inile nu pot face acest lucru.
Domeniul Inteligent ¸ei Artificiale este clasificat ˆın sarcini formale, sarcini mundane
(obis ¸nuite) s ¸i sarcini expert. Oamenii ˆınvat ¸ ˘a lucruri mundane (obis ¸nuite) de la nas ¸tere. Ei
ˆınvat ¸ ˘a prin folosirea percept ¸iei, vorbirii, limbajului etc. Ei ˆınvat ¸ ˘a mai t ˆarziu sarcinile for-
male s ¸i sarcinile de experti, ˆın aceast ˘a ordine. Pentru oameni, sarcinile obis ¸nuite sunt cele
mai us ¸or de ˆınvat ¸at. Aceleas ¸i sarcini mundane(obis ¸nuite) au fost puse ˆın aplicare s ¸i pentru
mas ¸ini. Anterior, toate lucr ˘arile IA au fost concentrate ˆın domeniul sarcinilor obis ¸nuite.
Mai t ˆarziu, sa dovedit c ˘a mas ¸ina necesit ˘a mai multe cunos ¸tiint ¸e, o reprezentare com-
plex˘a a cunos ¸tiint ¸elor s ¸i algoritmi complicat ¸i pentru gestionarea sarcinilor banale. Acesta
este motivul pentru care IA lucreaz ˘a acum mai bine ˆın domeniul sarcinii expert, deoarece
domeniul de activitate al expert ¸ilor necesit ˘a cunos ¸tiint ¸e de specialitate, care pot fi mai us ¸or
de reprezentat s ¸i de manipulat.
Capitolul 2
Aplicat ¸iiIA
2.1 Domenii ˆın care este folosit ˘a IA
Inteligent ¸a Artificial ˘a a fost dominant ˘aˆın diverse domenii. Iat ˘a o scurt ˘a enumerare a c ˆatorva
din domeniile ˆın care este s ¸i va fi folosit ˘a Inteligent ¸a Artificial ˘a:
Gaming – Inteligent ¸a artificial ˘a joac ˘a un rol crucial ˆın jocurile strategice, cum ar fi
sahul, pokerul, tic-tac-toe etc., unde mas ¸ina poate s ˘a se g ˆandeasc ˘a la un num ˘ar mare
de pozit ¸ii posibile bazate pe cunos ¸tint ¸e euristice.
Procesarea limbajului natural – Este posibil s ˘a interact ¸ionat ¸i cu computerul care ˆınt ¸elege
limba natural ˘a vorbit ˘a de oameni.
Sisteme expert – Un sistem expert este format dintr-o colect ¸ie de programe s ¸i de
informat ¸ii specifice, cu ajutorul caror ˘a se poate purta un dialog om-computer, ˆın ceea
ce prives ¸te rezolvarea problemelor. Exist ˘a cateva aplicat ¸ii care integreaz ˘a informat ¸ii
despre mas ¸in ˘a, software s ¸i informat ¸ii speciale pentru a da rat ¸ionament s ¸i consiliere.
Acestea ofer ˘a explicat ¸ii s ¸i sfaturi utilizatorilor.
Sisteme de viziune – aceste sisteme ˆınt ¸eleg, interpreteaz ˘a s ¸iˆınt ¸elege intrarea vizual ˘a
pe computer. De exemplu:
-Un avion de spionaj face fotografii, care sunt folosite pentru a afla informat ¸ii spat ¸iale
sau h ˘art ¸i din anumite zone.
-Medicii folosesc un sistem de expertiz ˘a clinic ˘a pentru a diagnostica pacientul.
-Polit ¸ia foloses ¸te un software pe calculator care recunoas ¸te chipul criminalului cu por-
tretul stocat de c ˘atre medicul legist.
6
CAPITOLUL 2. APLICAT ¸ II IA 7
Recunoas ¸terea limbajului natural – Unele sisteme inteligente sunt capabile s ˘a asculte
s ¸i s˘aˆınt ¸eleag ˘a limba ˆın termeni de propozit ¸ii s ¸i de semnificat ¸ii, ˆın timp ce un om
vorbes ¸te cu el. Se poate descurca cu accente diferite, cu cuvinte de argou, cu zgomot
pe fundal, cu schimbarea zgomotului uman cauzat de frig, etc.
Recunoas ¸terea scrierii de m ˆan˘a – Software-ul de recunoas ¸tere a scrierii de m ˆan˘a
cites ¸te textul scris pe h ˆartie sau pe ecran de un stiloul(exemplu: stiloul pentru ta-
blete). Poate recunoas ¸te formele literelor s ¸i le convertes ¸te ˆın text editabil.
Robot ¸ii inteligent ¸i – Robot ¸ii sunt capabili s ˘aˆındeplineasc ˘a sarcini date de un om. Ei
au senzori pentru a detecta date fizice din lumea real ˘a, cum ar fi lumina, caldura, tem-
peratura, miscarea, sunetul, ciocnirea s ¸i presiunea. Ei au procesoare eficiente, senzori
multipli s ¸i memorie imens ˘a, pentru a expune inteligent ¸a. In plus, ei sunt capabili s ˘a
ˆınvet ¸e din gres ¸elile lor s ¸i se pot adapta noului mediu.
Agent ¸ii – sunt entit ˘at ¸i computerizate care act ¸ioneaz ˘aˆın locul unui operator uman,
adun ˆand informat ¸ii de pe Internet, trimit ¸ ˆand mesaje pe e-mail sau filtr ˆandu-le pe cele
primite. Des ¸i funct ¸ioneaz ˘a pe baza unor ,,cuvinte cheie” s ¸i sunt ˆınc˘aˆın cercetare,
agent ¸ii vor deveni foarte utili, fiind de ajutor utilizatorului ca acesta s ˘a gaseasc ˘a,
de exemplu, numai s ¸tirile sau articolele care ˆıl intereseaz ˘a, astfel scutindu-l de ore
ˆıntregi de navigare inutil ˘a pe Internet.
Ret ¸ele neuronale – sunt sisteme care simuleaz ˘a inteligent ¸a prin reconstruirea tipurilor
de conexiuni fizice care se afl ˘aˆın creierul biologic. Din cauza limitelor impuse de
tehnologie, num ˘arul acestor conexiuni este foarte mic, ˆın comparat ¸ie cu cele c ˆateva
zeci de miliarde de conexiuni din creierul uman;
2.2 Aplicat ¸ii de ultim ˘a or˘aˆın IA
S˘a discut ˘am acum despre unele dintre aplicat ¸iile de ultim ˘a or˘a din inteligent ¸a artificial ˘a. IA
atinge multe aspecte ale viet ¸ii noastre.
Prima aplicat ¸ie la care ne putem g ˆandi este recunoas ¸terea vocii, ˆın care avem asistent ¸i
virtuali cum ar fi Siri de la Apple, Echo din Amazon,Google Now sau Cortana de la
Microsoft. Aces ¸ti asistent ¸i virtuali sar ˆın ajutorul utilizatorului f ˘acˆand diverse lucruri
cum ar fi: trimiterea unui e-mail, efectuarea unei program ˘ari la doctor, g ˘asirea unui
restaurant, realizarea unei comenzi pizza sau a unei mas ¸ina Uber, va spune vremea s ¸i
CAPITOLUL 2. APLICAT ¸ II IA 8
multe altele. Deci, acest tip de tehnologie utilizeaz ˘a ret ¸ele neuronale profunde pentru
a trata limbajul natural, prin ˆınt ¸elegerea s ¸i recunoas ¸terea vocii. ˆInc˘a se fac progre-
se bune ˆın acest domeniu, dar deocamdat ˘a le putem folosi doar adres ˆandˆıntreb ˘ari
simple.
A doua aplicat ¸ie popular ˘a este recunoas ¸terea scrisului de m ˆan˘a. La mijlocul anilor
’90, USPS, US Postal Services au devenit foarte interesat ¸i de sortarea automat ˘a a
adreselor scrise manual s ¸i a codurilor zip de pe plicuri. P ˆan˘a la sf ˆars ¸itul anilor ’80,
Yann LeCun, care este un cercetator eminent, face o descoperire profund ˘a cu aju-
torul ret ¸elor neuronale s ¸i astfel a publicat o solut ¸ie utiliz ˆand ret ¸ele neuronale pentru
recunoas ¸terea cifrelor scrise manual pe un plic. Aceeas ¸i metoda a fost abordat ˘a s ¸i
prentru recunoas ¸terea cifrelor de pe un CEC ˆın mas ¸inile ATM, prin urmare at ˆat s ¸i
pentru ˆıntregul proces de recunoas ¸tere a codurilor pos ¸tale s ¸i a sumelor de dolari de
pe CEC-uri. Verific ˘arile fii astfel complet automatizate s ¸i efectiv astfel s-au salvat
milioane de dolari pentru societate.
A treia aplicat ¸ie popular ˘a a inteligent ¸ei artificiale care este utilizat ˘a cu succes de mili-
oane de oameni este traducerea automat ˘a. Traducerea mecanic ˘a cu ajutorul mas ¸inilor
a existat ˆınc˘a de la ˆınceputul inteligent ¸ei artificiale, iar motivat ¸ia istoric ˘a a reprezentat-
o guvernul american care a vrut sa traduc ˘a un text rus ˆın limba englez ˘a. Din p ˘acate,
primul sistem utilizat pentru ceea ce numim noi traducere mecanic ˘a sau corespondet ¸ ˘a
unu-la-unu a es ¸uat complet. Traducerea automat ˘a a trecut prin urcus ¸uri s ¸i cobor ˆas ¸uri.
Ast˘azi traducerea automat ˘a a devenit statistic ˘a s ¸i vorbim despre traducerea automat ˘a
a mas ¸inilor care utilizeaz ˘a o cantitate vast ˘a de texte traduse disponibile (exemple:
din punct de vedere online, avem acces la o mult ¸ime de texte de la guvern, s ¸tiri etc
publicate at ˆatˆın limba rom ˆan˘a, cˆat s ¸i ˆın alte limbi). Des ¸i exist ˘a loc de ˆımbun ˘at˘at ¸iri,
traducerea automat ˘a a f˘acut progrese semnificative, iar una din aplicat ¸iile online de
traducere pe care o folosim cu tot ¸ii este ceea Google (Google Translate), care ˆın
momentul actual se poate ocupa de peste 100 de limbi.
A patra aplicat ¸ie popular ˘a evident a inteligent ¸ei artificiale este robotica. Cunoas ¸tem
ast˘azi nis ¸te robot ¸i precum Nao s ¸i Asimo. ˆIn ultimii ani s-au f ˘acut progrese semnifi-
cative, robot ¸ii fiind important ¸i ˆın aplicat ¸ii cum ar fi chirurgia robotica etc.
A cincea aplicat ¸ie a inteligent ¸ei artificiale care ar putea s ˘a ne suprind ˘a este System
Recomander. Aceste sunt sisteme de recomandare cum ar fi sistemele de recoman-
dare Netflix sau sistemul de recomandare de la Amazon care foloses ¸te filtrarea co-
laborativ ˘a pentru a examina istoria achizit ¸iilor dumneavoastr ˘a s ¸i istoria altor client ¸i
CAPITOLUL 2. APLICAT ¸ II IA 9
pentru a putea face recomand ˘ari. De exemplu, dac ˘a cump ˘arat ¸i un computer, Amazon
ar putea sugera at ˆat persoanele care au fost interesate de acel produs sau chiar l-au
achizit ¸ionat, c ˆat s ¸i produse care pot fi cump ˘arate pentru computer (tastatur ˘a, mouse,
boxe etc.). Acesta este de fapt nucleul sistemelor de recomandare, adic ˘a s˘a utilizeze
date s ¸i s ˘aˆınvet ¸e de la ele s ˘a fac ˘a astfel de recomand ˘ari. Acest tip de sistem il pu-
tem reg ˘asi chiar ˆın e-mail. Exist ˘a un filtru de spam ˆın e-mail, care ajut ˘a la sortarea
e-mailurilor dac ˘a acestea sunt spam sau non-spam. Acestea folosesc unele tehnici,
cum ar fi clasificatorii Bayes.
O alt ˘a aplicat ¸ie folosit ˘a pe scar ˘a larg ˘a s ¸i reus ¸it ˘a a inteligent ¸ei artificiale este detectarea
fet ¸ei. Tot ¸i folosim un smartphone pentru a face fotografii prietenilor, familiei etc.
Ori de c ˆate ori facem asta vom observa pe ecran lucruri gen dreptunghiuri ˆın jurul
fet ¸elor care indic ˘a detectarea, exist ˆand o metoda precis ˘a s ¸i rapid ˘a care face acest
lucru. Acest ˘a metod ˘a este numit ˘a Viola Johns, numit ˘a dup ˘a inventatorii lui, Paul
Viola s ¸i Michael Johns care au scris o lucrare despre aceast ˘a metodologie ˆın cadrul
unei conferint ¸e privind viziunea pe calculator s ¸i recunoas ¸terea modelelor ˆın 2001.
Aceasta a fost una dintre cele mai de succes aplicat ¸ii ale inteligent ¸ei artificiale.
Capitolul 3
Agent¸i inteligent ¸i s¸i c˘autare neinformat ˘a
3.1 Agent ¸i Inteligent ¸i
Un agent este orice poate fi v ˘azut ca percep ˆand mediul ˆınconjur ˘ator prin intermediul sen-
zorilor s ¸i care act ¸ioneaz ˘a asupra acelui mediu prin intermediul dispozitivelor de act ¸ionare.
Un agent poate fi reprezentat cu aceast ˘a diagram ˘aˆın care noi avem mediul s ¸i agentul.
Agentul det ¸ine nis ¸te senzori care ˆıl ajut ˘a s˘a simt ˘a mediul ˆınconjur ˘ator s ¸i primes ¸te percept ¸ii
de la acesta.
Agentul poate avea de asemenea actuatori care act ¸ioneaz ˘a asupra acelui mediu, acele
act ¸iuni generatoare sunt decizia ce trebuie luat ˘a s ¸i generarea de act ¸iuni.
Deci, prima parte de aici permite agentului de fapt s ˘a simt ˘a lumea, cu alte cuvinte s ˘a
simt˘a lumea ˆın care evolueaz ˘a. Cea dea doua parte este de a act ¸iona asupra acestei lumi.
In mijloc, avet ¸i un produs ˆın care agentul dat fiind ceea ce observ ˘a sau simte din lumea
ˆınconjur ˘atoare, va g ˆandi, va delibera sau va decide un alt termen pentru a decide ceea ce s ˘a
fac˘a pe baza a ceea ce simte.
Deci, ˆın general, at ¸i putut vedea asta ca un ciclu pentru agent ˆın care percepe mediul,
gˆandes ¸te sau hotaras ¸te ce s ˘a fac ˘a, act ¸ioneaz ˘a s ¸i as ¸a mai departe. As ¸a c ˘a avem un fel de bucl ˘a
sau ciclu care se ˆıntampl ˘aˆın cazul percept ¸iei, g ˆandirii sau act ¸iunii asupra acelui mediu.
10
CAPITOLUL 3. AGENT ¸ I INTELIGENT ¸ I S ¸I C ˘AUTARE NEINFORMAT ˘A 11
Ultimul aspect care trebuie ment ¸ionat pentru agent este ca acestea sunt de fapt alc ˘atuite
din dou ˘a componente principale:
Arhitectura – arhitectura este partea fizic ˘a, caseta (omulet ¸ul) numit ˘a agent din figura
de mai sus s ¸i de care apart ¸ine setul de senzori s ¸i dispozitive de act ¸ionare. Acesta fiind
obiectul fizic care este legat de agent sau este hardware-ul agentului ˆınsus ¸i.
Sistemul sau programul- sistemul este de fapt mintea agentului. Aici se desfas ¸oar ˘a
deliberarea, g ˆandirea.
Avem astfel dou ˘a componente principale care nu sunt numai gratuite, dar trebuie s ˘a fie
s ¸i compatibile. Deci, programul este limitat de arhitectur ˘a s ¸i trebuie s ˘a lucreze ˆımpreun ˘aˆın
armonie.
S˘a lu˘am un exemplu foarte simplu agent.
Agentul de cur ˘at ¸are care evolueaz ˘aˆıntr-un mediu mic ˆın care avem dou ˘a camere, ca-
mera A s ¸i camera B s ¸i eventual unele murd ˘ariiˆın camere pentru a le cur ˘at ¸a. Deci percept ¸ia
aspiratorului ˆın acest mediu este locat ¸ia s ¸i ceea ce cont ¸ine camera.
De exemplu, dac ˘a aspiratorul are doi senzori, un senzor pentru murd ˘arie s ¸i un sen-
zor pentru locat ¸ie, ar putea crea o percept ¸ie ca o pereche. A, murdar, de exemplu, este o
percept ¸ie care spune ca, camera A este murdar ˘a. Act ¸iunea pe care aspiratorul o realizeaz ˘a
este de a merge la st ˆanga, merge la dreapta, aspir ˘a mizeria sau nu face nimic dac ˘a totul este
curat. ˆIn final, definim de fapt o funct ¸ie de agent care este de fapt o cartografiere ˆıntre setul
de percept ¸ii s ¸i setul de act ¸iuni.
Am putea scrie ˆıntr-un tabel care are de fapt o hart ˘aˆıntre percept ¸ii s ¸i act ¸iuni. De exem-
plu, dac ˘a A este curat ¸ ˘a, atunci merget ¸i drept. Daca A este murdar, aspir ˘a murdaria. Daca
B este curat, merget ¸i la st ˆanga, apoi verificat ¸i dac ˘a exist ˘a murd ˘arieˆın stanga s ¸i dac ˘a B este
murdar atunci aspir ˘a.
Aceasta este o act ¸iune simpl ˘a, perechi de tabele ˆın care avem percept ¸ii simple, nu o
succesiune de cuvinte, ci doar percept ¸ii s ¸i act ¸iuni corespunz ˘atoare. Agentul caut ˘aˆın aceste
tabele s ¸i asociaz ˘a la ceea ce percepe din mediul ˆınconjur ˘ator prin senzorii s ˘ai pentru a defini
ceea ce face.
Deci, am putea face masa asta mai larg ˘a, nu numai p ˘astrˆand o singur ˘a percept ¸ie, av ˆand
de aceasta dat ˘a combinat ¸ii de percept ¸ii sau secvent ¸e de percept ¸ii. De exemplu: dac ˘a A era
murdar s ¸i apoi A, devine curat, ce s ˘a fac? . Deci prin extinderea acestei mese nu numai ca
mentinem percept ¸ia, dar s ¸i secvent ¸ele percept ¸iilor. As ¸adar, suntem interesat ¸i de agent ¸i care
se pot comport ˘a bine, aces ¸tia sunt rat ¸ionali care sunt definit ¸i ˆın conformitate cu Russell s ¸i
Norvig dup ˘a cum urmeaz ˘a: ,, Pentru fiecare secvent ¸ ˘a perceptiv ˘a posibil ˘a, un agent rat ¸ional
CAPITOLUL 3. AGENT ¸ I INTELIGENT ¸ I S ¸I C ˘AUTARE NEINFORMAT ˘A 12
ar trebui s ˘a aleag ˘a o act ¸iune pe care o face, fiind de as ¸teptat s ˘a maximizeze m ˘asura de
performant ¸ ˘a. Av ˆandˆın vedere dovezile furnizate de succesiunea percept ¸iei, agentul are
orice cunostint ¸ ˘a de baz ˘a sau cunostint ¸ ˘a de capacitate ”.
Ca acest agent s ˘a fie rat ¸ional el trebuie ia doar decizii corecte fiind dotat cu inteligent ¸ ˘a
bazat ˘a pe logic ˘a: cunoas ¸terea prealabil ˘a a mediului, posibilele act ¸iuni pe care agentul le
poate efectua s ¸i ˆın final secvent ¸a de predict ¸ie a agentului p ˆan˘aˆın prezent.
Experient ¸a agentului este ˆımpart ¸it ˘aˆın episoade atomice. Fiecare episod const ˘aˆın perce-
perea agentului s ¸i apoi efectuarea unei singure act ¸iuni. Alegerea act ¸iunii ˆın fiecare episod
depinde doar de episodul ˆınsus ¸i.
Structura unui agent inteligent poate fi privit ˘a ca:
– Agent =arhitectur ˘a+program agent;
– Arhitectur ˘a=mas ¸inile pe care un agent execut ˘a;
– Program agent =o implementare a unei funct ¸ii agent.
Arhitectur ˘a agent ¸i
Agent bazat pe tabele – act ¸iunile specifice declans ¸ate de efectori s ¸i percept ¸iile ca-
re achizit ¸ioneaz ˘a informat ¸iile sunt organizate ˆın tabele. Tabelul reprezint ˘a cea mai
simpl ˘a cale de a realiza o corespondent ¸ ˘a dintre senzori s ¸i act ¸iuni.
Agent bazat pe percept ¸ie – starea curent ˘a a agent ¸ilor poate fi schimbat ˘a prin informat ¸iile
primite de la senzori s ¸i determin ˘a act ¸iuni directe prin intermediul efectorilor. Agent ¸ii
fiind numit ¸i agent ¸i stimul-r ˘aspuns sau reactivi.
Agent bazat pe st ˘ari – starea lumii interioare a agentului poate fi schimbat ˘a prin
achizit ¸ionarea informat ¸iilor prin intermediul percept ¸iilor. Pe baza acestora, agentul
pornes ¸te act ¸iuni prin efectori.
Agent bazat pe scop – Scopurile agentului reprezint ˘a act ¸iunile acestuia. Rezolvarea
unei probleme ˆın IA care ofer ˘a multe moduri de rezolvare reprezint ˘a atingerea unui
scop.
Agent bazat pe utilitate – Pentru maximizarea utilitat ¸ii dorite, agentul react ¸ioneaz ˘aˆın
mod specific.
Agent care ˆınvat ¸ ˘a – Agent ¸ii prin ˆınv˘at ¸are pot opera ˆın medii necunoscute.
CAPITOLUL 3. AGENT ¸ I INTELIGENT ¸ I S ¸I C ˘AUTARE NEINFORMAT ˘A 13
Natura mediului
Unele programe funct ¸ioneaz ˘aˆıntr-un mediu complet artificial, limitat la intrarea tasta-
turii, la baza de date, la sistemele de fis ¸iere pe computer s ¸i la ies ¸irea caracterelor pe ecran.
In schimb, unii agent ¸i de software (robot ¸i software sau softbot-uri) exist ˘aˆın domenii
bogate, nelimitate ˆın softbot. Simulatorul are un mediu foarte detaliat, complex. Agentul
software trebuie s ˘a aleag ˘a dintr-o gam ˘a lung ˘a de act ¸iuni ˆın timp real. Un softbot conce-
put pentru a scana preferint ¸ele online ale clientului s ¸i a arat ˘a elemente interesante pentru
lucr˘arile clientului at ˆatˆın mediul real, c ˆat s ¸i in cel artificial.
Cel mai cunoscut mediu artificial este testul Turing, ˆın care un agent real s ¸i alte substant ¸e
artificiale sunt testate pe teren egal. Acesta este un mediu foarte provocator, deoarece este
extrem de dificil ca un agent software s ˘a se comporte, precum un om.
Turing Test
Succesul unui comportament inteligent al unui sistem poate fi m ˘asurat cu testul Turing.
Dou˘a persoane s ¸i o mas ¸ina care urmeaz ˘a s˘a fie evaluate particip ˘a la test. Din cele dou ˘a
persoane, unul joac ˘a rolul testerului. Fiecare dintre ele se afl ˘aˆın camere diferite. Testerul nu
s ¸tie care este mas ¸ina s ¸i cine este omul. El interogheaz ˘aˆıntreb ˘arile prin tastarea s ¸i trimiterea
lor la ambele mas ¸ini, de la care primes ¸te raspuns ¸uri tip ˘arite.
Acest test are scopul de a p ˘ac˘ali testerul. Dac ˘a testerul nu reus ¸es ¸te s ˘a determine r ˘aspunsul
mas ¸inii de la r ˘aspunsul uman, atunci se spune c ˘a mas ¸ina este inteligent ˘a.
3.2 Agent ¸i de c ˘autare
Russell s ¸i Norvig au realizat un grup de cinci agent ¸i de c ˘autare, clasificare realizat ˘a pe baza
gradului lor de inteligent ¸ ˘a s ¸i capacitate:
Agent ¸i reflex simpli – act ¸ioneaz ˘a numai pe baza percept ¸iei curente, ignor ˆand restul
istoriei percept ¸iei. Funct ¸ia agent se bazeaz ˘a pe regula condit ¸ie-act ¸iune: dac ˘a condit ¸ia
este respectat ˘a, apoi act ¸ioneaz ˘a.
CAPITOLUL 3. AGENT ¸ I INTELIGENT ¸ I S ¸I C ˘AUTARE NEINFORMAT ˘A 14
Agent ¸i bazat ¸i pe obiective – agent ¸ii bazat ¸i pe obiective se extind si mai mult pe
capabilitat ¸ile agent ¸ilor bazat ¸i pe modele, utiliz ˆand informat ¸iile ,,t ¸int ˘a ”. Informat ¸iile
despre obiective descriu situat ¸iile care sunt de dorit. Acest lucru permite agentu-
lui sa aleag ˘aˆıntre mai multe posibilit ˘at ¸i, select ˆand cel care va atinge starea unui
gol. C ˘autarea s ¸i planificarea sunt subdomeniile inteligent ¸ei artificiale dedicate gasirii
secvent ¸elor de act ¸iune care ating obiectivele agentului.
Agent ¸i reflex pe baz ˘a de model – Un agent bazat pe modele poate gestiona medii
part ¸ial observabile. Starea sa actual ˘a este stocat ˘aˆın interiorul agentului, ment ¸in ˆand un
fel de structur ˘a care descrie partea din lume care nu poate fi vazut ˘a. Un agent reflex
bazat pe model ar trebui sa mentin ˘a un fel de model intern care depinde de istoria
percept ¸iei s ¸i prin urmare reflect ˘a cel put ¸in unele dintre aspectele nev ˘azute ale st ˘arii
actuale. Percept ¸ia istoricului s ¸i impactul act ¸iunii asupra mediului pot fi determinate
prin utilizarea modelului intern. Apoi alege o act ¸iune ˆın acelas ¸i mod ca s ¸i agentul
reflex.
CAPITOLUL 3. AGENT ¸ I INTELIGENT ¸ I S ¸I C ˘AUTARE NEINFORMAT ˘A 15
Agent ¸i bazat ¸i pe utilit ˘at ¸i- Obiectivele pe baz ˘a de agent ¸i disting doar st ˘arile de t ¸int ˘a
s ¸i st˘arile non-t ¸int ˘a. Este posibil s ˘a se defineasc ˘a o m ˘asur˘a a modului ˆın care este de
dorit ˘a o anumit ˘a stare. Aceast ˘a masur ˘a poate fi obt ¸inut ˘a prin utilizarea unei funct ¸ii de
utilitate care cartografiaz ˘a o stare la o m ˘asur˘a a utilit ˘at ¸ii statutului. Un agent rat ¸ional
de utilitate alege act ¸iunea care maximizeaz ˘a utilitatea as ¸teptat ˘a a rezultatelor act ¸iunii
– adic ˘a ceea ce agentul se as ¸teapt ˘a s˘a obt ¸in ˘a,ˆın medie, av ˆandˆın vedere probabi-
lit˘at ¸ile s ¸i utilit ˘at ¸ile fiec ˘arui rezultat. Un agent bazat pe utilit ˘at ¸i trebuie s ˘a modeleze
s ¸i s˘a urm ˘areasc ˘a mediul s ˘au, sarcinile care au implicat o mare parte din cercetarea
percept ¸iei, reprezent ˘arii, rat ¸ionamentului s ¸i a ˆınv˘at ¸arii.
Agent ¸i de ˆınv˘at ¸are -ˆınv˘at ¸are are avantajul c ˘a permite agent ¸ilor s ˘a opereze init ¸ial ˆın
medii necunoscute s ¸i s ˘a devin ˘a mai competent ¸i dec ˆat ar putea permite cunos ¸tiint ¸ele
init ¸iale.Cea mai important ˘a distinct ¸ie este ˆıntre ,,elementul de ˆınv˘at ¸are”, care este
responsabil pentru realizarea ˆımbun ˘at˘at ¸irilor, s ¸i ,,elementul de performant ¸ ˘a”, care
este responsabil pentru selectarea act ¸iunilor externe. Elementul de ˆınv˘at ¸are utilizeaz ˘a
feedback de la ,,critic” cu privire la modul ˆın care agentul face s ¸i determin ˘a modul
CAPITOLUL 3. AGENT ¸ I INTELIGENT ¸ I S ¸I C ˘AUTARE NEINFORMAT ˘A 16
ˆın care elementul de performant ¸ ˘a ar trebui s ˘a fie modificat pentru a face mai bine
ˆın viitor. Elementul de performant ¸ ˘a este cel pe care l-am considerat anterior ˆıntreg
agentului: este nevoie de percept ¸ii s ¸i el decide act ¸iunile.
Ultima component ˘a a agentului de ˆınv˘atare este ,,generatorul de probleme”. Este res-
ponsabil pentru sugerarea unor act ¸iuni care vor duce la experient ¸e noi s ¸i informative.
3.3 C ˘autare neinformat ˘a
C˘autarea neinformat ˘a utilizeaz ˘a un domeniu necunoscut.
Exist ˘a strategii diferite adoptate ˆıntr-o c ˘autare neinformat ˘a:
1. Breadth-first search (BFS) – extinde cel mai ad ˆanc nod, c ˘autarea ˆın l˘at ¸ime;
2. Depth-first search (DFS) – extinde cel mai ad ˆanc nod, c ˘autarea ˆın ad ˆancime (am putea
face o combinat ¸ie ˆın care avem o c ˘autare ˆın profunzime cu o anumit ˘a list ˘a. C˘autarea
iterativ ˘a permite aprofundarea);
3. Depth-limited search (DLS) – impunerea unei limite de ad ˆancime pe care DFS o
poate atinge, c ˘autarea limitat ˘aˆın ad ˆancime;
4. Iterative-deepening search (IDS) – DSL cu limit ˘a cresc ˘atoare;
5. Uniform-cost search (UCS) – extinde nodul cu cel mai mic cost;
CAPITOLUL 3. AGENT ¸ I INTELIGENT ¸ I S ¸I C ˘AUTARE NEINFORMAT ˘A 17
3.3.1 Breadth-first search (BFS)
C˘autare ˆın l˘at ¸ime (BFS) este un algoritm pentru traversarea sau c ˘autarea structurilor de
date ale arborilor sau grafurilor. ˆIncepe de la r ˘ad˘acina arborelui (sau un nod arbitrar al unui
grafic, uneori denumit ,,cheia de c ˘autare”) s ¸i exploreaz ˘a mai ˆıntˆai nodurile vecine, ˆınainte
de a trece la vecinii de la nivel urm ˘ator.
Descriere:
– O strategie simpl ˘aˆın care r ˘ad˘acina este extins ˘a mai ˆıntˆai, apoi tot ¸i succesorii r ˘ad˘acinilor
sunt extins ¸i ˆın continuare, apoi succesorii lor;
– Vizit ˘am nivelul arborelui de c ˘autare dup ˘a nivel, astfel ˆıncˆat toate nodurile s ˘a fie extinse
la o anumit ˘a adˆancime ˆınainte ca orice alte noduri de la nivelul urmator s ˘a fie extinse;
– Ordinea ˆın care nodurile sunt extinse.
Algorithm 1 Algoritm: BFS search
1:function BREADTH-FIRST-SEARCH(initialState, goalTest)
2:returns Succes orFailure :
3:frontiere =Queue.new(initialState)
4:explored =Set.new()
5:While not frontier.isEmpty():
6:state =frontier.dequeue()
7:explored.add(state)
8:ifgoalTest(state):
9:return Succes(state)
10:forneighbor instate.neighbors():
11:ifneighbor not in frontier[explored:
12:frontier.enqueue(state)
13:return Failure :
Aceasta reprezint ˘a coada de la frontier ˘a. Coada este de obicei o list ˘a ordonat ˘a cu ele-
mente similare care sunt ˆın ordinea numit ˘a FIFO(first-in first-out). Am as ¸ezat elementele
CAPITOLUL 3. AGENT ¸ I INTELIGENT ¸ I S ¸I C ˘AUTARE NEINFORMAT ˘A 18
ˆın asteptare pentru a fi testate, ˆıncep ˆand cu partea frontal ˘a a cozii. Act ¸iuniile care sunt luate
din fat ¸ ˘a se numesc dequeue , iar act ¸iunile de punere ˆın spatele cozii se numesc enqueue .
3.3.2 Depth-first search (DFS)
C˘autarea ˆın ad ˆancime (DFS) este un algoritm pentru traversarea sau c ˘autarea structurilor
de date ale arborilor sau grafurilor. Unul pornes ¸te de la r ˘ad˘acin˘a (select ˆand un nod arbitrar
ca r˘ad˘acin˘aˆın cazul unui grafic) s ¸i exploreaz ˘a, pe c ˆat posibil, de-a lungul fiecarei ramuri,
ˆınainte de backtracking.
Descriere:
– DFS progreseaz ˘a prin extinderea primului nod copil al arborelui de c ˘autare care apare
s ¸i, astfel, merge mai ad ˆanc s ¸i mai profund p ˆan˘a la g ˘asirea unui nod t ¸int ˘a sau p ˆan˘a cˆand
acesta atinge un nod care nu are copii. Apoi, backtrack-urile de c ˘autare, revenind la cel mai
recent nod, f ˘ar˘a a termina c ˘autarea;
-Ordinea ˆın care nodurile sunt extinse.
Algoritmul DFS este similar cu BFS, chiar dac ˘a ele sunt totus ¸i diferite. Aici nu mai
utiliz ˘am o coad ˘a, deoarce o coad ˘a merge pe principiul FIFO(first-in first-out).
DFS utilizeaz ˘a o structur ˘a de date de tip stiv ˘a. O stiv ˘a este un tip de date abstract care
serves ¸te ca o colect ¸ie de elemente, cu dou ˘a operat ¸ii principale: push , care adaug ˘a un ele-
ment la colect ¸iei s ¸i pop, care elimin ˘a elementul cel mai recent ad ˘augat care nu a fost ˆınc˘a
eliminat. Ordinea ˆın care elementele se descarc ˘a dintr-o stiv ˘a d˘a nas ¸tere la denumirea sa
alternativ ˘a, LIFO ( last-in first-out). ˆIn plus, o operat ¸iune de vizualizare poate oferi acces
ˆın partea de sus f ˘ar˘a a modifica stiva.
CAPITOLUL 3. AGENT ¸ I INTELIGENT ¸ I S ¸I C ˘AUTARE NEINFORMAT ˘A 19
Algorithm 2 Algoritm: DFS search
1:function DEPTH-FIRST-SEARCH(initialState, goalTest)
2:returns Succes orFailure :
3:frontiere =Stack.new(initialState)
4:explored =Set.new()
5:While not frontier.isEmpty():
6:state =frontier.pop()
7:explored.add(state)
8:ifgoalTest(state):
9:return Succes (state)
10:forneighbor instate.neighbors():
11:ifneighbor not in frontier[explored:
12:frontier.push(state)
13:return Failure :
3.3.3 Uniform-cost search (UCS)
C˘autarea cu cost uniform (UCS) este cel mai bun algoritm pentru o problem ˘a de c ˘autare,
care nu implic ˘a utilizarea euristicii. Se poate rezolva orice grafic general pentru costuri
optime.
Descriere:
– Costul uniform este ghidat de costul c ˘aii, mai degrab ˘a dec ˆat de lungimea traseului, ca
ˆın BFS, algoritmii ˆıncep prin extinderea r ˘ad˘acinii, apoi extinderea nodului cu cel mai mic
cost din r ˘ad˘acin˘a, c˘autarea continu ˘aˆın acest mod pentru toate nodurile;
– O sugestie pentru implementarea c ˘autarii cu cost uniform este algoritmul lui Dijkstra.
Algoritmul lui Dijkstra este un algoritm folosit pentru g ˘asirea celor mai scurte c ˘aiˆıntre
noduri unui grafic, care poate reprezenta, de exemplu, ret ¸elele rutiere;
Algoritmul lui Dijkstra are dou ˘a variante cunoscute: – varianta original ˘a a lui Dijkstra
este de a g ˘asit calea cea mai scurt ˘a dintre dou ˘a noduri; – varianta cea mai comun ˘a fixeaz ˘a
un singur nod ca nod ,,surs ˘a” s ¸i gases ¸te cele mai scurte c ˘ai de la surs ˘a c˘atre toate celelalte
noduri din grafic, produc ˆand un arbore cu cea mai scurt ˆa cale .
– Algoritmul lui Dijkstra poate fi privit ca fiind o variant ˆa a c ˆautarii cu cost uniform,
unde nu exist ˆa nici o stare a t ¸elului s ¸i prelucrarea continu ˘a pˆan˘a cˆand calea cea mai scurt ˘a
c˘atre toate nodurile a fost determinat ˘a.
CAPITOLUL 3. AGENT ¸ I INTELIGENT ¸ I S ¸I C ˘AUTARE NEINFORMAT ˘A 20
Algorithm 3 Algoritm:UCS search
1:function UNIFORM-COST SEARCH(initialState, goalTest)
2:returns Succes orFailure :
3:frontiere =Heap.new(initialState)
4:explored =Set.new()
5:While not frontier.isEmpty():
6:state =frontier.deleteMin()
7:explored.add(state)
8:ifgoalTest(state):
9:return Succes (state)
10:forneighbor instate.neighbors():
11:ifneighbor not in frontier[explored:
12:frontier.insert(state)
13:else if neighbor infrontier:
14:frontier.decreaseKey(neighbor)
15:return Failure :
C˘autare cu cost uniform necesit ˘a din nou utilizarea unei cozi de priorit ˘at ¸i. Amintit ¸i-v ˘a
c˘a funct ¸ia First Search Depth a folosit o coad ˘a prioritar ˘a cu ad ˆancimea p ˆan˘a la un nod
special fiind prioritatea, iar calea de la r ˘ad˘acin˘a la nodul fiind elementul stocat. Coada de
priorit ˘at ¸i folosit ˘a aici este similar ˘a cu prioritatea fiind costul cumulat p ˆan˘a la nod. Spre deo-
sebire de prima c ˘autare ˆın profunzime, unde ad ˆancimea maxim ˘a a avut prioritatea maxim ˘a,
uniformizarea costului de c ˘autare d ˘a costul cumulat minim pentru prioritatea maxim ˘a.
Capitolul 4
C˘autare euristic ˘a(informat ˘a)
ˆIn domeniul informaticii, al inteligent ¸ei artificiale s ¸i al optimiz ˘arii matematice, o euris-
tic˘a este o tehnic ˘a conceput ˘a pentru rezolvarea mai rapid ˘a a unei probleme atunci cand
metodele clasice sunt prea lente sau pentru g ˘asirea unei solut ¸ii aproximative atunci c ˆand
metodele clasice nu g ˘asesc nici o solut ¸ie exact ˘a. Acest lucru se realizeaz ˘a prin optimizarea
tranzact ¸ionarii, completitudinea, acuratet ¸ea sau precizia vitezei. Intr-un fel, poate fi consi-
derat ˘a o scurt ˘atur˘a.
O funct ¸ie euristic ˘a, denumit ˘a pur s ¸i simplu o euristic ˘a, este o funct ¸ie care clasific ˘a alter-
native ˆın algoritmii de c ˘autare la fiecare pas de ramificare pe baza informat ¸iilor disponibile
pentru a decide ce ramur ˘a s˘a urmeze.
4.1 Euristici s ¸i algoritmul de c ˘autare Greedy
C˘autarea neinformat ˘a utilizeaz ˘a un domeniu cunoscut.
Exist ˘a strategii diferite adoptate ˆıntr-o c ˘autare informat ˘a:
1. Best-first search
2. Greedy best-first search
3. A*(A-star) search
4. Iterative Deepening A*(IDA*) – o variant ˘a a lui A*.
4.1.1 Best-first search
Strategia Best-First este un model teoretic s ¸i reprezentat de strategie de c ˘autare euristic ˘a
ca un ideal. Ea presupune c ˘autarea nodului s ¸i alegerea acestuia ca successor a celui mai
21
CAPITOLUL 4. C ˘AUTARE EURISTIC ˘A(INFORMAT ˘A) 22
bun nod. Pentru ca acest lucru s ˘a fie posibil avem nevoie de o funct ¸ie care s ˘a caute cel mai
bun nod, iar dac ˘a acest ˘a funct ¸ie ar exista nu ar mai fi necesar un arbore de c ˘autare fiindc ˘a
strategia de c ˘autare ar merge direct la solut ¸ie av ˆand complexitate de spat ¸iu liniar s ¸i timp.
Deci conceptul de best-first search r ˘amˆane doar un model idealizat al strategiilor euristice.
Aspecte teoretice:
.Prin intermediul unei funct ¸ii putem detemina costul fiecarei st ˘ari;
.Nodurile care trebuie s ˘a fie expandate sunt ret ¸inute ˆın cozi ordonate;
.Pentru expandare se stabiles ¸te nodul care urmeaz ˘a s˘a fie expandat, astfel aleg ˆandu-se
starea cu cea mai bun ˘a evaluare;
.Exist ˘a dou ˘a categorii de SCI de tip BFS:
– SCI care ˆıncearc ˘a s˘a expandeze nodul cel mai apropiat de starea obiectiv;
– SCI care ˆıncearc ˘a s˘a expandeze nodul din solut ¸ie cu costul cel mai mic.
Algorithm 4 Algoritm: BestFS
1:bool BestFS(elem, list) f
2:found =false;
3:visited =0;
4:toVisit =fstartg;//FIFO sorted list (priority queue)
5:while ((toVisit =0) && (!found))f
6:if(toVisit ==0)
7:return false
8:node =pop(toVisit);
9:visited =visited[fnodeg;
10:if(node ==elem)
11:found =true;
12:else
13:aux=0;
14:forall unvisited children of node dof
15:aux=aux[fchildg;g
16:toVisit =toVisit U aux; //adding a node into the FIFO list based on its //evaluation
(best one in the front of list)
17:g//while
18:return found;g
CAPITOLUL 4. C ˘AUTARE EURISTIC ˘A(INFORMAT ˘A) 23
Avantajele s ¸i dezavantajele acestui algoritm sunt:
Avantaje
– Informat ¸iile oferite despre domeniul unei probleme ajut ˘a la c ˘autare (SCI);
– Dispune de o vitez ˘a mai mare de a ajunge la starea obiectiv.
Dezavantaje
– Necesit ˘a evaluarea st ˘arilor;
– Anumite path-uri pot ,,ar ˘ata” ca fiind bune datorit ˘a funct ¸iei euristice.
Aplicat ¸ii ˆın care se poate utiliza: jocuri.
4.1.2 Greedy best-first search
Strategia Greedy alege spre cercetare ˆıntotdeauna nodul cu cea mai bun ˘a euristic ˘a(informare),
adic˘a nodul care este cel mai apropiat de starea final ˘a.ˆIn acest sens se poate face o analogie
cu strategia cu cost uniform care alege ˆıntotdeauna nodul cu costul cel mai bun. Strategia
de c˘autare cu cost uniform ret ¸ine o list ˘a sortat ˘aˆın funct ¸ie de valoarea costului, dar ˆın cazul
lui Greedy se va ret ¸ine o list ˘a sortat ˘aˆın funct ¸ie de valoarea euristicii.
Aspecte teoretice:
.Funct ¸ia de evalaure f(n) =h(n)
– evalueaz ˘a costul traseului de la starea curent ˘a la starea final ˘a h(n);
– reduce costului traseului care mai trebuie parcurs.
CAPITOLUL 4. C ˘AUTARE EURISTIC ˘A(INFORMAT ˘A) 24
Algorithm 5 Algoritm:Greedy best-first search
1:function GREEDY-BEST-FIRST-SEARCH(initialState, goalTest)
2:returns Succes orFailure :
3:frontiere =Heap.new(initialState)
4:explored =Set.new()
5:While not frontier.isEmpty():
6:state =frontier.deleteMin()
7:explored.add(state)
8:ifgoalTest(state):
9:return Succes (state)
10:forneighbor instate.neighbors():
11:ifneighbor not in frontier[explored:
12:frontier.insert(state)
13:ifneighbor infrontier:
14:frontier.decreaseKey(neighbor)
15:return Failure :
Algoritmul Greedy se implementeaz ˘a la fel ca strategia de c ˘autare cu cost uniform,
doar ca nodurile vor fi ret ¸inute intr-o list ˘a ordonat ˘a dup ˘a euristic ˘a s ¸i nu dup ˘a cost. Folo-
sind o stiv ˘a s ¸i un consum redus de memorie putem implementa s ¸i pe paradigma de la DFS
(c˘autarea ˆın ad ˆancime), dar aceasta conduce mai ˆıncet spre solut ¸ie.
Strategia greedy ˆın anumite situat ¸ii prin folosirea ciclurile conduc evident la blocaje,
pentru c ˘a strategia nu este complet ˘aˆın arbori ˆınfinit ¸i. Pentru a evita aceast ˘a blocare s ¸i ast-
fel strategia algoritmului s ˘a devin ˘a un˘a complet ˘a, trebuie utilizate mecanisme de evitare a
ciclurilor.
Avantajele s ¸i dezavantajele acestui algoritm sunt:
Avantaje
– Strategia Greedy ofer ˘a rapid solutii s ¸i practicarea acestei solut ¸ii se dovedes ¸te a fi o alegere
bun˘a atunci c ˆand nu dorim g ˘asirea unei solut ¸ii optime.
Dezavantaje
– Strategia Greedy nu este nici optim ˘a s ¸i nici complet ˘a; – Atunci c ˆand este implementat ˘a
identic cu c ˘autare cu cost uniform, aceasta poate avea nevoie de o cantitate ridicat ˘a de
memorie.
CAPITOLUL 4. C ˘AUTARE EURISTIC ˘A(INFORMAT ˘A) 25
Aplicat ¸ii ˆın care se poate utiliza: puzzle-uri, drumul optim ˆıntr-un graf etc.
4.1.3 A* (A-star)search
Strategia A* poate fi privit ˘a ca o combinat ¸ie dintre strategia de c ˘autare greedy s ¸i strategia
de c˘autare cu cost uniform, astfel A* combin ˆa cele mai bune caracteristici ale acestora. Pri-
oritatea A* este o funct ¸ie de evaluare astfel: f(n) =g(n)+h(n), unde g(n) reprezint ˘a funct ¸ia de
la c˘autarea cu cost uniform, iar h(n) reprezint ˘a euristica de la c ˘autarea Greedy. Prioritatea
este maxim ˘a atunci cand valoarea f(n) este cea mai mic ˘a.
Aspecte teoretice:
.Combinarea aspectelor pozitive ale:
– c˘autarii de cost uniform: folosirea unei cozi ordonate;
– c˘autarii Greedy: ordonare bazat ˘a pe o funct ¸ie de evaluare, rapiditatea;
.Funct ¸ia de evaluare f(n):
– calcularea costului celui mai bun traseu(drum) care trece prin nodul n;
– f(n) =g(n)+h(n);1
– g(n) costul de la starea init ¸iala la starea curent ˘a n;
– h(n) costul drumului de la starea curent ˘a n la starea final ˘a;
– diminuare costului total al unui drum.
Strategia A* se implementeaz ˘a prin folosirea unei liste sortate cresc ˘ator dup ˘a funct ¸ia f.
Aceasta poate fi complet ˘a s ¸i optim ˘a doar dac ˘a condit ¸ia euristic ˘a h(n) este admisibil ˘a.
Avantajele s ¸i dezavantajele acestui algoritm sunt:
Avantaje
– A* reprezint ˘a cea mai bun ˘a strategie de c ˘autare.
– Alte strategii risc ˘a s˘a nu gaseasc ˘a cea mai optim ˘a solut ¸ie, dac ˘a exploreaz ˘a mai put ¸ine
noduri dec ˆat A-star.
Dezavantaje
– necesit ˘a resurse mari de memorie. Pentru rezolvarea acestei probleme se poate combina
A* cu Iterative Deepening(o variant ˘a a lui A*) cunoscut ˘a sub denumirea de Iterative Dee-
pening A* (IDA*);
1https:www.inf.ed.ac.ukteachingcoursesinf2dtimetable05 Heuristics wbg.pdf
CAPITOLUL 4. C ˘AUTARE EURISTIC ˘A(INFORMAT ˘A) 26
Algorithm 6 Algoritm:A* search
1:function A*-SEARCH(initialState, goalTest)
2:returns Succes orFailure :
3:frontiere =Heap.new(initialState)
4:explored =Set.new()
5:While not frontier.isEmpty():
6:state =frontier.deleteMin()
7:explored.add(state)
8:ifgoalTest(state):
9:return Succes (state)
10:forneighbor instate.neighbors():
11:ifneighbor not in frontier[explored:
12:frontier.insert(state)
13:ifneighbor infrontier:
14:frontier.decreaseKey(neighbor)
15:return Failure :
– Atunci c ˆand este implementat ˘a identic cu c ˘autare cu cost uniform, aceasta poate avea ne-
voie de o cantitate ridicat ˘a de memorie.
Aplicat ¸ii ˆın care se poate utiliza: puzzle-uri, drumul optim ˆıntr-un graf etc.
Variante ale strategia A*: real time A*, dynamic A*, iterative deepening A* (IDA*),memory-
bounded A* (MA*) etc;
Capitolul 5
Preg˘atirea mediului de dezvoltare
1.Netbeans
Programul folosit pentru dezvoltarea aplicat ¸iei este NetBeans IDE (NetBeans este
un mediu de dezvoltare open-source scris preponderant ˆın Java. Acesta este folo-
sit pentru dezvoltarea de aplicat ¸ii ˆın Java s ¸i prin intermediul altor plug-in-uri, ˆın
alte limbaje(ex: PHP). NetBeans IDE este un mediu de dezvoltare – un instrument
pentru programatori, pentru scrierea, compilarea, testarea, depanarea, proiectarea s ¸i
instalarea programelor. Este scris ˆın Java – dar poate accepta orice limbaj de progra-
mare.). Search ,,Google” , NetBeans IDE pe browser-ul Opera si am dat pe site-ul
,,.www.netbeans.org.” ˆIn partea din dreapta a primei pagini apare un buton de ,,Dow-
loands(desc ˘arcare)”.
Dˆand click pe ,,Dowloand” va aparea ,,NetBeans IDE 8.2 Download” care va oferi
posibilitatea de a alege pentru ce tip de sistem de operare dorit ¸i s ˘a desc ˘arcat ¸i pro-
gramul. Sub aceast ˘a apare programul s ¸i obt ¸iunea pentru platforma folosit ˘a. Pentru
27
CAPITOLUL 5. PREG ˘ATIREA MEDIULUI DE DEZVOLTARE 28
platforma calculatorului meu am ales Windows, ultima obt ¸iune ,,All” care include
tot s ¸i Dowloand (221 MB).
Am dat click pe obt ¸iune s ¸i am intrat pe o pagina de unde am desc ˘arcat programul
NetBeans IDE. ˆIn urma desc ˘arcarii pe partit ¸ia ,,c in dowloands” am primit un soft.
ˆInainte de instalarea acestui soft am instalat platforma JDK s ¸i apoi soft-ul.
Instalare
(a) Am dat dublu click pe soft-ul primit anterior, asta dup ˘a instalarea platformei
JDK .
S-a deschis o fereastr ˘aˆı n care urm ˘atorul pas a fost next.
CAPITOLUL 5. PREG ˘ATIREA MEDIULUI DE DEZVOLTARE 29
(b) Am acceptat termenii s ¸i condit ¸iile s ¸i am dat next.
(c) Am ales locat ¸ia unde va fi instalat NetBeans-ul next s ¸i instal.
CAPITOLUL 5. PREG ˘ATIREA MEDIULUI DE DEZVOLTARE 30
(d) Next s ¸i Finish.
2.WampServer
Wamp (Windows Apache MySQL PHP) este un mediu de dezvoltare web Windows,
care v ˘a permite s ˘a creat ¸i s ¸i s ˘a rulat ¸i aplicat ¸ii pe un server(Apache), pe un limbaj de
baze de date (MySQL) s ¸i pe un limbaj de programare (PHP). ˆIn acelas ¸i timp, Ph-
CAPITOLUL 5. PREG ˘ATIREA MEDIULUI DE DEZVOLTARE 31
pMyAdmin v ˘a permite s ˘a v˘a administrat ¸i cu us ¸urint ¸ ˘a baza de date. Acesta contribuie
s ¸i el realizarea optim ˘a a mediului de lucru.
Baza de date (MySQL)
Wamp este un mediu de dezvoltare open-source.
Search ,,Google” , WampServer pe browser-ul Opera si am dat pe site-ul ,, http: //www.
wampserver.com /en/”.
ˆIn meniul primei pagini apare un buton de ,,Dowloands(descarcare)”. Se instaleaz ˘a,
iar dup ˘a instalare pe partit ¸ia ,,C: /” vom avea un folder cu numele wamp (aici vor
trebui dezvoltate toate aplicat ¸iile pentru a putea fi rulate pe wampserver).
CAPITOLUL 5. PREG ˘ATIREA MEDIULUI DE DEZVOLTARE 32
Capitolul 6
Prezentarea aplicat ¸iei
6.1 Prezentarea aplicat ¸iei
33
Capitolul 7
Concluzii
7.1 Sectiunea 1
7.2 Subcapitol
34
Bibliografie
35
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Studierea algoritmilor IAsi utilizarea acestora ˆn [614793] (ID: 614793)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
