Documente Academic
Documente Profesional
Documente Cultură
Laborator 4 - Backtracking Și Optimizări (CS Open CourseWare)
Laborator 4 - Backtracking Și Optimizări (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:
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.
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