Test du caractère irredondant d'une application d'une règle sur un graphe. More...
#include "cogitant/operule.h"
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... | |
OpeAcceptableProjection * | clone () 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 | |
Environment * | environment () 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... | |
PropertySet * | properties () |
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... | |
CogitantObject & | operator= (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 ObserverSet * | allocObservers () 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... | |
ObserverSet & | observers () |
Accès à l'ensemble des observateurs. More... | |
Protected Member Functions inherited from cogitant::CogitantObject | |
virtual PropertySet * | allocProperties () 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. | |
OpeRuleApply * | i_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... | |
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.
cogitant::OpeRuleIrredundantProjection::OpeRuleIrredundantProjection | ( | Environment * | env | ) |
Constructeur.
cogitant::OpeRuleIrredundantProjection::~OpeRuleIrredundantProjection | ( | ) |
Destructeur.
|
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.
|
virtual |
Retourne une copie.
Implements cogitant::OpeAcceptableProjection.
|
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.
|
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.
|
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.
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.