Extension des BG aux types conjonctifs :

Codage efficace d'une hiérarchie de types

Voir tous les sujets RCR

 

Encadrants : Michel Chein, Michel Leclère et Marie-Laure Mugnier

Type de sujet : algorithmique et programmation

Résumé : Ce stage consiste à implémenter efficacement une hiérarchie de types (ainsi que les incompatibilités entre types) de façon à résoudre un certain nombre de problèmes de base sur les types conjonctifs (éventuellement disjonctifs).

    On se donne une hiérarchie de types simples, partiellement ordonnée par la relation ≤ dite relation de spécialisation, et un ensemble de déclarations d'incompatibilités entre types (cf. définitions dans chapitre SG). On appelle type conjonctif un ensemble de types simples deux à deux incomparables. Un type conjonctif s'obtient à partir d'un ensemble de types en ne gardant que les types les plus spécialisés. Par exemple, à partir de l'ensemble {EntitéMobile, EntitéSousMarine, Poisson, Animal} avec EntitéSousMarine ≤ EntitéMobile, Poisson ≤ Animal, Poisson ≤ EntitéSousMarine, on obtient le type conjonctif {Poisson}.

    La relation de spécialisation est étendue aux types conjonctifs de la façon suivante :

    Autrement dit, t est une spécialisation de s, si tout type simple de s est spécialisé dans t. Par exemple, {Poisson, EntitéDeCouleurRouge} est une spécialisation de {Poisson} ainsi que de {Animal, EntitéSousMarine}.

    Les problèmes de base que l'on veut résoudre sont les suivants :

    L'ensemble des types conjonctifs que l'on peut construire à partir d'une hiérarchie de types simples a une taille exponentielle en la taille de la hiérarchie. Il n'est donc pas envisageable de représenter l'ensemble des types conjonctifs en extension. Le problème consiste alors à trouver une façon de représenter la hiérarchie des types simples ainsi que les incompatibilités de types, de façon à pouvoir résoudre efficacement les problèmes de base décrits ci-dessus.

    Le travail partira d'un chapitre d'une thèse décrivant différentes méthodes de codage d'ordres partiels (Thèse de E. Thierry, "Sur quelques interactions entre structures de données et algorithmes efficaces pour les ordres et les graphes", 2001). Il s'agira de choisir une méthode, de l'adapter, puis de l'implémenter.

    Le résultat devra être intégré à la plate-forme CoGITaNT (une plate-forme C++ de développement d'applications à base de graphes conceptuels http://cogitant.sourceforge.net/).

    Enfin, on pourra alors s'intéresser à l'introduction de types disjonctifs et à l'utilisation du codage proposé pour traiter de tels types.