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... | |
![]() | |
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 |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
void | setProgress (unsigned int current, unsigned int max) |
Progression actuelle de l'opération. More... | |
![]() | |
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... | |
![]() | |
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. | |
![]() | |
Projection const * | i_candidate |
La projection qui doit être testée. | |
bool | o_result |
Résultat : la projection doit être ajoutée ou pas. | |
![]() | |
bool | m_stop |
Arrêt de l'exécution de l'opération demandé. More... | |
Additional Inherited Members | |
![]() | |
typedef unsigned int | Error |
Résultat de la vérification des arguments d'une opération. More... | |
![]() | |
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 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.