Quick links: Tutorial - Examples - Files - Symbols.
Classes: Hierarchy - Index - List - Members.
Namespaces: Index - base - cs - display.

Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
cogitant::OpeRuleIrredundantProjection Class Reference

Test du caractère irredondant d'une application d'une règle sur un graphe. More...

#include "cogitant/operule.h"

Inheritance diagram for cogitant::OpeRuleIrredundantProjection:
cogitant::OpeAcceptableProjection cogitant::Operation cogitant::OperationBase cogitant::ObservableObject cogitant::CogitantObject

Public Member Functions

Error check ()
 Vérification des paramètres. More...
 
void run ()
 Lancement de l'opération. More...
 
Constructeurs - destructeur.
 OpeRuleIrredundantProjection (Environment *env)
 Constructeur. More...
 
 ~OpeRuleIrredundantProjection ()
 Destructeur. More...
 
OpeAcceptableProjectionclone () const
 Retourne une copie. More...
 
Entrée des paramètres.
void setParamGraph (Graph const *g)
 
void setParamRule (Rule const *r)
 
void setParamOpeRuleApply (OpeRuleApply *operuleapply)
 Opération d'application d'une règle sur un graphe selon une projection. More...
 
- Public Member Functions inherited from cogitant::OpeAcceptableProjection
Error check ()
 Vérification des paramètres. More...
 
void run ()
 Lancement de l'opération. More...
 
 OpeAcceptableProjection (Environment *env)
 Constructeur. More...
 
 ~OpeAcceptableProjection ()
 Destructeur. More...
 
void setParamCandidate (Projection const *cand)
 
bool getResult () const
 
- Public Member Functions inherited from cogitant::Operation
Environmentenvironment () const
 Environnement. More...
 
void setEnvironment (Environment *env)
 Modification de l'environnement sur lequel est défini l'opération. More...
 
 Operation (Environment *env)
 Constructeur. More...
 
 Operation (Operation const &o)
 Constructeur par recopie. More...
 
 ~Operation ()
 Destructeur. More...
 
- Public Member Functions inherited from cogitant::OperationBase
void stop ()
 Stopper l'opération dès que possible. More...
 
bool isStopped () const
 Est-ce que l'opération a été stoppée. More...
 
 OperationBase ()
 Constructeur. More...
 
 OperationBase (OperationBase const &o)
 Constructeur par recopie. More...
 
 ~OperationBase ()
 Destructeur. More...
 
- Public Member Functions inherited from cogitant::ObservableObject
 ObservableObject ()
 Constructeur. More...
 
 ObservableObject (ObservableObject const &o)
 Constructeur par recopie. More...
 
 ~ObservableObject ()
 Destructeur. More...
 
ObserverSet const & observers () const
 Accès à l'ensemble des observateurs. More...
 
bool hasObservers () const
 Existence d'observateurs. More...
 
bool hasObservers (ObserverMessage::Type mt) const
 Existence d'observateurs qui écoutent le type de message passé. More...
 
void attachObserver (Observer *obs)
 Ajoute un nouvel observateur à l'objet. More...
 
void detachObserver (Observer *obs)
 Supprime le lien entre l'observateur et l'objet. More...
 
void notifyObservers (ObserverMessage const *msg)
 Envoie le message de modification à tous les observateurs. More...
 
- Public Member Functions inherited from cogitant::CogitantObject
 CogitantObject ()
 Constructeur. More...
 
 CogitantObject (CogitantObject const &o)
 Constructeur par recopie. More...
 
virtual ~CogitantObject ()
 Destructeur. More...
 
PropertySetproperties ()
 Accès à l'ensemble des propriétés. More...
 
virtual std::string toString () const
 Transformation en chaîne de caractères. More...
 
std::string className () const
 Nom de la classe. More...
 
PropertySet const * properties () const
 Accès en lecture seule à l'ensemble des propriétés. More...
 
bool hasProperties () const
 Existence de propriétés. More...
 
CogitantObjectoperator= (CogitantObject const &ob)
 Affectation. More...
 

Protected Member Functions

void runNewGraph ()
 Exécution de l'opération en appliquant la règle sur le graphe selon la projection puis en calculant si ce graphe se projette dans le graphe initial. More...
 
void runProjection ()
 Exécution de l'opération en calculant si la projection de l'hypothèse peut être étendue en une projection de hypothèse + conclusion. More...
 
- Protected Member Functions inherited from cogitant::Operation
void setProgress (unsigned int current, unsigned int max)
 Progression actuelle de l'opération. More...
 
- Protected Member Functions inherited from cogitant::ObservableObject
virtual ObserverSetallocObservers () const
 Fonction créant l'instance d'une sous classe de ObserverSet pour la représentation de l'ensemble des observateurs de l'objet. More...
 
ObserverSetobservers ()
 Accès à l'ensemble des observateurs. More...
 
- Protected Member Functions inherited from cogitant::CogitantObject
virtual PropertySetallocProperties () const
 Fonction créant l'instance d'une sous classe de PropertySet pour la représentation des propriétés de l'objet. More...
 

Protected Attributes

Graph const * i_graph
 Graphe sur lequel la règle peut être appliquée.
 
Rule const * i_rule
 La règle.
 
OpeRuleApplyi_operuleapply
 L'opération d'application utilisée.
 
- Protected Attributes inherited from cogitant::OpeAcceptableProjection
Projection const * i_candidate
 La projection qui doit être testée.
 
bool o_result
 Résultat : la projection doit être ajoutée ou pas.
 
- Protected Attributes inherited from cogitant::OperationBase
bool m_stop
 Arrêt de l'exécution de l'opération demandé. More...
 

Additional Inherited Members

- Public Types inherited from cogitant::OperationBase
typedef unsigned int Error
 Résultat de la vérification des arguments d'une opération. More...
 
- Static Public Attributes inherited from cogitant::Operation
static const Error PROJBACKTRACKCHOICE_EMPTYLIST
 Impossible d'enlever un élément à une liste vide. More...
 
static const Error OBJECTTYPE
 Un (identifiant d') objet parmi les paramètres n'est pas du bon type. More...
 
static const Error WRONGEDGES
 Un graphe parmi les paramètres de l'opération possède des arêtes pendantes. More...
 
- Static Public Attributes inherited from cogitant::OperationBase
static const Error CHECKOK
 Pas d'erreur. More...
 
static const Error ARGUMENTS
 Certains paramètres de l'opération n'ont pas été fixés. More...
 
static const Error UNUSED
 Symbole d'erreur inutilisé. More...
 

Detailed Description

Test du caractère irredondant d'une application d'une règle sur un graphe.

Cette opération est utilisée lors du calcul des applications possibles d'une règle sur un graphe pour filtrer les applications (projection) qui ne font que rajouter de l'information déjà présente dans le graphe.
Habituellement, il n'est pas nécessaire d'utiliser cette classe, car il est plus simple de passer par la méthode Environment::ruleApplications() dont le quatrième paramètre permet de choisir si seules les applications "irredondantes" sont cherchées ou si toutes les applications sont cherchées. Évidemment, dans le cas où ce paramètre est défini à true la méthode Environment::ruleApplications() utilise la classe OpeRuleIrredundantProjection.

Warning
Cette opération ne filtre que les applications de la règle qui produisent de l'information irredondante par rapport au graphe tel qu'il est au moment de l'appel à run(). Or, si plusieurs applications de la même règle sont calculées avant d'être appliquées, il est possible qu'à ce moment ces projections soient jugées comme ajoutant des nouvelles information au graphes mais que l'application de la règle selon une de ces projections entraine le fait qu'une autre application devienne par ce fait irredondante.
Dans le cas où plusieurs applications sont calculées avant d'être appliquées, il est donc nécessaire, pour ne pas rajouter d'information irredondante, de tester chaque application de règle au moment de l'application.

Constructor & Destructor Documentation

◆ OpeRuleIrredundantProjection()

cogitant::OpeRuleIrredundantProjection::OpeRuleIrredundantProjection ( Environment env)

Constructeur.

◆ ~OpeRuleIrredundantProjection()

cogitant::OpeRuleIrredundantProjection::~OpeRuleIrredundantProjection ( )

Destructeur.

Member Function Documentation

◆ check()

Error cogitant::OpeRuleIrredundantProjection::check ( )
virtual

Vérification des paramètres.

Retourne Operation::CHECKOK si l'opération peut être exécutée (méthode run()) ou un code d'erreur dans le cas contraire.

Implements cogitant::OperationBase.

◆ clone()

OpeAcceptableProjection* cogitant::OpeRuleIrredundantProjection::clone ( ) const
virtual

Retourne une copie.

Implements cogitant::OpeAcceptableProjection.

◆ run()

void cogitant::OpeRuleIrredundantProjection::run ( )
virtual

Lancement de l'opération.

Vérifie que l'application de la règle selon la projection i_candidate ne rajoute pas uniquement de l'information déjà présente dans i_graph. Pour cela, la règle est appliquée (sur une copie de i_graph ), s'il existe une projection de ce graphe dans i_graph, l'application de la règle n'a fait qu'ajouter de l'information déjà présente et la projection est refusée (o_result = false ).
Ce calcul peut être fait de deux façons, par la méthode décrite dans runNewGraph() et par la méthode décrite dans runProjection(). La deuxième solution, utilisée par défaut, est plus performante.

Implements cogitant::OperationBase.

◆ runNewGraph()

void cogitant::OpeRuleIrredundantProjection::runNewGraph ( )
protected

Exécution de l'opération en appliquant la règle sur le graphe selon la projection puis en calculant si ce graphe se projette dans le graphe initial.

Plutôt que de chercher la projection de i_graph + conclusion de la règle dans i_graph , les sommets qui forment les composantes connexes contenant au moins un sommet rajouté par la conclusion sont calculés, et on ne cherche que la projection de ces sommets là. Au pire, il s'agit de tout le graphe, mais dans certains cas, seuls certains sommets du graphe seront concernés, et le calcul de la projection sera plus rapide.

◆ runProjection()

void cogitant::OpeRuleIrredundantProjection::runProjection ( )
protected

Exécution de l'opération en calculant si la projection de l'hypothèse peut être étendue en une projection de hypothèse + conclusion.

En fait, plutôt que construire le graphe hypothèse + conclusion, on considère simplement le graphe conclusion, et on cherche à étendre à la totalité des sommets de ce graphe conclusion la projection composée des images des sommets du graphe hypothèse qui sont aussi des points d'attache.

◆ setParamOpeRuleApply()

void cogitant::OpeRuleIrredundantProjection::setParamOpeRuleApply ( OpeRuleApply operuleapply)

Opération d'application d'une règle sur un graphe selon une projection.

La recherche des applications irredondantes dépend de l'opération d'application. En effet, l'opération d'application de la règle peut (ou pas) modifier les types des sommets du graphe qui sont des images des points d'attache de la règle (si le type est différent dans l'hypothèse et la conclusion). L'opération de test des applications irredondantes interroge donc l'opération d'application de règle pour savoir si une modification de type est possible et donc si cela peut conduire à une application irredondante.