Algorithme RETE Règles à variables Logique

publicité
Algorithmiquepourles
systèmesdeproducFon
AlgorithmeRETE
parJulienVelcin
LicenceMIASHS
2016-2017
Règlesàvariables
•  Commentfairelelienentrelabasedefaitset
lesprémisses?
(defrulefrere_ou_soeur
(parent?x?y)
(parent?z?y)
(test(neq?x?z))
=>
(assert
(frere_ou_soeur?x?z)))
Basedefaits
f0:(iniFal-fact)
f1:(parentJosephSarah)
f2:(parentSarahFrances)
f3:(parentMabelFrances)
f4:(parentHebeMabel)))
1. 
2. 
3. 
4. 
Filtrage(différenceavecl’unificaFon)
Problème(complexitédufiltrage)
Méthodedesfiltres
AlgorithmedeRETE
LogiquedesproposiFons
•  r1:quadrupede&mammifere&poilu& ongles_rétracFles→chat
•  r2:bipede&ovipare&crete→coq
•  r3:bipede&sans_plumes&sans_poils→homme
•  r4:mamelles→mammifere
Basedefait:
•  r5:pond_oeufs→ovipare
Bipede
Ovipare
Crète
Appartenanced’uneproposiFonàlabasedefait
Algorithmedefiltrage
Filtrage&unificaFon
•  Prémisse(moFf):(possede ?X ?Y)
•  Fait:(possede Jean appartement)
•  QuesFon:commentfairelelienentrelaprémisseetle
fait?
•  OpéraFondefiltrage
–  DéfiniFon:untermet1filtreversuntermet2siet
seulementsiilexisteunesubsFtuFonσtellequet1σ=t2.
•  OpéraFond’unifica4on
–  DéfiniFon:deuxtermest1ett2s’unifientsietseulementsi
ilexisteunesubsFtuFonσtellequet1σ=t2σ
(pa$ernmatching)
filtrage(t1,t2)
Sit1=t2alorsretournerσ:={};
Sit1=()out2=()alorsretournerσ:=échec;
Sivar(t1)alorsretournerσ:={{t1,t2}};
Siatom(t1)ouatom(t2)alorsretournerσ:=échec;
σ1:=filtrage(tete(t1),tete(t2));
Siσ1=échecalorsretournerσ:=échec;
sinonσ2:=filtrage(subsFtuer(σ1,queue(t1)),queue(t2));
Siσ2=échecalorsretournerσ:=échec;
sinonretournerσ:=composiFon(σ1,σ2)
Complexitéducycledebase
EvaluaFondelaprémissed’unerègle
•  PourtouteslescondiFonsCidelaprémisse
•  PourtousfaitsFjdelabasedefaitscalculer
σi,j:=filtrage(Ci,Fj)
•  VérifierlescompaFbilitésdesσi,jpourtoutes
lescondiFonsCidelarègle
NRNombrederègles
NFNombredefaits
cNombremoyendecondiFonsparrègle
TempsdedétecFond'unéchec:c/2*NF*T
TempsdedétecFond'unsuccès:c*NF/2*T
Tempsd'uncycle:
Σ
(c/2*NF*T )
+Σ
(c*NF/2*T )
•  CeladonneT =O(NF*NR)
• 
• 
• 
• 
• 
• 
filtrage
règlesenéchec
filtrage
règlesretenues
filtrage
Cycle
filtrage
Algorithmegénéral
•  TantquelacondiFonterminalen’estpas
aqeinte
•  Répéterlecycledebase
•  Deuxsourcesd’inefficacité:
–  D’uncycleàl’autre,peudemodificaFon
–  Desprémissessontcommunesàplusieursrègles
Premièresourced’inefficacité:
D’uncycleàl’autre,peudemodificaFon
•  Conclusion:neprendreenconsidéraFonque
lesmodificaFonsconsécuFveaucycle
précédentpourévaluerlesdifférentes
condiFonsCik
Cycleài+1
Cycleài
Premièresourced’inefficacité:
D’uncycleàl’autre,peudemodificaFon
•  TantquelacondiFonterminalen’estpas
aqeinte
•  Répéter:
–  PourtouteslesrèglesRk
–  PourtouteslescondiFonsCikdelaprémissedeRk
–  PourtousfaitsFjdelabasedefaitscalculer
σi,j:=filtrage(Cik,Fj)
Deuxièmesourced’inefficacité:
Desprémissessontcommunesàplusieursrègles
•  TantquelacondiFonterminalen’estpas
aqeinte
•  Répéter:
–  PourtouteslesrèglesRk
–  PourtouteslescondiFonsCikdelaprémissedeRk
–  PourtousfaitsFjdelabasedefaitscalculer
σi,j:=filtrage(Cik,Fj)
Rl(?i,?j,?k):a(?i,?j)&a(?j,?k)&b(?k,?i)=>…
Rm(?i,?j):a(?i,?j)&c(?j)=>…
Rn(?i,?j):b(?i,?j)&d(?j,?i)=>…
Deuxièmesourced’inefficacité:
Desprémissessontcommunesàplusieursrègles
•  SoluFon:
–  Déterminerl’ensembledescondiFons
a(?i, ?j), b(?i, ?k), c(?i), d(?i, ?j)
–  EvalueruneàunetoutescescondiFonssurla
basedefaits
–  EtablirlajointuredescondiFonsdechaquerègle
Exemple:a(?i, ?j) & a(?j, ?k) & b(?k, ?i)
Algorithmesefficaces
•  Méthodesdesfiltres(McDermoq)
•  AlgorithmeRETE(ForgyetMcDermoq)
•  AlgorithmeSNARK(Laurière)
Rl(?i,?j,?k):a(?i,?j)&a(?j,?k)&b(?k,?i)=>…
Rm(?i,?j):a(?i,?j)&c(?j)=>…
Rn(?i,?j):b(?i,?j)&d(?j,?i)=>…
Méthodedesfiltres
•  Principegénéral
Basede
règles
•  Principegénéral
Basede
règlesfiltrée
Ensembledes
conflits
E→{R10,R11}
F→{R11,R12}
D→{R10,R12}
Basede
règles
Basede
règlesfiltrée
Ensembledes
conflits
•  Exemple(filtragenégaFf:siunecondiFonestabsente,
quellesrèglessontsuscepFblesd’êtredéclenchées?)
•  Exemple(filtrageposiFf)
R10D&E→...
R11E&F→...
R12F&D→...
Faits:{D,F}
Méthodedesfiltres
E→{R10,R11}
F→{R11,R12}
D→{R10,R12}
R10D&E→...
R11E&F→...
R12F&D→...
Faits:{D,F}
E→{R12}
F→{R10}
D→{R11}
E→{R12}
F→{R10}
D→{R11}
AlgorithmedeRETE(réseauenlaFn)
LesystèmeRETE
•  ForgyC.L.Rete:Afastalgorithmforthemany
paqern/manyobjectpaqernmatchproblem.
InAIJournal,1982.
•  Deuxtypesdemémoire:
–  ProducFonmemory(PM)=ensemblederèglesde
producFonLHS=>RHS
–  Workingmemory(WM)=ensembledefaitsàun
momentdonné
(extraitdelathèsedeR.B.Doorenbos,1995)
LesréseauxdeRETE
Réseaude
discrimina4on
prem-1(?x,?y)
Réseaude
jointurepour
larègleR
prem-2(?x,?z)
prem-3(?y,?z)
Prémisse
dela
règleR
•  Déterminerles
prémisses
ac4ves
(mémoire
alpha)
•  Déterminerles
règlesvalides
(mémoirebeta)
RéseaudediscriminaFon
Réseaude
discrimina4on
token
(a01)
PropagaFondu
fait(a01)dans
leréseaude
discriminaFon
prem-1(?x,?y) prem-2(?x,?z)prem-3(?y,?z)
Listedesinstancesdeprem-1:((0,1))
RéseaudediscriminaFon:exemple
Faits
Prem1
a(?i,?j)
a(1,3)
(1,3)
a(1,4)
(1,4)
a(3,4)
(3,4)
a(3,1)
(3,1)
b(1,3)
Prem2
b(?i,?j)
Prem3
c(?i)
Prem1
d(?i,?j)
Réseaude
discrimina4on
prem-1(?x,?y)
(1,3)
Réseaude
jointurepour
larègleR
Rl(?i,?j,?k):a(?i,?j)&a(?j,?k)&b(?k,?i)=>…
Rm(?i,?j):a(?i,?j)&c(?j)=>…
Rn(?i,?j):b(?i,?j)&d(?j,?i)=>…
Réseaudejointure:détail
prem-1(?x,?y)
Réseaudejointure:
déterminaFondesrèglesvalides
prem-2(?x,?z)
Réseaude
jointure
pourla
règleR
nœud-2
PrémissedelarègleR
=nœuddeproducFon
prem-3(?y,?z)
Prémisse
dela
règleR
Exemple
prem-3(?y,?z)
noeud-1
prem-2(?x,?z)
(defruleregle_1
(a?x?y)
(a?z?w)
=>
(assert(h1?x?w)))
(defruleregle_2
(a?x?y)
(a?y?z)
=>
(assert(h2?x?z))
)
(defruleiniFalisaFon
(iniFal-fact)
=>
(assert(a13)
(a14)
(a34)
(a31)
(a36))
)
Miseenœuvre
(f?x)
ListedesinstanciaFons:((0))
(g?x)
ListedesinstanciaFons:((0))
(b?x)
ListedesinstanciaFons:()
AutresquesFons
•  Retraitsdefaits:mainFendelacohérence
•  NégaFond’uneprémisse
nonQ
P
nœud-1
ListdesinstanciaFons:
((0))
nœud-2
•  Chaînagearrière
SiQestprésent,
larèglesebloque
Sinon,elleestvalide
Téléchargement