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

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

Calcul des projections. More...

#include "cogitant/opeprojection.h"

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

Classes

class  BacktrackState
 Mémorisation de l'état du backtrack (dans la pile de backtrack). More...
 

Public Member Functions

Error check ()
 Vérification des paramètres. More...
 
void run ()
 Lancement de l'opération. More...
 
Constructeurs - destructeur.
 OpeProjection (Environment *env)
 Constructeur. More...
 
 OpeProjection (OpeProjection const &c)
 Constructeur par recopie. More...
 
 ~OpeProjection ()
 Destructeur. More...
 
virtual OpeProjectionclone () const
 Copie. More...
 
Entrée des paramètres.
void setParamG (Graph const *g)
 Fixer le graphe projeté. More...
 
void setParamH (Graph const *h)
 Fixer le graphe sur lequel les projections sont calculées. More...
 
void setParamProj (Projection const *proj)
 Fixer la projection incomplète initiale. More...
 
Projection const * getParamProj () const
 Accès au paramètre projection incomplète initiale. More...
 
void setParamList (GraphSubset const *list)
 Fixer l'ensemble des images devant avoir une image. More...
 
void setParamInjective (bool injective)
 Recherche des seules projections injectives. More...
 
void setParamInNestings (bool innestings)
 Recherche des projections du graphe projeté dans tous les graphes emboîtés du graphe dans lequel on projette. More...
 
void setParamOptimizeIndividual (bool optimizeindividual)
 Utilisation d'une optimisation dans le cas où g et h contiennent beaucoup de sommets concepts individuels. More...
 
void setParamResult (ResultOpeProjection *result)
 
void setParamOpeCompatibility (OpeGraphObjectCompatibility *opecompatibility)
 
void setParamOpeProjChoice (OpeProjBacktrackChoice *opechoice)
 
void setParamOpeProjPrecalc (OpeProjPrecalcImages *opeprecalc)
 
void setParamOpeLIPInit (OpeProjLIPInit *opelipinit)
 
void setParamOpeAcceptCouple (OpeProjAcceptableCouple *opeacceptcouple)
 
void setParamOpeLIPUpdate (OpeProjLIPUpdate *opelipupdate)
 
void setParamOpeLIPIndividual (OpeProjLIPIndividual *opelipindividual)
 
void setParamOpeAcceptableLIPs (OpeProjAcceptableLIPs *opeacceptablelips)
 
void setParamOpeAcceptableProjection (OpeAcceptableProjection *opeacceptableproj)
 
Accès aux résultats.
ResultOpeProjectiongetResult () const
 
Accès aux projections à l'aide d'un itérateur.
Projection const & iteratorCurrentProjection () const
 Accès à la projection actuellement calculée. More...
 
void iteratorNext ()
 Passage à la projection suivante. More...
 
bool iteratorIsFinished () const
 Est-ce que la fin de parcours a été atteinte. More...
 
void runEnd ()
 Exécute les opérations de fin d'opération. More...
 
ProjectionIterator begin ()
 Début de parcours. More...
 
ProjectionIterator const & end () const
 Itérateur de fin de parcours. 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

void restoreLIPs (iSet neighbours)
 Retour aux LIPs mémorisées pour m_o1. More...
 
bool nextCouple ()
 Calcule le couple (sommet o1, sommet dans la LIP de o1) à prendre en compte dans la recherche. More...
 
bool filterLIPsNeighbours (iSet o2, iSet &done)
 Filtre les LIPs des voisins de m_o1 dans le cas où m_o1 a pour image o2. More...
 
bool add (bool &projfound)
 Exécute les traitements correspondant aux choix m_ithoflip comme image de m_o1. More...
 
bool initialize ()
 Initialise les structures de données pour commencer à traiter m_o1. More...
 
void debugDisplayLIP (iSet o) const
 Affichage d'une LIP (pour débug). More...
 
bool runBegin ()
 Exécute les intialisations. More...
 
bool runBacktrackOneStep (bool &projfound)
 Exécute un pas du backtrack lui-même. 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_g
 Le premier graphe.
 
Graph const * i_h
 Le second graphe.
 
Projection const * i_proj
 La projection de départ (toutes les projections calculées contiennent tous les couples de cette projection).
 
GraphSubset const * i_list
 La liste des sommets de départ (seul le sous graphe de i_g réduit à ces sommets est considéré).
 
bool i_injective
 Calcul des seules projections injectives (false par défaut).
 
bool i_innestings
 Projection de la racine du graphe projeté dans tous les graphes emboîtés du graphe dans lequel un projette (false par défaut).
 
bool i_optimizeindividual
 Optimisation prenant en compte les sommets concepts individuels (i_opelipindividual) (true par défaut).
 
ResultOpeProjectionio_result
 Les projections calculées. More...
 
OpeGraphObjectCompatibilityi_opecompatibility
 L'opération de compatibilité utilisée.
 
OpeProjBacktrackChoicei_opechoice
 L'opération de choix du prochain élément à considérer lors du backtrack.
 
OpeProjPrecalcImagesi_opeprecalc
 L'opération de choix du calcul de la LIP utilisée.
 
OpeProjLIPIniti_opelipinit
 L'opération d'initialisation d'une LIP.
 
OpeProjAcceptableCouplei_opeacceptcouple
 L'opération de filtre sur les couples ajoutés à la projection.
 
OpeProjLIPUpdatei_opelipupdate
 L'opération de filtre sur les LIPs.
 
OpeProjLIPIndividuali_opelipindividual
 L'opération de calcul des LIPS des sommets concepts individuels.
 
OpeProjAcceptableLIPsi_opeacceptablelips
 L'opération de filtre de l'ensemble des LIPs (cette opération est optionnelle : une valeur NULL est autorisée).
 
OpeAcceptableProjectioni_opeacceptableprojection
 L'opération de filtre des projections trouvées (cette opération est optionnelle : une valeur NULL est autorisée).
 
Projectionm_proj
 Projection en cours de construction.
 
GraphSubsetm_list
 Liste des sommets n'ayant pas d'image dans la projection en cours de construction.
 
LIPm_lips
 Listes des images possibles des sommets de i_g.
 
std::stack< BacktrackStatem_backtrackstack
 Pile de backtrack.
 
iSet m_o1
 Sommet du graphe projeté en cours d'examen.
 
iSet m_ithoflip
 Position du parcours dans la liste d'images possibles de o1.
 
bool m_isfinished
 Exécution terminée.
 
ProjectionIterator const * m_iteratorend
 Un itérateur de fin mémorisé, afin d'éviter d'en créer un à chaque appel à end().
 
- 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

Calcul des projections.

Sont calculées les projections du sous graphe de i_g repéré par i_list dans i_h qui contiennent i_proj. Le résultat du calcul est stocké dans io_result.

Constructor & Destructor Documentation

cogitant::OpeProjection::OpeProjection ( Environment env)

Constructeur.

cogitant::OpeProjection::OpeProjection ( OpeProjection const &  c)

Constructeur par recopie.

cogitant::OpeProjection::~OpeProjection ( )

Destructeur.

Member Function Documentation

bool cogitant::OpeProjection::add ( bool &  projfound)
protected

Exécute les traitements correspondant aux choix m_ithoflip comme image de m_o1.

m_o1 est le sommet du graphe projeté. Cet attribut peut être modifié par l'appel afin qu'un appel à next() choisisse une image possible d'un sommet autre que m_o1. m_ithoflip est l'indice dans la LIP de m_o1 du sommet choisi. Modifié par l'appel afin qu'un appel à next() choisisse une image possible d'un sommet autre que m_o1.

Parameters
projfound(R) true ssi une projection (acceptable) a été trouvée.
Returns
true si la recherche peut continuer, et false pour interrompre la recherche.
ProjectionIterator cogitant::OpeProjection::begin ( )

Début de parcours.

Tous les paramètres de l'OpeProjection doivent être fixés avant appel à cette méthode.

Warning
Une fois que cette méthode a été appelée, les graphes i_g et i_h ne doivent pas être modifiés.
Error cogitant::OpeProjection::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.

virtual OpeProjection* cogitant::OpeProjection::clone ( ) const
virtual

Copie.

void cogitant::OpeProjection::debugDisplayLIP ( iSet  o) const
protected

Affichage d'une LIP (pour débug).

ProjectionIterator const& cogitant::OpeProjection::end ( ) const

Itérateur de fin de parcours.

bool cogitant::OpeProjection::filterLIPsNeighbours ( iSet  o2,
iSet done 
)
protected

Filtre les LIPs des voisins de m_o1 dans le cas où m_o1 a pour image o2.

Parameters
o2image de o1 choisie.
done(résultat) indice dans les voisins de o1 du dernier sommet dont la LIP a été modifiée.
Returns
true si les LIPs ont pu être filtrées, et false si une LIP filtrée d'un voisin de m_o1 est vide, ce qui signifie que le choix m_o1 sur o2 ne peut être considéré.
Projection const* cogitant::OpeProjection::getParamProj ( ) const
inline

Accès au paramètre projection incomplète initiale.

bool cogitant::OpeProjection::initialize ( )
protected

Initialise les structures de données pour commencer à traiter m_o1.

Entre autres, calcule la LIP de m_o1 si elle n'a pas encore été calculée.

Returns
true si tout va bien, false si la LIP calculée est vide ou inacceptable.
Projection const& cogitant::OpeProjection::iteratorCurrentProjection ( ) const
inline

Accès à la projection actuellement calculée.

Habituellement, cette méthode n'a pas à être utilisée, préférer l'opérator * de ProjectionIterator.

Referenced by cogitant::ProjectionIterator::operator*().

bool cogitant::OpeProjection::iteratorIsFinished ( ) const
inline

Est-ce que la fin de parcours a été atteinte.

Habituellement, cette méthode n'a pas à être utilisée, préférer ProjectionIterator.

void cogitant::OpeProjection::iteratorNext ( )

Passage à la projection suivante.

Habituellement, cette méthode n'a pas à être utilisée, préférer l'opérator ++ de ProjectionIterator.

bool cogitant::OpeProjection::nextCouple ( )
protected

Calcule le couple (sommet o1, sommet dans la LIP de o1) à prendre en compte dans la recherche.

Ce couple est déterminé en prenant le sommet suivant le sommet actuel dans la LIP de o1, ou en faisant un backtrack à l'aide de la pile de backtrack. m_o1 est le sommet du graphe à projeter, il peut être modifié par la méthode. m_ithoflip est l'indice dans la LIP de l'image possible de m_o1 à tester. Il peut être modifié par la méthode.

Returns
true si un sommet a été trouvé, et false sinon (ce qui signifie que la recherche est terminée, car il n'y a plus rien à tester, et la pile de backtrack est vide).
void cogitant::OpeProjection::restoreLIPs ( iSet  neighbours)
protected

Retour aux LIPs mémorisées pour m_o1.

Parameters
neighboursnombre de voisins à considérer. Pour agir sur tous les voisins, appeler avec i_g->edges(m_o1)->size()
void cogitant::OpeProjection::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.

bool cogitant::OpeProjection::runBacktrackOneStep ( bool &  projfound)
protected

Exécute un pas du backtrack lui-même.

Parameters
projfound(R) true ssi une projection (acceptable) a été trouvée.
Returns
true si la recherche peut continuer et false si elle doit être interrompue ici.
bool cogitant::OpeProjection::runBegin ( )
protected

Exécute les intialisations.

Returns
true si des projections peuvent être calculées et false si la phase d'initialisation a détecté qu'aucune projection ne pourra être trouvée.
void cogitant::OpeProjection::runEnd ( )

Exécute les opérations de fin d'opération.

void cogitant::OpeProjection::setParamG ( Graph const *  g)
inline

Fixer le graphe projeté.

void cogitant::OpeProjection::setParamH ( Graph const *  h)
inline

Fixer le graphe sur lequel les projections sont calculées.

void cogitant::OpeProjection::setParamInjective ( bool  injective)
inline

Recherche des seules projections injectives.

Si cette méthode est appelée avec le paramètre à vrai, seules les projections injectives sont calculées.

void cogitant::OpeProjection::setParamInNestings ( bool  innestings)
inline

Recherche des projections du graphe projeté dans tous les graphes emboîtés du graphe dans lequel on projette.

Parameters
innestingssi false les projections cherchées pour les graphes emboîtés correspondent à la définition "classique" de la projection: un sommet du niveau 0 se projette sur un sommet de niveau 0, etc. Si innestings est true, l'opération cherche les projections dans lesquelles les sommets de niveau 0 peuvent se projeter dans n'importe quel graphe emboîté.
void cogitant::OpeProjection::setParamList ( GraphSubset const *  list)
inline

Fixer l'ensemble des images devant avoir une image.

L'appel à cette méthode permet de calculer les projections d'un sous graphe de i_g dans i_h. Seuls le sous graphe engendré par les sommets présents dans list est considéré. Pour calculer les projections de i_g dans i_h, il est donc nécessaire de passer une liste contenant tous les sommets de i_g :

GraphSubset subsetg(g);
subsetg.fill();
op->setParamList(&subsetg);


ou plus simplement setParamList(NULL) qui est un raccourci pour les mêmes opérations.

void cogitant::OpeProjection::setParamOptimizeIndividual ( bool  optimizeindividual)
inline

Utilisation d'une optimisation dans le cas où g et h contiennent beaucoup de sommets concepts individuels.

void cogitant::OpeProjection::setParamProj ( Projection const *  proj)
inline

Fixer la projection incomplète initiale.

Les projections calculées sont construites à partir de la projection passée en paramètre à cette méthode. Ainsi, les couples présents dans la projection incomplète proj existeront aussi dans toutes les projections calculées. Ceci permet de fixer l'image de certains sommets dans les projections calculées. Par contre pour calculer toutes les projections sans aucune contrainte il suffit de passer une projection incomplète vide à cette méthode :

Projection emptyproj;
op->setParamProj(&emptyproj);


ou plus simplement setParamProj(NULL) qui est un raccourci pour la même opération.

Member Data Documentation

ResultOpeProjection* cogitant::OpeProjection::io_result
protected

Les projections calculées.

Ce membre représente aussi la configuration du calcul des projections : selon les valeurs de certains attributs de io_result, toutes les projections seront calculées, ou uniquement une, ou certaines projections trouvées seront filtrées et ne seront pas stockées dans la structure résultat.