Vous êtes sur la page 1sur 2

CPGE MP-PSI

Les arbres en Python

Problème 1.
Dans le but de traiter une langue naturelle de manière automatique, on modélise les entités de cette langue
sous forme arborescence.
Dans ce problème, on modélise un système de plusieurs phrases en français par un arbre binaire PH. En
prenant l’arbre PH comme référence, répondre aux questions suivantes :
il

est a

content triste mangé écrit

aujourd’hui sur une lettre

le mur le téléphone

Question 1. Ecrire une fonction vide qui retourne True si l’arbre passé en paramètre est vide et False
sinon.
Question 2. Ecrire une fonction DernierMot qui retourne True si le mot passé en paramètre est le
dernier mot d’une phrase et False sinon.
Exemples d’appel :
 DernierMot(PH,’est’) retourne False
 DernierMot(PH,’une lettre’) retourne True
 DernierMot(PH,’pomme’) retourne False
Question 3. Ecrire une fonction NbPhrases qui retourne le nombre de toutes les phrases qu’on peut lire
sur l’arbre PH. Dans notre exemple ce sont 6 phrases.
Question 4. Ecrire une fonction MX qui retourne la valeur maximale des deux variables passées en
paramètre.
Question 5. Ecrire une fonction NbMotsPlusLonguePh qui retourne le nombre des mots de la phrase la
plus longue dans un arbre fourni en argument.
Question 6. Ecrire une fonction AfficherUnePhrase qui permet d’afficher une seule phrase (à votre
choix) parmi les phrases de l’arbre PH.
Question 7. La complexité de la fonction de la question 6 est donnée en fonction de quel facteur ? La
calculer dans le pire des cas.

1/2
CPGE MP-PSI

Problème 2.
On considère l’arbre généalogique des ancêtres d’une personne. Le niveau 0 présente la racine de l’arbre qui est la
personne étudiée, le niveau 1 présente le père et la mère de cette personne et le niveau suivant présente leurs
parents et ainsi de suite.

L’exemple suivant montre un arbre généalogique des ancêtres de la personne nommée « Mohammed ».

Mohammed

Ahmed Sara

Ali Layla Said Hajar

Larbi Fatima Mohammed Fatima Nouh Farida Mohammed Hind

Le père de « Mohammed » est « Ahmed », sa mère est « Sara ». Les parents de son père sont « Ali » et « Layla ».

Pour toute personne de cette famille, on considère que ses parents ne font pas partie de la même famille et n’ont
aucun autre lien que le mariage (le père et la mère ne peuvent être cousins par exemple).

Ainsi, on représente cette famille par un arbre binaire où chaque sous arbre gauche présente le père et sa famille, et
chaque sous arbre droit présente la mère et sa famille.

Une famille est représentée par un arbre binaire sous forme de Liste de listes. Chaque liste est composée de 3
éléments : une chaine de caractère ; le prénom et 2 listes qui présentent respectivement l’arbre du père et l’arbre
de la mère.
Soit un arbre F qui représente une famille des ancêtres comme précédemment présenté.

Question 8. Ecrire une fonction GrandPere(F) qui retourne le niveau du plus ancien grand père connu
pour la famille F.

Question 9. Ecrire une fonction NbPersNom(F, prenom) qui retourne le nombre de personnes qui
portent le prénom : prenom (2ème paramètre de la fonction) dans cette famille.

Question 10. Ecrire une fonction NbPersFam(F) qui retourne le nombre de personnes de la famille F
jusqu’au plus ancien grand père connu.

Question 11. Ecrire une fonction NivParent(F, prenom) qui retourne le niveau de la personne désignée
par le paramètre prénom. (On se limite au premier prénom rencontré selon le parcours choisi).

Exemples :

− NivParent(F, ’Ahmed’) retourne le niveau 1 ; donc c’est le père.


− NivParent(F, ’Ali’) retourne le niveau 2 ; donc c’est un grand père.
− NivParent(F, ’Larbi’) retourne le niveau 3 ; donc c’est un grand père de niveau 3.

2/2

Vous aimerez peut-être aussi