Opération de somme disjointe d'un graphe et d'un sous ensemble d'un autre graphe. More...
#include "cogitant/opedisjointsum.h"
Public Member Functions | |
Error | check () |
Vérification des paramètres. More... | |
void | run () |
Execute l'opération. More... | |
Constructeurs - destructeur. | |
OpeDisjointSum (Environment *env) | |
Constructeur. More... | |
~OpeDisjointSum () | |
Destructeur. More... | |
Entrée des paramètres. | |
void | setParamDest (Graph *g) |
void | setParamSrc (Graph const *h) |
void | setParamDestParent (iSet gparent) |
void | setParamSrcSubset (GraphSubset const *subh) |
void | setParamOldNew (std::map< iSet, iSet > const *oldnew) |
Fixe les correspondances de sommets préexistantes. More... | |
void | setParamFusionCoreferenceClasses (bool fcc) |
Fixe le paramètre de fusion des classes de coréférence de même nom. More... | |
void | setParamAutoCopyChild (bool acc) |
Force la copie des fils. More... | |
void | setParamResultAddedNodes (std::vector< iSet > *addednodes) |
Mémoriser (et récupérer en sortie) les identificateurs des sommets ajoutés. More... | |
Accès aux résultats. | |
Graph * | getResultDest () const |
iSet | getResultNewISet (iSet s) const |
Accès à l'identifiant d'un sommet copié. 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 | copy (iSet hi, iSet gi) |
Copie récursive d'un sous ensemble de i_src dans io_dest. 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... | |
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... | |
Protected Attributes inherited from cogitant::OperationBase | |
bool | m_stop |
Arrêt de l'exécution de l'opération demandé. More... | |
Opération de somme disjointe d'un graphe et d'un sous ensemble d'un autre graphe.
Dans un usage normal de la bibliothèque, il est plus simple d'appeler la méthode Environment::disjointSum() qui effectue effectue une somme disjointe en appelant les méthodes de cette classe, mais en cachant l'initialisation des paramètres.
Soient un graphe io_dest, et un objet de io_dest d'identificateur i_gparent, un graphe i_src et un sous ensemble i_subh de i_src, cette opération ajoute comme fils de l'objet i_gparent de io_dest des copies de chacun des objets de i_src contenus dans i_subh.
Tous ces paramètres doivent obligatoirement être fixés avant l'appel à la méthode run(). Une attention particulière doit être portée à i_subh qui contient les identificateurs des sommets copiés. En effet, pour copier un graphe entier s dans un graphe déjà existant d, il est nécessaire d'initialiser i_gparent à la racine de d et surtout i_subh à l'ensemble des sommets de s sauf la racine car d contient déjà une racine. Ceci peut être fait de la façon suivante :
Lors du calcul de la somme disjointe, les classes de coréférence peuvent être prises en compte de deux façons :
true
deux classes de coréférence ayant même label (Property::COREFERENCE_LABEL) sont fusionnées pour n'en former plus qu'une : les sommets concepts des deux classes de coréférence sont alors tous coréférents et appartiennent à la classe de coréférence de io_dest (augmentée des sommets de la classe de i_src de même nom). Attention, dans ce cas, les sommets des deux classes de coréférence doivent vérifier les conditions habituelles sur les sommets coréférents (même type de concept). false
(défaut) toutes les classes de coréférence sont considérées comme disjointes. Si une classe de io_dest a le même nom qu'une classe de i_src, cette dernière est renommée pour ne pas créer de conflit. Fonctionnalité avancée Fixer les images de certains sommets (inutilisé dans un usage normal)
L'utilisation du paramètre i_preoldnew contenant des correspondances entre sommets de i_src ne devant pas être copiés et des identifiants de sommets déjà existants de io_dest permet de rattacher à des sommets des arêtes qui auraient été pendantes suite à la copie d'une partie de i_src (dans le cas où un sommet relation de i_src est dans i_subh mais pas un sommet concept voisin). Dans ce cas, si un sommet de i_src n'est pas copié (ne figure pas dans i_subh) mais que son identifiant figure comme clé dans i_preoldnew alors les arêtes ayant pour extrémité ce sommet (qui devraient être pendantes dans la copie) sont liées au sommet de io_dest ayant pour identifiant la valeur correspondante dans i_preoldnew (c'est à dire la valeur associée à cette clé).
cogitant::OpeDisjointSum::OpeDisjointSum | ( | Environment * | env | ) |
Constructeur.
cogitant::OpeDisjointSum::~OpeDisjointSum | ( | ) |
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.
Copie récursive d'un sous ensemble de i_src dans io_dest.
L'objet repéré par hi dans i_src est copié comme fils de gi dans io_dest, ainsi que tous les fils de hi qui sont dans i_subh.
Accès à l'identifiant d'un sommet copié.
s | identifiant d'un sommet du graphe copié qui fait partie des sommets copiés. |
|
virtual |
Execute l'opération.
ExceptionStructure | si i_fusioncc vaut true et qu'une classe de coréférence de io_dest a le même nom qu'une classe de coréférence de i_src alors que ces classes comportent des sommets qui ne peuvent être coréférents car de types différents. |
Implements cogitant::OperationBase.
void cogitant::OpeDisjointSum::setParamAutoCopyChild | ( | bool | acc | ) |
Force la copie des fils.
Par défaut, quand un objet est copié, ses fils ne sont pas obligatoirement copiés (ils sont copiés ssi ils sont sélectionnés). En appelant cette méthode avec true
le fils sont toujours copiés. De cette façon, il suffit de sélectionner un sommet concept pour copier emboîtements et graphes emboîtés.
void cogitant::OpeDisjointSum::setParamFusionCoreferenceClasses | ( | bool | fcc | ) |
Fixe le paramètre de fusion des classes de coréférence de même nom.
L'appel à cette méthode n'est pas nécessaire pour exécuter l'opération. La valeur par défaut est false
correspondant à des classes de coréférence disjointes.
fcc | si true deux classes de coréférence ayant même label (Property::COREFERENCE_LABEL) sont fusionnées lors de l'appel à run(). Les sommets concepts de ces deux classes de coréférence sont alors tous coréférents et appartiennent à la classe de coréférence de io_dest (augmentée des sommets de la classe de i_src de même nom). Si fcc vaut false toutes les classes de coréférence sont considérées comme disjointes. Si une classe de io_dest a le même nom qu'une classe de i_src, cette dernière est renommée. |
Fixe les correspondances de sommets préexistantes.
Il est inutile d'appeler cette méthode dans les utilisations habituelles de l'opération : dans ce cas, aucune correspondance ne sera prise en compte, et une somme disjointe classique sera calculée. Si une valeur non nulle est passée pour oldnew, ces correspondances sont prises en compte de la façon expliquée à la section fonctionnalité avancée.
map
dont les clés sont des identifiants de sommets du graphe origine (non copiés, c'est à dire n'appartenant pas à l'ensemble des sommets copiés) et les valeurs sont des des identifiants de sommets du graphe destination. void cogitant::OpeDisjointSum::setParamResultAddedNodes | ( | std::vector< iSet > * | addednodes | ) |
Mémoriser (et récupérer en sortie) les identificateurs des sommets ajoutés.
addednodes | si non NULL, l'opération rajoutera (sans effacer le contenu précédent) au vecteur les identificateurs des sommets ajoutés. |