Procédé de structuration d'une base de données d'objets
La présente invention concerne un procédé de structuration d'une base de données d'objets. L'invention s'applique notamment à l'indexation et à la fusion de données.
Avec l'explosion du volume de données présent sur les réseaux informatiques et dans les bases de données, les besoins d'indexation et de classification sont devenus de plus en plus prégnants. Par exemple, l'étude d'une taxonomie botanique ou la gestion d'objets stockés dans un système d'information géographique, nécessite une classification ou une catégorisation des données afin de diminuer leur occupation mémoire et/ou leur assurer un accès thématique le plus rapide possible.
Une méthode connue de classification et d'analyse de données est fournie par l'analyse des concepts formels, souvent désignée par l'acronyme FCA, en référence à l'expression anglo-saxonne « Formai Concept Analysis ». Un contexte formel K= (G, M, I) comporte un ensemble d'objets G, un ensemble d'attributs M, et une relation binaire I sur GxM qui indique pour chaque objet les attributs qu'il possède. La relation I étant donnée, il est possible de définir les deux fonctions suivantes : - f, qui à tout sous-ensemble d'objets B associe l'ensemble des attributs communs à tous les objets, f(B) = Bτ = {m e M | u I m pour tout u e B} ;
• g, qui à tout sous-ensemble d'attributs A associe l'ensemble des objets qui possèdent au moins tous ces attributs, g(A) = A1 = {u e G | u I m pour tout m e A}.
Chacune de ces fonctions forme une connexion de Galois entre les parties de G et les parties de M. La composition de ces fonctions f et g crée ainsi un système de fermeture de G sur M.
Egalement, un concept formel (X, Y), plus simplement qualifié de concept par la suite, est défini par deux sous-ensembles X et Y tels que :
• X est un sous-ensemble d'objets qui est l'extension du concept (X, Y) ;
• Y est un sous-ensemble d'attributs qui est l'intention du concept (X, Y);
- f(X) = Y ;
- g(Y) = X.
X est fermé pour g of, et Y est fermé pour fo g. La composition g of définit un opérateur de fermeture sur l'ensemble des attributs et fog un opérateur de fermeture sur l'ensemble des objets. L'opérateur de fermeture sur l'ensemble des attributs est noté λ par la suite (λ=g of). On définit également un système d'implications comme un ensemble d'implications Y, ^ Yk entre un premier sous-ensemble d'attributs Y1 et un second sous-ensemble d'attributs Yk, une telle implication signifiant que si un objet comporte tous les attributs du sous-ensemble Y,, alors cet objet comporte également tous les attributs du sous-ensemble Yk. Une base d'implications est un ensemble d'implications minimal permettant de dériver l'ensemble des implications du système.
Dans la théorie « FCA », il y a équivalence entre :
• l'opérateur de fermeture λ défini sur les sous-ensembles d'attributs (les parties de M), - un treillis de Galois de concepts,
• la relation binaire I,
• une base d'implications sur les sous-ensembles d'attributs.
Pour approfondir l'art antérieur, on pourra notamment consulter les publications suivantes : • Zenou et AI., « Characterization of image sets : The Galois lattice approach », RFIA 2004 ;
• Valtchev et AI., "A fast algorithm for building the Hasse diagram of a Galois lattice", Proceedings of the Colloque LaCIM 2000.
De manière générale, dans la plupart des applications, on construit le treillis de Galois à partir de l'opérateur de fermeture, afin de pouvoir indexer les attributs et les objets dans le treillis. L'opérateur de fermeture est typiquement obtenu, soit à partir de la relation binaire I, soit à partir d'un système d'implications. Une fois le treillis obtenu, il est également possible de déterminer une base d'implications produisant le même opérateur de fermeture, notamment lorsque ce dernier a été obtenu à partir de la relation binaire entre les attributs et les objets.
Généralement, les procédés FCA de classification existants visent à produire un treillis comprenant la totalité des concepts formels, autrement dit, tous les ensembles fermés vis à vis de l'opérateur de fermeture, puis à les ordonner conformément à la relation d'ordre partiel du treillis. Ensuite,
pour représenter le treillis, un diagramme de Hasse est généralement construit, ce diagramme représentant la réduction transitive de la relation d'ordre du treillis. Toutefois, ces procédés deviennent inexploitables lorsque la taxonomie étudiée comprend plusieurs dizaines d'attributs ou plus, car la complexité de calcul desdits procédés évolue de façon combinatoire en fonction de la taille des données d'entrée à traiter (exponentiellement dans le pire cas). En effet, la génération de la totalité des concepts formels peut s'avérer très coûteuse, tant en occupation mémoire qu'en puissance de calcul, car dans le pire cas, le nombre de concepts formels est égal au nombre de partitions de l'ensemble des attributs, c'est à dire 2 à la puissance le nombre d'attributs. Or, dans beaucoup de situations pratiques, on souhaite établir un treillis de Galois qui contient seulement une fraction bien identifiée de concepts formels, considérés utiles pour une application particulière, et ce tout en préservant la structure de treillis. Un deuxième inconvénient des procédés existants est qu'ils ne prennent pas en compte les incompatibilités entre attributs. Par exemple, lorsqu'on souhaite classer des véhicules, il est a priori connu qu'un véhicule comprenant l'attribut « véhicule à chenilles » ne peut comprendre l'attribut « véhicule de tourisme ». Or, spécifier ce type d'incompatibilités peut faciliter la classification des objets.
Un but de l'invention est de diminuer la consommation de mémoire et/ou la quantité de calculs requis pour classer des objets dans une structure mémoire organisée en treillis de Galois, ledit treillis comprenant un nombre minimum de concepts formels {objets, attributs}, l'ensemble desdits concepts formant une fraction de tous les concepts formels qui peuvent être déduits de l'ensemble des attributs considérés pour classer les objets. A cet effet, l'invention a pour objet un procédé de structuration d'une base de données d'objets comportant chacun un ou plusieurs attributs, les attributs étant ordonnés, le procédé étant exécuté par au moins une unité de calcul associée à une mémoire, le procédé classant en mémoire les objets dans une structure formée d'une liste CL ordonnée de concepts formels utiles C1, le procédé étant caractérisé en ce qu'il comporte au moins les étapes suivantes : o créer plusieurs groupes d'attributs SAI, chacun desdits groupes rassemblant plusieurs attributs choisis parmi les attributs existants ;
o pour chacun desdits groupes SAι, construire un ensemble fermé P1 résultant de l'application d'un opérateur de fermeture sur SAI ; o à partir des ensembles fermés d'attributs P1 créés précédemment, déterminer la liste CL des concepts formels utiles C, ordonnés dans l'ordre lexicographique, ordre obtenu à partir de leur intention, l'intention F d'un concept formel C, étant formée par un ensemble d'ensembles fermés P1.
Ce procédé permet de réduire le nombre de concepts formels à calculer pour construite la liste CL, et de diminuer le temps de calcul et l'espace mémoire, pour la construction de cette liste et pour les calculs ultérieurs.
Ainsi, à performances identiques à celles obtenues avec des procédés classiques, les ressources matérielles de calcul et de mémoire peuvent être réduites. A la différence d'un procédé classique qui produit une liste de concepts formels C, chacun desdits concepts C, comprenant d'une part, une extension formée d'objets tous pourvus d'au moins tous les attributs d'un ensemble I1, ledit concept formel C, comprenant d'autre part, une intention formée uniquement des attributs de l'ensemble I1, lesdits attributs étant les attributs communs à tous lesdits objets, les concepts formels produits par le procédé selon l'invention comprennent une intention formée d'ensembles fermés d'attributs P,, les objets de l'extension du concept étant au moins pourvus de tous les attributs compris par ces ensembles fermés P1.
Les groupes d'attributs SAI sont constitués de sorte que pour chaque objet que l'utilisateur souhaite classer, l'ensemble de ses attributs peut être décrit soit par un groupe SAI, soit par une union de groupes SAI-
Selon un mode de mise en œuvre du procédé selon l'invention, le procédé classe les objets dans une structure mémoire formant un treillis de Galois, le procédé construisant une liste Border de concepts formels correspondant chacun à un nœud du treillis, le procédé étant caractérisé en ce qu'il associe au concept C, d'un noeud du treillis une liste upperCover(Ci) de concepts formels dont l'intention, formée d'ensembles fermés d'attributs P1, est comprise dans l'intention du concept C1. Le treillis peut ainsi être représenté sous la forme d'un diagramme de Hasse.
Selon un mode de mise en œuvre du procédé selon l'invention, une ou plusieurs données spécifiant des implications d'attributs sont fournies en entrée du procédé, chaque donnée d'implication d'attributs comportant un premier ensemble d'attributs et un second ensemble d'attributs, la présence des attributs du premier ensemble dans un objet impliquant la présence des attributs du second ensemble dans ledit objet, les données d'implication étant utilisées pour déterminer les ensembles fermés d'attributs P1 à partir des groupes d'attributs SAI, au moins une donnée d'implication comportant, dans le second ensemble d'attributs, un attribut distinctif a , ledit attribut étant nécessairement absent de tous les objets, de sorte que ladite donnée d'implication spécifie des attributs incompatibles entre-eux, la présence d'un attribut du premier ensemble dans un objet impliquant l'absence simultanée de tous les autres attributs de ce premier ensemble dans ledit objet. L'introduction de cet attribut distinctif a facilite, accélère et améliore la construction du treillis en enrichissant le système d'implications permettant de déterminer la fermeture des groupes d'attributs SAI-
L'invention a également pour objet un système d'information opérationnel mettant en œuvre le procédé tel que décrit plus haut, pour classer des entités tactiques afin, notamment, de permettre un accès rapide aux dites entités et de faciliter la fusion de plusieurs entités enregistrées dans la base de données lorsque ces entités correspondent au même objet réel.
Le procédé selon l'invention peut également, par exemple, être mis en œuvre dans un système d'information géographique pour classer des objets géoréférencés par ledit système.
Plus généralement, le procédé de structuration d'une base de données selon l'invention peut être utilisé dans tous les domaines où l'on cherche à classer des individus selon leurs caractéristiques. Par exemple, dans le cas de la biochimie, on peut classer les molécules ou composés selon les fragments moléculaires. Dans le cas de la botanique, les espèces peuvent être classées selon leurs caractéristiques.
D'autres caractéristiques apparaîtront à la lecture de la description détaillée donnée à titre d'exemple et non limitative qui suit faite en regard de dessins annexés qui représentent :
- la figure 1 , les étapes d'un procédé selon l'invention, les figures 2a et 2b, un treillis respectivement obtenu avec un procédé classique et avec un procédé selon l'invention.
Pour classer les objets d'un ensemble O, on souhaite construire un treillis de Galois de taille minimale à partir d'un ensemble d'attributs A, les objets de O comportant des attributs appartenant à l'ensemble A.
Contrairement aux procédés classiques, le procédé selon l'invention ne prend en compte qu'une fraction des parties de A. En effet, pour beaucoup d'applications, les combinaisons d'attributs ne sont pas toutes pertinentes, car certains types d'objets peuvent être ignorés par l'application. Aussi, il est inutilement coûteux de considérer la totalité les concepts formels possiblement formés à partir des attributs reçus en entrée.
Dès lors, comme illustré sur la figure, il est créé, au cours d'une première étape 101 du procédé selon l'invention, une liste SA comprenant une fraction des parties de A. Ces parties de A sont constituées préalablement à l'exécution des étapes de construction du treillis, en fonction des besoins de l'utilisateur vis à vis de l'application. La liste SA comprend donc des groupes SAI , ..., SAm, chacun de ces groupes SAI 1 ≤ i ≤ m étant un ensemble d'attributs.
En outre, une relation d'ordre arbitraire est définie sur l'ensemble des attributs A, et un système d'implications est fourni en entrée du procédé, système d'implications duquel est déduit, en utilisant des techniques connues de l'homme du métier, un opérateur de fermeture λ sur un ensemble d'attributs.
Le procédé selon l'invention est basé sur le procédé de Ganter, mais contrairement au procédé classique de Ganter, qui traite une simple liste d'attributs, le procédé selon l'invention traite la liste SA comprenant des groupes SAI d'attributs. Le procédé selon l'invention exécute ensuite les étapes suivantes :
• déterminer en utilisant l'opérateur de fermeture λ, pour chaque groupe d'attributs SAI de SA, l'ensemble fermé d'attributs correspondant P, = λ(SAι) ; pour simplifier la description, on manipulera, par la suite, des ensembles fermés d'attributs, sachant que pour chacun desdits ensembles fermés, il suffit d'appliquer la fonction g sur ledit ensemble
fermé pour obtenir le concept formel correspondant sous la forme d'un couple (objets, attributs), cette étape est référencée 102 sur la figure
1 ;
• créer un ensemble fermé d'attributs F en l'initialisant par la fermeture de l'ensemble d'attributs vide : F := λ(0) ;
• initialiser l'ensemble FL des ensembles fermés d'attributs rangés dans l'ordre lexicographique en ajoutant F à FL : FL = {F} ;
• tant que l'ensemble fermé d'attributs F est différent de A (étape référencée 103 sur la figure) : o déterminer le plus petit ensemble fermé d'attributs B supérieur lexicographiquement à F : B = FerméSuivant(F) ; o si B n'existe pas, terminer l'exécution du procédé ; o sinon, ajouter B à l'ensemble FL et affecter B à F ; En sortie du procédé de l'exemple, on obtient une liste FL d'ensembles fermés d'attributs classés dans l'ordre lexicographique. Une liste CL des concepts formels classés dans le même ordre peut alors être générée à partir de la liste FL.
L'étape « B = FerméSuivant(F) », permettant de déterminer le plus petit ensemble fermé d'attributs C supérieur lexicographiquement à un ensemble F fourni en entrée, est détaillée comme suit :
• créer un ensemble d'attributs A1 en l'initialisant à max(P), avec P = { P-i, P2, ... , Pm }, Pj étant lexicographiquement inférieur à Pk pour tout j et k tels que 1 < j < m-1 et k=j+1 ;
• interpréter F en tant qu'ensemble d'ensembles d'attributs, autrement dit, F = { PFi, PF2, ... , PFX, RF } avec |F| < m+1 , PFj pour 1 < j < x étant un ensemble fermé d'attributs appartenant à l'ensemble P et RF étant un ensemble résiduel comprenant des attributs n'appartenant à aucun des ensembles fermés de P ;
• itérer les étapes suivantes : • si le sous-ensemble d'attributs A, n'est pas inclus dans F : o modifier F comme suit : F := (F n { A-i, ..., A,.-ι}) u { A, } ; o interpréter F en tant qu'ensemble d'attributs en rassemblant dans un seul ensemble F' tous les attributs compris dans les sous-ensembles d'attributs compris dans F ;
o déterminer le fermé de F' : B' := λ(F'), c'est à dire l'ensemble des attributs en commun de tous les objets comportant au moins les attributs de F' ; o interpréter B' en tant qu'ensemble d'ensembles d'attributs en partionnant les attributs de B' pour former un ensemble B tel que B = { PBi, PB2, - - - , Pβy, RB} avec |B| < m+1 , les éléments
PBj pour 1 < j < y étant des ensembles fermé d'attributs appartenant à l'ensemble P, RB étant un ensemble résiduel comprenant des attributs de B' n'appartenant à aucun des ensembles fermés de P ; o si B \ F ne comprend aucun élément inférieur à A1, retourner B ;
• sinon, si le sous-ensemble d'attributs A, est inclus dans F, retirer A, de F : F := F \ A, ;
• si A, est égal à min(P), alors l'ensemble fermé d'attributs lexicographiquement supérieur n'existe pas, terminer l'étape
FerméSuivant() ;
• sinon, remplacer A1 par l'ensemble précédant A1 dans la liste P, c'est à dire par le plus grand ensemble appartenant à P parmi les ensembles lexicographiquement plus petits que A1. Les ensembles P, jouent un rôle de briques élémentaires insécables dans la formation des ensembles d'attributs.
Contrairement à une procédure de Ganter classique, A, représente un ensemble d'attributs, et non pas un attribut, de sorte que l'opération « F := (F n { A-i , ..., Aι_i}) u { A, } » est une intersection entre deux ensembles d'ensembles d'attributs et non pas entre des ensembles d'attributs.
La complexité de la procédure de Ganter étant exponentielle, le gain en temps de calcul et en utilisation mémoire par rapport à un procédé classique est d'autant plus grand que le nombre d'attributs en entrée est élevé. Pour un procédé de Ganter classique, le temps de calculs et l'espace mémoire requis sont, dans le pire des cas, proportionnels à 2 à la puissance le nombre d'attributs puisque le procédé passe en revue au moins une fois chaque fermé de A. Par contre, le temps de calculs et l'espace mémoire requis par le procédé selon l'invention sont, dans le pire des cas, proportionnels à 2 à la puissance le cardinal de P.
Par ailleurs, selon un mode de mise en oeuvre du procédé selon l'invention, on exprime l'incompatibilité entre plusieurs attributs pour enrichir le système d'implications fourni en entrée du procédé. Par rapport aux procédés classiques, un attribut particulier est ajouté, cet attribut étant par la suite, qualifié « d'attribut absurde » et noté a . L'attribut absurde a implique tous les attributs :
Afin d'exprimer l'incompatibilité entre les attributs d'un sous- ensemble P = { a-i, ..., ap }, l'implication suivante est ajoutée dans le système d'implications :
{ a-i, ..., ap } -» a±
Cette dernière implication signifie que si un objet comprend, par exemple, deux attributs a, et ak, 1 ≤ i ≤ p et 1 ≤ k ≤ p, alors cet objet ne comprend pas tous les autres attributs ax de P, 1 ≤ x ≤ p, x ≠ i et x ≠ k. Il est à noter que cette implication est plus restrictive que la série d'implications suivantes :
{a-i, a2} * a±, fa , a3} * a±, ..., fa , ap} •*• a± ;
{a2, a3} * a± ; ... ; {a2, ap} •*• a± ;
{ap-i , ap} -* a± laquelle série exprime l'incompatibilité de toutes les paires d'attributs du sous-ensemble P, autrement dit, si un objet comprend un attribut de P, alors cet objet ne comprend aucun autre attribut de P.
Selon ce mode de mise en oeuvre, la liste C des ensembles d'attributs, fournie en entrée du procédé, comprend le singleton formé de l'attribut absurde a .
Pour représenter le treillis généré précédemment, un second procédé est exécuté en vue de construire le diagramme de Hasse. Ce second procédé reçoit en entrée la liste CL = { Ci, C2, ... , CN} de concepts formels classés dans l'ordre lexicographique, c'est à dire classés dans l'ordre compatible de l'inclusion sur l'intention des concepts. Cette liste CL a, par exemple, été générée par le procédé de la figure 1 . On rappelle que l'intention d'un concept formel est égal à l'ensemble fermé d'attributs compris par les objets dudit concept. Là encore, la manipulation d'ensembles
d'ensembles d'attributs impose l'utilisation d'un procédé non classique pour générer le diagramme de Hasse, ce procédé étant décliné comme suit : - Border := { Ci} ; • pour i variant de 2 à N : • Cover := 0 ;
• Pour tout concept C appartenant à l'ensemble Border : o ce = FindConceptBylntentAbove(\ntent\on(C) n intention(C), C) ; o Cover := AddAndKeepMinima{ Cover , ce) ;
• upperCover(C) = 0 ; • Pour tout concept C appartenant à l'ensemble Cover : o ajouter le concept C à l'ensemble upperCover(C) ; o ôter le concept C de l'ensemble Border ;
• ajouter l'ensemble C1 à l'ensemble Border.
A l'issue de ce procédé, on obtient un treillis sous la forme d'un ensemble « Border » de concepts formels, chaque concept étant associé à sa couverture supérieure « upperCover(Cι) », de manière à pouvoir représenter le treillis sous la forme d'un diagramme de Hasse. La couverture supérieure upperCover(Cι) est une liste de concepts formels dont l'intention, formée d'ensembles fermés d'attributs P1, est comprise dans l'intention du concept C1.
Par rapport à un procédé classique de construction de diagramme de Hasse, l'interprétation de l'opération « intention(C) n intention(Cι) » est différente. En effet, cette opération n'est pas une intersection entre deux simples ensembles d'attributs, mais entre deux ensembles d'ensembles fermés d'attributs. Le résultat de cette intersection est également un ensemble d'ensembles fermés d'attributs. Pour pouvoir être utilisée comme argument de la procédure FindConceptBylntentAbove classique, le résultat est transformé en union de tous les ensembles d'attributs contenus dans l'ensemble résultant de l'intersection. La procédure FindConceptBylntentAbove identifie un concept par son intention, interprétée au sens classique comme un ensemble d'attributs, sachant que ce concept est supérieur ou égal à un concept donné en entrée. La procédure AddAndKeepMinima ne conserve, au sein d'une liste de concepts formels, que les concepts dont l'intention est incluse dans l'intention d'un concept fourni en entrée. Les procédures
FindConceptBylntentAbove et AddAndKeepMinima sont des procédures classiques qui sont rappelées plus loin, en annexes.
La figure 2a présente un treillis obtenu avec un procédé classique. Dans un premier temps, on considère l'ensemble A des attributs suivants : A = {a-i, a2, a3, a4, a5, a6, a7, a } où a désigne l'attribut absurde. En outre, on considère le système d'implications suivant :
{a-i, a2} -» {a3, a4}
{a5} * {a6} {a4, asj -^ a1}
{a3, a4, a7} •*• { a2}
{a1} -* {ai, a2, a3, a4 a5, a6, a7}.
Sur la base de cet ensemble d'attributs et ce système d'implications, un procédé classique aboutit à un opérateur de fermeture qui génère un treillis 201 , illustré en figure 2a, comprenant 61 nœuds.
La figure 2b présente un treillis obtenu avec un procédé selon l'invention. Si l'on ne s'intéresse qu'aux sous-ensembles d'attributs suivants :
A1 = {a2, a5, a6}
A2 = {a3, a5} A3 = {a4, a7}
Le procédé selon l'invention permet, à partir de ces sous- ensembles d'attributs A1 , A2, A3 et du système d'implication susmentionné, d'obtenir le treillis « utile » 202 illustré en figure 2b, lequel est nettement moins complexe que le treillis de la figure 2a puisqu'il comprend seulement 6 nœuds, représentés sur la figure par des rectangles.
Outre, l'économie de ressources de calcul et/ou de mémoire obtenue lors du classement des objets, un avantage du procédé selon l'invention est que, du fait de la sélection effectuée préalablement grâce à la constitution de groupes d'attributs, il permet de focaliser la construction du treillis autour des objets que l'utilisateur souhaite classer, et ainsi obtenir un diagramme de Hasse plus lisible, car non encombré avec d'autres objets sans intérêt pour l'utilisateur.
Les gains en ressources dus au procédé selon l'invention sont particulièrement notables lorsque les taxonomies des objets à étudier sont très étendues. Aussi, le procédé peut s'appliquer dans une multitude de
domaines, comme la taxonomie botanique ou moléculaire, pour structurer la base de données d'un système d'information géographique, d'un système de surveillance, d'analyse financière ou plus généralement pour structurer des bases de données de systèmes de collecte et de gestion d'informations.
ANNEXES
Procédure LinClosure : Entrées : o ensemble des attributs, noté M ; o une liste d'implications sur M, liste notée L ; o un sous-ensemble de M dont on cherche à calculer la fermeture, sous-ensemble noté X ; Sortie : o la fermeture de X vis à vis de L, notée L(X)
Hόhi it nmr*όHι IΓΌ
pour tout x e M faire : avoid[x] = {Li, L2, ... L}; pour tout y e (L1, L2, ... Ln} faire si x e condition_suffisante(y), alors retirer y de avoid[x] ; fin pour tout y fin pour tout x usedlmps = 0 ; oldClosure = 0 ; newClosure = X ; tant que (oldClosure ≠ newClosure) oldClosure := newClosure ; T = M \ newClosure ; useablelmp = nxeT { avoid[x] } ; ulmp := useablelmp \ usedlmp ; usedlmp := useablelmp ; pour tout i e ulmp newClosure := newClosure u conclusion(i) ; fin pour tout fin tant que L(X) := newClosure ;
fin IΛΓOΓ*OH I IΓΌ
Procédure FindConceptBylntentAbove :
Entrées : o le treillis de concepts en cours d'élaboration, indiquant pour chaque concept sa couverture supérieure, dénommée « upperCover », qui a été calculée par le second procédé (diagramme de Hasse) ; o l'ensemble des attributs, noté inputlntent, dont on recherche le concept correspondant ; o un concept formel, noté inputConcept, à partir duquel on effectue la recherche. Sortie : o le concept formel, noté curConcept, dont l'intention est égale à Inputlntent
Hόhi it IΛΓOΓ*OH I IΓΌ
curConcept :=inputConcept tant que (intention(curConcept) ≠ inputlntent) up := faux pour tout concept formel c e upperCover(curConcept) si (inputlntent ç intention(c)) up := vrai ; curConcept := c ; quitter la boucle « pour tout concept formel c » fin si fin pour tout c si up est faux, retourner une erreur fin tant que retourner curConcept
fin procédure —
Procédure AddAndKeepMinima : Entrée : o la relation d'ordre dans le treillis de concepts, notée <L ; o un ensemble de concepts du treillis, noté InCset ; o un concept du treillis, noté InC. Sortie : o l'ensemble de concepts formels InCset sans les concepts formels supérieurs au concept formel InC
Hόhi it IΛΓOΓ*OH I IΓΌ
pour tout concept formel c e inCset si (c <ι_ inC), ne pas modifier l'ensemble inCset si (inC < L c), retirer c de l'ensemble inCset fin pour tout inCset := inCset u {inC}
fin procédure