Calcul des projections. More...
#include "cogitant/opeprojection.h"
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 OpeProjection * | clone () 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. | |
ResultOpeProjection * | getResult () 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 | |
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 | 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 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_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). | |
ResultOpeProjection * | io_result |
Les projections calculées. More... | |
OpeGraphObjectCompatibility * | i_opecompatibility |
L'opération de compatibilité utilisée. | |
OpeProjBacktrackChoice * | i_opechoice |
L'opération de choix du prochain élément à considérer lors du backtrack. | |
OpeProjPrecalcImages * | i_opeprecalc |
L'opération de choix du calcul de la LIP utilisée. | |
OpeProjLIPInit * | i_opelipinit |
L'opération d'initialisation d'une LIP. | |
OpeProjAcceptableCouple * | i_opeacceptcouple |
L'opération de filtre sur les couples ajoutés à la projection. | |
OpeProjLIPUpdate * | i_opelipupdate |
L'opération de filtre sur les LIPs. | |
OpeProjLIPIndividual * | i_opelipindividual |
L'opération de calcul des LIPS des sommets concepts individuels. | |
OpeProjAcceptableLIPs * | i_opeacceptablelips |
L'opération de filtre de l'ensemble des LIPs (cette opération est optionnelle : une valeur NULL est autorisée). | |
OpeAcceptableProjection * | i_opeacceptableprojection |
L'opération de filtre des projections trouvées (cette opération est optionnelle : une valeur NULL est autorisée). | |
Projection * | m_proj |
Projection en cours de construction. | |
GraphSubset * | m_list |
Liste des sommets n'ayant pas d'image dans la projection en cours de construction. | |
LIP * | m_lips |
Listes des images possibles des sommets de i_g. | |
std::stack< BacktrackState > | m_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... | |
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.
cogitant::OpeProjection::OpeProjection | ( | Environment * | env | ) |
Constructeur.
cogitant::OpeProjection::OpeProjection | ( | OpeProjection const & | c | ) |
Constructeur par recopie.
cogitant::OpeProjection::~OpeProjection | ( | ) |
Destructeur.
|
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.
projfound | (R) true ssi une projection (acceptable) a été trouvée. |
ProjectionIterator cogitant::OpeProjection::begin | ( | ) |
Début de parcours.
Tous les paramètres de l'OpeProjection doivent être fixés avant appel à cette méthode.
|
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 |
Copie.
|
protected |
Affichage d'une LIP (pour débug).
ProjectionIterator const& cogitant::OpeProjection::end | ( | ) | const |
Itérateur de fin de parcours.
Filtre les LIPs des voisins de m_o1 dans le cas où m_o1 a pour image o2.
o2 | image de o1 choisie. |
done | (résultat) indice dans les voisins de o1 du dernier sommet dont la LIP a été modifiée. |
|
inline |
Accès au paramètre projection incomplète initiale.
|
protected |
|
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*().
|
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.
Referenced by cogitant::ProjectionIterator::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.
Referenced by cogitant::ProjectionIterator::ProjectionIterator().
|
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.
|
protected |
Retour aux LIPs mémorisées pour m_o1.
neighbours | nombre de voisins à considérer. Pour agir sur tous les voisins, appeler avec i_g->edges(m_o1)->size() |
|
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.
|
protected |
Exécute un pas du backtrack lui-même.
projfound | (R) true ssi une projection (acceptable) a été trouvée. |
true
si la recherche peut continuer et false
si elle doit être interrompue ici.
|
protected |
Exécute les intialisations.
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.
|
inline |
Fixer le graphe projeté.
|
inline |
Fixer le graphe sur lequel les projections sont calculées.
|
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.
|
inline |
Recherche des projections du graphe projeté dans tous les graphes emboîtés du graphe dans lequel on projette.
innestings | si 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é. |
|
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 :
ou plus simplement setParamList(NULL)
qui est un raccourci pour les mêmes opérations.
|
inline |
Utilisation d'une optimisation dans le cas où g et h contiennent beaucoup de sommets concepts individuels.
|
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 :
ou plus simplement setParamProj(NULL)
qui est un raccourci pour la même opération.
|
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.