Questions / réponses

parameters_gen

parameters_gen

door Imane Abed -
Aantal antwoorden: 4
Bonjour, j'ai du mal a coder les deux dernières fonctions de parameters_gen,


- la longueur d'une branche la plus longue dont tous les noeuds satisfont p.
- la longueur d'une branche la plus longue dont au moins un noeud satisfait p. 

pourriez vous me guider ?

Merci


IA

Als antwoord op Imane Abed

Re: parameters_gen

door Marc Zeitoun -

Il nous faut plus de détails : une question précise sur l'exercice ou un code incorrect sur lequel nous pourrons nous baser pour répondre...

Als antwoord op Marc Zeitoun

Re: parameters_gen

door Imane Abed -

J'ai écris ces fonction, none est une fonction auxiliare qui renvoie true si aucun des noeuds de l'arbre entré en paramètre ne vérifie le prédicat p, all devrait renvoyer la longueur de la branche maximal dont tous les noeuds verifient p, et one_or_more devrait renvoyer la longueur de la branche maximal dont au moins un des noeuds verifie p, cependant elles ne marchent pas...

let rec none p t=

  match t with

    Empty ->true

   |Bin(v,l,r)->if p v then false

                else (none p l) && (none p r)


let rec all p t =

    match t with

    Empty -> -1

   |Bin(v,l,r)->if none p l

                then if none p r

                    then -1

                    else 1+ (all p r) 

                else if none p r

                    then 1+ (all p l )

                    else 1+ max (all p l) (all p r) 

                        

let one_or_more p t=

  match t with

    Empty -> -1

   |Bin(v,l,r)->if p v

                    then height t

                    else if none p l

                        then if none p r

                            then -1

                            else 1+ (height r) 

                        else if none p r

                            then 1+ (height l )

                            else height t 

Als antwoord op Imane Abed

Re: parameters_gen

door Marc Zeitoun -

Il faut regarder les cas de petits arbres. 

Par exemple pour la fonction all, sur l'arbre 
    Bin(1, Empty, Empty)
la fonction all renvoie -1 quel que soit le prédicat p. Or, si 1 vérifie le prédicat (par exemple si p est "être impair"), la fonction devrait renvoyer 0 car il y a une seule branche dans l'arbre, (1), de longueur 0.

Il peut donc être utile de distinguer le cas où la racine est une feuille (comme sur cet exemple) des autres cas. 

L'information donnée par la fonction none n'est pas indispensable. Ce qui est important est de savoir s'il existe au moins une branche dont tous les nœuds satisfont p.


Als antwoord op Marc Zeitoun

Re: parameters_gen

door Imane Abed -

J'ai modifié ma fonction all, je l'ai testé sur les arbres dont moodle dit que la fonction parameters_gen échou, je pense que mon problème se situe maintenant dans la fonction one_or_more.

Pouvez vous me confirmer que la fonction all fonctionne correctement ?

Et me dire quelle est le problème de la fonction one_or_more ?

Merci, IA