Tables de décision

question posée à l'examen écrit du 25 juin 1998

Avec les déclarations suivantes définissant une table de décision ainsi qu'un arbre binaire ordonné, écrivez une fonction «ConstruitArbre» qui convertisse une table de décision condensée (paramètre d'entrée) en arbre binairee (paramètre de sortie) où les feuilles contiennent les indicateurs d'actions d'une règle et les noeuds intermédiaires contiennent le texte des conditions de façon que l'arborescence permette de sélectionner la règle qui s'appliquera à un cas donné.

Indication: il faut s'inspirer de l'algorithme de conversion d'une table de décision en cascade de tests, mais construire une structure d'arbre au lieu de produire du code Pascal.

const MaxNbCond = ...;
      MaxNbRegles = ...;
      MaxNbActions = ...;

type Conditions =(Vrai, Faux, Indetermine);

     TableDecision = record
         NbConditions: 1..MaxNbCond;
         NbRegles: 1..MaxNbRegles;
         ValCond: array[1..MaxNbRegles, 1..MaxNbCond] of Conditions;
         NbActions: 1..MaxNbActions;
         Agir: array[1..MaxNbRegles, 1..MaxNbActions] of boolean;
         TxtConditions:array[1..MaxNbCond] of string[30];
         TxtActions:array[1..MaxNbActions] of string[30];
         end; { TableDecision }

     PtrNoeud: ^Noeud;

     Noeud = record
               case Feuille: boolean of
               false: (TxtCond: string[30];
                       Vrai, Faux: PtrNoeud);
                true: (Actions: array[1..MaxNbActions] of boolean);
               end; { Noeud }

function ConstruitArbre(Table: TableDecision): PtrNoeud;

solution

Site Hosting: Bronco