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

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

Opération de mise sous forme normale d'un graphe. More...

#include "cogitant/openormalform.h"

Inheritance diagram for cogitant::OpeNormalForm:
cogitant::Operation cogitant::OperationBase cogitant::ObservableObject cogitant::CogitantObject

Public Types

enum  NormalizationType { GRAPHROOT, LOCAL, OPTIMIZED }
 Type de normalisation. More...
 
- Public Types inherited from cogitant::OperationBase
typedef unsigned int Error
 Résultat de la vérification des arguments d'une opération. More...
 

Public Member Functions

Error check ()
 Vérification des paramètres. More...
 
void run ()
 Lancement de l'opération. More...
 
nSet getResultMerges () const
 Nombre de fusions réalisées par l'opération. More...
 
Constructeurs - destructeur.
 OpeNormalForm (Environment *env)
 Constructeur. More...
 
 ~OpeNormalForm ()
 Destructeur. More...
 
Entrée des paramètres.
void setParamG (Graph *g)
 Fixer le graphe à normaliser. More...
 
void setParamNormalizationType (NormalizationType t)
 Fixer type d'opération de normalisation à effecteur. More...
 
void setParamConjunctiveTypes (bool ct)
 Utilisation de types conjonctifs (par défaut) ou pas dans la normalisation. More...
 
void setParamMergeCoreferenceClass (bool mcc)
 Fusionner les sommets qui sont dans la même classe de coréférence. More...
 
void setParamSubset1 (GraphSubset const *subset1)
 Fixer le premier sous-ensemble de sommets. More...
 
void setParamSubset2 (GraphSubset const *subset2)
 Fixer le second sous-ensemble de sommets. More...
 
- 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

virtual void merge (iSet i1, iSet i2)
 Fusionne le sommet i2 dans le sommet i1. More...
 
bool normalizeLocal (iSet root)
 Normalise sous forme normale locale l'InternalGraph identifié par root. More...
 
bool normalizeOptimized ()
 Normalise en utilisant la méthode optimisée avec les deux GraphSubset. 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

Graphi_g
 Le graphe à mettre sous forme normale.
 
NormalizationType i_type
 Type de normalisation.
 
bool i_conjunctivetypes
 Utilisation de types conjonctifs pour la normalisation.
 
bool i_mergecoref
 Fusionner les sommets qui sont dans la même classe de coréférence.
 
GraphSubset const * i_subset1
 Le premier ensemble de sommets à comparer aux sommets du deuxième ensemble. Si NULL, considère tous les sommets.
 
GraphSubset const * i_subset2
 Le deuxième ensemble de sommets à comparer aux sommets du premier ensemble. Si NULL, considère tous les sommets.
 
nSet o_merges
 Nombre de fusions réalisées par l'opération.
 
- Protected Attributes inherited from cogitant::OperationBase
bool m_stop
 Arrêt de l'exécution de l'opération demandé. More...
 

Additional Inherited Members

- 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

Opération de mise sous forme normale d'un graphe.

Cette opération normalise le graphe i_g , ce qui a donc pour effet de modifier le graphe. Cette modification entraîne la suppression de certains sommets de i_g, et comme toute opération qui supprime des sommets, les iSet qui repéraient précédemment des sommets sont invalidés (le même iSet peut, après appel à cette opération, repérer un autre sommet, ou plus aucun sommet). La normalisation peut être configurée : si i_type vaut GRAPHROOT, seule la racine (du graphe emboîté) est mise sous forme normale, si i_type vaut LOCAL, chacun des graphes emboîtés est mis sous forme normale locale, et ... TODO (d'autres types de normalisation sont à prévoir).
Par défaut, tous les sommets concepts individuels sont pris en compte, mais dans certains cas, afin de normaliser de façon plus efficace, on peut être intéressé par une recherche plus fine : Si le graphe a été obtenu par somme disjointe d'un graphe (de taille n) qui était déjà sous forme normale avec un graphe (de taille m) qui était déjà sous forme normale, il est inutile de comparer tous les sommets du graphe obtenus entre eux ((n+m) * (n+m)), mais simplement les sommets issus du premier graphe avec les sommets du second graphe (n * m). Pour cela, il faut définir i_subset1 et i_subset2. Evidemment, il faut garder à l'esprit que si dans i_subset1 (ou i_subset2 ) il y a plusieurs sommets concepts qui ont le même marqueur individuel, ils ne seront pas fusionnés, car aucune comparaison n'est faite "à l'intérieur" de ces deux ensembles. Pour que cette optimisation soit prise en compte, il faut que i_type soit défini à OPTIMIZED.
Par défaut, cette opération fusionne aussi les sommets concepts qui figurent dans la même classe de coréférence. Ce comportement peut être changé en appelant la méthode setParamMergeCoreferenceClass(). L'opération de normalisation peut créer des sommets concepts munis de types conjonctifs. Pour empêcher ce comportement, appeler la méthode setParamConjunctiveTypes() avec le paramètre false. Mais dans ce cas, si deux sommets munis de types différents sont fusionnés, le type résultat ne sera qu'un des deux types. Dans le cas du comportement par défaut, il est possible que la mise sous forme normale crée des sommets concepts munis de types bannis. La vérification doit être lancée par ailleurs si nécessaire.

Member Enumeration Documentation

Type de normalisation.

Enumerator
GRAPHROOT 

Seule la racine est mise sous forme normale (ce qui est plus rapide si le graphe est un graphe simple).

LOCAL 

Chacun des graphes emboîtés est mis sous forme normale locale (par défaut).

OPTIMIZED 

Mise sous forme normale de façon "optimisée" en utilisant i_subset1 et i_subset2.

Constructor & Destructor Documentation

cogitant::OpeNormalForm::OpeNormalForm ( Environment env)

Constructeur.

cogitant::OpeNormalForm::~OpeNormalForm ( )

Destructeur.

Member Function Documentation

Error cogitant::OpeNormalForm::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.

nSet cogitant::OpeNormalForm::getResultMerges ( ) const
inline

Nombre de fusions réalisées par l'opération.

Returns
Le nombre de fusions réalisées par le dernier appel à run().
virtual void cogitant::OpeNormalForm::merge ( iSet  i1,
iSet  i2 
)
protectedvirtual

Fusionne le sommet i2 dans le sommet i1.

Par défaut, cette méthode se contente d'appeler Graph::merge(), mais il est possible de faire une sous-classe de OpeNormalForm pour redéfinir le comportement, par exemple pour fusionner d'une façon particulière les propriétés des deux sommets.
Dans le cas d'une redéfinition de la méthode dans une sous-classe, le plus simple est d'appeler la super-méthode, ou d'appeler directement Graph::merge(), dans ce dernier cas, penser à appeler Graph::merge() avec false comme troisième paramètre parce que l'opération OpeNormalForm s'attend à ce que la méthode OperationNormalForm::merge() ne compacte pas le graphe, l'appel à Graph::compact() étant fait une seule fois (si nécessaire) à la fin d'exécution de l'opération.

bool cogitant::OpeNormalForm::normalizeLocal ( iSet  root)
protected

Normalise sous forme normale locale l'InternalGraph identifié par root.

bool cogitant::OpeNormalForm::normalizeOptimized ( )
protected

Normalise en utilisant la méthode optimisée avec les deux GraphSubset.

void cogitant::OpeNormalForm::run ( )
virtual

Lancement de l'opération.

Cette méthode ne retourne rien mais le résultat de l'opération peut être récupéré avec les méthodes getResultxxx() (différentes selon les sous classes de Operation).

Implements cogitant::OperationBase.

void cogitant::OpeNormalForm::setParamConjunctiveTypes ( bool  ct)
inline

Utilisation de types conjonctifs (par défaut) ou pas dans la normalisation.

Quand deux sommets concepts sont fusionnés dans la normalisation, l'union des types est réalisée (si true ) ou le type du premier sommet est conservé (si false ). Par défaut, l'union des types est réalisée.

void cogitant::OpeNormalForm::setParamG ( Graph g)
inline

Fixer le graphe à normaliser.

void cogitant::OpeNormalForm::setParamMergeCoreferenceClass ( bool  mcc)
inline

Fusionner les sommets qui sont dans la même classe de coréférence.

Par défaut, de tels sommets sont fusionnés.

void cogitant::OpeNormalForm::setParamNormalizationType ( NormalizationType  t)

Fixer type d'opération de normalisation à effecteur.

void cogitant::OpeNormalForm::setParamSubset1 ( GraphSubset const *  subset1)
inline

Fixer le premier sous-ensemble de sommets.

Parameters
subset1Pointeur sur un GraphSubset de i_g ou NULL. Il n'est pas nécessaire d'appeler cette méthode dans le cas où on ne désire pas profiter de l'optimisation : setParamNormalizationType() avec autre chose qu'OPTMIZED met à NULL i_subset1 et i_subset2.
See also
OpeNormalForm.
void cogitant::OpeNormalForm::setParamSubset2 ( GraphSubset const *  subset2)
inline

Fixer le second sous-ensemble de sommets.

Parameters
subset2Pointeur sur un GraphSubset de i_g ou NULL. Il n'est pas nécessaire d'appeler cette méthode dans le cas où on ne désire pas profiter de l'optimisation : setParamNormalizationType() avec autre chose qu'OPTMIZED met à NULL i_subset1 et i_subset2.
See also
OpeNormalForm.