Sunteți pe pagina 1din 5

3/21/2017 Laborator 4: Backtracking i optimizri [CS Open CourseWare]

Laborator4:Backtrackingioptimizri

Obiectivelaborator
nelegereanoiunilordebazlegatedebacktrackingioptimizrileaferente
Contientizareanecesitiimbuntiriiversiuniisimpledebacktrackingibeneficiilefiecreiabordrinparte
Familiarizareaattcuproblemasatisfaceriiconstrngerilor,cticumetodeprospective,euristici.

Importanaplicaiipractice
Rspunsulgeneraliimediat:oriceproblemcarepresupuneocutarenspaiulstrilor.Deasemenea,majoritatea
problemelordinInteligenArtificialpotfireduselaproblemasatisfaceriiconstrngerilor,iarmetodeleprospective,
respectiveuristicilepotfiaplicatentromultitudinedeprobleme,fiindngeneralvalabile.

Descriereaproblemeiiarezolvrilor
Porninddelastrategiileclasicedeparcurgereaspaiuluidestri,algoritmiidetipbacktrackingpracticenumerunset
decandidaipariali,care,dupcompletareadefinitiv,potdevenisoluiipotenialealeproblemeiiniiale.Exactca
strategiiledeparcurgerenlime/adncimeibacktrackingularelabazexpandareaunuinodcurent,iar
determinareasoluieisefacentromanierincremental.Prinnaturasa,bktulesterecursiv,iarnarboreleexpandat
topdownseaplicoperaiidetipulpruning(tiere)dacsoluiaparialnuestevalid.

Notaiileutilizatesunturmtoarele:

X1,,XNvariabileleproblemei,Nfiindnumruldevariabilealeproblemei
D1,,DNdomeniileaferentefiecreivariabile
Untregcarereprezintindicelevariabileicurentselectatepentruaiseatribuiovaloare
Fvectorindexatdupindiciivariabilelor,ncaresuntmemorateseleciiledevalorifcutedelaprimavariabila
ipnlavariabilacurent

ReprezentareagraficauneirelaiipentrudouvariabileX1iX2cudomeniul{a,b,c}esteurmtoarea:

Oversiunegenericaalgoritmuluidetipbacktrackingrecursivpoatefiurmtoarea:

BKT (U, F)
if U == N // dac am determinat o soluie complet
Afieaz valorile din vectorul F
return
foreach V of XU
F[U] V
if Verifica (U,F) == true then
BKT(U+1, F)

Verific (U,F)
test = true
IU-1
while I > 0
test = Relaie(I, F[I], U, F[U])
I=I-1
if test == false
then break
return test

https://ocw.cs.pub.ro/courses/pa/laboratoare/laborator-04 1/5
3/21/2017 Laborator 4: Backtracking i optimizri [CS Open CourseWare]

Complexitateaalgoritmului:complexitateatemporalestedeO(Bd),iarceaspaialO(d),undeBestefactorde
ramificare(numrulmediudestriposibilulterioarencarenodulcurentpoatefiexpandat)idesteadncimea
soluiei.

PorninddelaversiuneainiialdeBKT,putemaduceoseriedembuntirinurmtoareledirecii:

Algoritmidembuntireaconsisteneireprezentriicarevizeazconsistenalocalaarcelorsauacilor
ngrafulderestricii
Utilizareaeuristicilornvedereaoptimizriinumruluidetesteprinluareanconsiderareaurmtoarelor
scenarii:
Ordonareavariabilelor
Ordonareavalorilor
Ordonareatestelor
Algoritmihibrizicarembuntescperformanelerezolvriiprinreducereanumruluidetesteaiciputem
identificaurmtoarelesubcategorii:
Tehniciprospective:
Cutarecuprediciecomplet
Cutarecupredicieparial
Cutarecuverificarepredictiv
Tehniciretrospective:
Backtrackingcusalt
Backtrackingcumarcare

DintremetodeleenumeratemaisusnevomconcentraasupraCSP(ConstraintSatisfactionProblem)cumbuntirea
aferentaconsisteneireprezentriiiasupratehnicilorprospective,existndncazulambelorombuntire
sesizabillanivelulapelurilorrecursive/alexpandrilorefectuate/alintrrilornstiv.

Problemasatisfaceriiconstrngerilor
Problemasatisfaceriirestriciilor,nformulareaceamaigeneral,presupuneexistenauneimulimidevariabile,unor
domeniidevaloripotenialepentrufiecarevariabiliomultimederestriciicarespecificcombinaiiledevalori
acceptabilealevariabilelor(exactconceptulderelaiidefiniteanterior,cutotcurestriciileaferente).Scopulfinall
reprezintdeterminareauneiatribuiridevaloripentrufiecarevariabilaastfelncttoaterestrictiilesfiesatisfcute.

Problemasatisfaceriirestrictiiloreste,ncazulgeneral,oproblemagrea,deciNPcomplet,exponenialnraportcu
numruldevariabilealeproblemei.Dinperspectivastrategiilordecutarentrunspaiudestri,traducereaproblemei
arfiurmtoarea:porninddinstareainiialaprocesuluicareconinerestriciileidentificatendescriereainiiala
problemei,sedoreteatingereauneistrifinalecareafostrestricionatsuficientpentruarezolvaproblema.

PorninddelapremisacCSPesteoproblemadecutaredinclasaproblemelorNP,aspectuldeinteresaloptimizrii
curentedevinereducereactmaiputernicatimpului/spaiuluidecutare.

Fiindoproblemdecutare,rezolvareaproblemeisatisfaceriirestriciilorpoatefifacutaplicndunadintehnicilede
cutareasoluieinspaiulstrilor.Astfel,ceamaiutilizatstrategiederezolvareaproblemeiCSPestebacktracking
ul,variantsimplificatacutriineinformatenadncime.Aceastastrategieestepreferatdatoriteconomieide
spaiuatinseraportatlastrategiadecutarenadncimeO(B*d)saupenivelO(Bd).nfuciedeparticularizarei
anumenfunciedenecesitateadeterminriiuneisoluiisauatuturorsoluiilor,satisfacereatuturorconstrngerilorsau
relaxareaunora,putemaveaurmtoarelecategorii:

CSPtotal
CSPparial
CSPbinargrafderestricii

Pentrunoi,ncazulstudiuluidefa,problemeledetipulCSPbinarecarepotfireprezentateprintrungrafderestricii
suntdeinteres.

Unarc(Xi,Xj)ntrungrafderestriciiorientatsenumestearcconsistentdacinumaidacpentruoricevaloarex
Di,domeniulvariabileiXi,existovaloareyDj,domeniulvariabileiXj,astfelincatRi,j(x,y).Grafulderestrictii
orientatrezultatsenumetearcconsistent.

Ocaledelungimemprinnodurilei0,,imaleunuigrafderestriciiorientatsenumestemcaleconsistentdaci

https://ocw.cs.pub.ro/courses/pa/laboratoare/laborator-04 2/5
3/21/2017 Laborator 4: Backtracking i optimizri [CS Open CourseWare]

numaidacpentruoricevaloarexDi0,domeniulvariabileii0iovaloareyDim,domeniulvariabileiim,pentrucare
Ri0,im(x,y),existosecvendevaloriz1Di1zm1Dim1astfelnctRi0,i1(x,z1),,Rim1,im(zm1,y).Grafulde
restrictiiorientatrezultatsenumetemarcconsistent.

Arcconsistenaunuigrafderestriciiseverificafolosindurmtoriialgoritmi:

Verific (Xk, Xm)


delete = false
foreach x Dk
if nu exist nici o valoare y Dm astfel nct Rk,m(x,y)
elimin x din Dk
delete = true
return delete

AC-1:

Creaz Q { (Xi, Xj) | (Xi, Xj) Mulime arce, ij}
repeat
modificat = false
foreach (Xi, Xj) Q
modificat = modificat or Verific(Xi, Xj)
until modificat==false

AC-3:

Creaz Q { (Xi, Xj) | (Xi, Xj) Multime arce, ij}
while Q nu este vida
Elimin din Q un arc (Xk, Xm)
if Verific(Xk, Xm)then
Q Q { (Xi, Xk) | (Xi, Xk) Multime arce, ik,m}

Porninddelaurmtoarelenotaii:

Nnumruldevariabile
acardinalitateamaximadomeniilordevalorialevariabilelor
enumrulderestricii.

complexitilealgoritmilorprecedenisunturmtoarele:

AlgoritmuluiderealizareaarcconsistenteiAC1arencazulcelmaidefavorabilcomplexitateaO(a2*N*e)
AlgoritmuluiderealizareaarcconsistenteiAC3:complexitatetimpesteO(e*a3)complexitatespatiu:
O(e+N*a)
AlgoritmuluiderealizareaarcconsistenteiAC4carepresupuneombuntireacomplexitiintimp:
O(e*a2)
Algoritmulderealizarea2caleconsistenteiPC4:complexitatetimpO(N3*a3)

Euristici
Ordonareavariabilelorurmretereordonareavariabilelorlegateprinrestriciiexplicite(specificatedemulimeade
restriciidefinitnproblem)astfelnctnumruldeoperaiiulterioaresfieminim.Astfelsuntpreferatemainti
variabilelecareaparntrunnumrmarederestriciiiaudomeniidevaloricucardinalitatemic.

Ordonareavalorilorpleacdelapremisacnutoatevaloriledindomeniulvariabileloraparntoaterestriciile.in
acestcazsuntpreferatemaintivariabilelecelemairestricionate,cucelemaipuineatribuiriposibile.

Ordonareatestelorpresupunencepereacuvariabilaprecedentceamairestricionat.

Tehniciprospective
Principiulestesimplu:fiecarepasspresoluienutrebuiesduclablocare.Astfel,lafiecareatribuireavariabilei
curentecuovaloarecorespunztoare,toatevariabilelesuntverificatepentruadepistaeventualecondiiideblocare.
Anumitevalorialevariabilelorneinstaniatepotfieliminatedeoarecenuvorputeasfacpartedinsoluieniciodat.
Urmtoriialgoritmianalizaiimplementeazstrategiadecutareneinformatcurealizareaunorgradediferitedek
consisten.

https://ocw.cs.pub.ro/courses/pa/laboratoare/laborator-04 3/5
3/21/2017 Laborator 4: Backtracking i optimizri [CS Open CourseWare]
Backtrackingcuprediciecomplet

Predicie(U, F, D)
foreach L of D[U]
F[U] L
if U < N then
DNEW Verific_Inainte (U, L, D)
if DNEW != null
then DNEW Verifica _Viitoare (U, DNEW)
if DNEW != null
then Predictie (U+1, F, DNEW)

Verifica_nainte (U, L, D)
iniializeaz DNEW
for U2 = U+1..N
foreach L2 of D[U2]
if Relatie(U, L, U2, L2) == true
then introduce L2 in DNEW[U2]
daca DNEW[U2] vid
atunci return null
return DNEW

Verifica_Viitoare (U, DNEW)
for U1 = U+1..N
foreach L1 of DNEW[U1]
for U2 = U+1..N
foreach L2 of DNEW[U2]
if Relatie (U1, L1, U2, L2) == true
then break L2
if nu s-a gasit o valoare consistenta pentru U2 then
elimina L1 din DNEW[U1]
break U2
if DNEW[U1] vid then return null
return DNEW

BacktrackingulcupredictieparialpresupunemodificareadoarafuncieiVerific_Viitoaredinprismadomeniului
devizibilitateavariabileiU2careacumvariazexclusivdelaU1+1,nudirectdelaU+1.Rezultatulimediateste
njumtireanumruluideoperaiiefectuatelanivelulfunciei.

Verifica_Viitoare (U, DNEW)



for U1 = U+1..N
foreach L1 of DNEW[U1]
for U2 = U1+1..N
foreach L2 of DNEW[U2]

BacktrackingulcuverificarepredictiveliminapelulVerifica_Viitoare(U,DNEW)completdinfunciadePredicie

Predicie(U, F, D)

DNEW Verific_Inainte (U, D[U], D)
// if DNEW != null
// then DNEW Verifica _Viitoare (U, DNEW)
if DNEW != null

Discuiacareseridicimediatestecaredintrecele3metodeestemaieficient?Prerilesuntmpritensensulc
uneoricostulrafinrilorulterioarepoatefimaimaredectcostulexpandriiefectiveanoduluicurent,dartotodatse
poateobineoreduceresemnificativanumruluideapelurirecursiveprineliminareaunorsoluiineviabile.
Certitudineaestecoricaredintreacestemetodereducecorespunztornumruldeintrrinstiv,dartrebuieluatn
considerarenfunciedespecificulproblemeiicostuloperaieideVerifica_Viitoare.

Unaspectimportantestectoateceletreivariantedetehniciprospectivepotfimbunatatiteprinintroducereade
euristicii,lucruechivalentcuoreordonaredinamicavariabilelorlafiecareavansncutare.Experimental,sadovedit
cintroducereaacestoreuristici(ex.seleciaurmtoareivariabileurmrindcaaceastasaibcelemaipuinevalori
rmasendomeniulpropriu)furnizeazrezultatefoartebune.

Concluziiiobservaii
Metodeledescrisepotfiaplicatepeoplajlargdeprobleme,iaroptimizrileprezentatepotducelascderidrastice
aitimpilordeexecuie.Combinareaanumitormetode,precumtehniciprospectivecueuristiciducelarezultateimai
https://ocw.cs.pub.ro/courses/pa/laboratoare/laborator-04 4/5
3/21/2017 Laborator 4: Backtracking i optimizri [CS Open CourseWare]

bune,demonstratenpractic.Astfel,majoritateaproblemelorcarepresupunparcurgerinspaiulstrilorpotfi
abordateporninddelaunuldintrealgoritmiidescrii.

Sudoku
Lafinalullaboratorului,ncrcaisoluiileaici[http://cs.curs.pub.ro/2016/mod/assign/view.php?id=5111].

JoculclasicrezolvatprinBKTlanivelulcruiaaplicmdiverseoptimizriesteSudoku.Astfel,avemomatrice9X9
subdivizatn9submatriciidenticededimensiuni3X3,denumiteregiuni.

Regulajoculuiestesimpl:fiecarernd,coloansauregiunenutrebuiesconindectodatcifreledelaunula
nou.Formulataltfel,fiecareansamblutrebuiesconincifreledelaunulanouosingurdat.

1.Backtracking
Sserezolveproblemafolosindtehnicabacktracking.

2.Backtrackingiometodprospectiv(preferabilpredictieparialsaucomplet)

3.Euristic
Modificaicodulanterior:implementaioeuristiclaalegereiexplicaiefecteleacesteiaasupratimpuluideexecuiei
anumaruluideintrrinrecursivitate.

Pentrufiecaresolutieanterioarsevaanalizaimpactullanivelultimpuluitotaldeexecuie(carepotfiinfluenaiide
alteprocesedinsistemuldeoperare,respectivalocriiproceseinternealeJVM,etc.),precumialnumruluide
intrrinrecursivitate.

Referine
[1]CursBLIA,Prof.Ing.AdinaMagdaFlorea

[2]IntroducereinAlgoritmi,ThomasH.CormenCharlesE.Leiserson,RonaldR.Rivest,CliffStein(1990)

[3]TheArtofComputerProgramming,DonaldE.Knuth(1968)

[4]CSPTutorialhttp://4c.ucc.ie/web/outreach/tutorial.html[http://4c.ucc.ie/web/outreach/tutorial.html]

[5]TheComplexityofSomePolynomialNetworkConsitencyAlgorithmsforConstraintSatisfactionProblemsdisponibil
lahttp://cse.unl.edu/~choueiry/Documents/ACMackworthFreuder.pdf[http://cse.unl.edu/~choueiry/Documents/AC
MackworthFreuder.pdf]

[6]http://en.wikipedia.org/wiki/Backtracking[http://en.wikipedia.org/wiki/Backtracking]

[7]http://en.wikipedia.org/wiki/Constraint_satisfaction_problem[http://en.wikipedia.org/wiki/Constraint_satisfaction_problem]
pa/laboratoare/laborator04.txtLastmodified:2017/03/2001:16byandrei_mario.dinu

https://ocw.cs.pub.ro/courses/pa/laboratoare/laborator-04 5/5

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