Questions / réponses

paramètres importants des arbres binaires, le retour

paramètres importants des arbres binaires, le retour

par Julie Tilatti,
Nombre de réponses : 2

Bonjour,

Je réalisé une fonction qui me renvoie les bonnes valeurs lorsque que le prédicat p teste si l'étiquette de la feuille est paire. Or, certains tests ne passent pas la fonction (alors qu'ils me renvoient à priori les bonnes valeurs). Je voulais donc savoir s'il était possible qu'on me donne un exemple de prédicat pour lequel ma fonction ne renvoie pas les bons paramètres afin que je puisse la corriger.

Merci,

Julie Tilatti

En réponse à Julie Tilatti

Re: paramètres importants des arbres binaires, le retour

par Philippe Duchon,

Essayez de généraliser un peu votre prédicat, par exemple prendre un prédicat  "est divisible par 3", ou par 4, ou des variantes (valoir 1 modulo 3...)

Pour tester votre fonction (par vous-même, en dehors de moodle), l'une des difficultés est qu'il y a besoin d'arbres pas trop petits, mais aussi dans lesquels il y a beaucoup de noeuds satisfaisant le prédicat (pour qu'il y ait, au moins de temps en temps, des branches ne comportant que des noeuds satisfaisant le prédicat), mais aussi des arbres dans lesquels ces noeuds sont rares (pour qu'il y ait parfois des branches avec peu de tels noeuds).

Si votre fonction donne des résultats corrects pour le prédicat "être pair", mais pas pour le prédicat avec lequel sont faits les tests automatiques, c'est probablement que vos tests sont faits sur des arbres trop petits pour faire apparaître les cas problématiques. Il semble bien peu probable que votre fonction soit correcte pour le prédicat "être pair", mais pas pour ceux avec lesquels on la teste.

En réponse à Julie Tilatti

Re: paramètres importants des arbres binaires, le retour

par Philippe Duchon,

Un premier test que vous devriez faire pour cette fonction, si vous avez réussi l'exercice pour les "paramètres importants" (avant "le retour"), c'est de vérifier ce que votre fonction donne pour le prédicat "toujours vrai" (fun x -> true): si tous les noeuds satisfont toujours le prédicat, ça devrait être facile de vérifier la réponse.

Dans cet exercice, les deux derniers paramètres sont les plus difficiles. Pour chacun d'eux, posez-vous la question sous la forme suivante: en fonction de l'étiquette du noeud racine (et de si elle satisfait le prédicat), et des valeurs du paramètre sur les sous-arbre, comment s'exprime la valeur du paramètre? Il y a plusieurs cas possibles, qu'on est un peu obligé de traiter séparément.

Pour info, ma version de la fonction calcule en interne, non pas 6, mais 7 paramètres, pour éviter de faire plus d'un parcours.