• Aucun résultat trouvé

DS 1

N/A
N/A
Protected

Academic year: 2022

Partager "DS 1"

Copied!
2
0
0

Texte intégral

(1)

DS 1

Option informatique, deuxième année

Julien Reichert

Exercice 1 : Écrire en Caml une fonction maximum_ABR qui prend en entrée un arbre binaire de recherche et qui retourne la valeur maximale y figurant. Donner aussi sa signature. Définir au préalable un type adapté pour les arbres binaires de recherche.

Exercice 2 : Écrire en Caml ou en pseudo-code une fonctionrechercher_ABRqui prend en entrée un arbre binaire de recherche et une valeur et qui retourne la liste des directions prises pour trouver l’élément en question, le premier élément de la liste étant la direction prise depuis la racine, et les directions étant des booléens : true pour aller à droite et false pour aller à gauche. Si l’élément existe en plusieurs exemplaires, n’importe laquelle des listes possibles convient, et s’il n’est pas dans l’arbre, il faut déclencher une erreur.

À titre d’exemple, pour trouver la valeur13dans un arbre binaire de recherche en passant par les nœuds1,42,19 et13, la liste renvoyée sera[true; false; false].

Exercice 3 : Tri par tas.

Le principe est simple : on dispose d’une liste et on retourne sa version triée en créant un tas-min contenant tous les éléments de la liste en question puis en retirant successivement tous les éléments minimaux du tas en question.

Pour éviter de consommer trop de temps, il s’agit de disposer de tas modifiables, donc au choix des tas presque complets, pour lesquels les opérations élémentaires devront maintenir cette structure, plus faciles à implémenter, ou le type enregistrement proposé ci-dessous.

type ’a tas_binaire = { mutable vide : bool; mutable etiquette : ’a ; mutable gauche : ’a tas_binaire; mutable droite : ’a tas-binaire; };;

Un tas vide a sa rubriquevideàtrue, et on ignore alors les autres rubriques.

Question 1 : Avec l’implémentation au choix, écrire les opérations de base pour les tas.

Question 2 : Écrire alors simplement le tri par tas.

Question 3 : Estimer la complexité en admettant la propriété du cours sur la hauteur des tas (qui est de toute façon vérifiée sur les tas presque complets).

1

(2)

Exercice 4 : Arbres binaires et occurrences.

Il est possible de représenter un arbre binaire sous forme d’occurrences. Dans ce cas, si un nœud a pour occurrence µ, alors son fils gauche aura pour occurrenceµ0 et son fils droitµ1.

Nous nous proposons donc de représenter un arbre binaire à l’aide d’une chaîne de caractères constituée des diverses occurrences de l’arbre séparée les unes des autres par une virgule. Nous représenterons la racine parE(l’occurrence vide).

Soit l’arbre B défini, sous forme d’occurrences et représenté à l’aide d’une chaîne de caractères de la manière suivante :B = "E,0,1,00,01,10,11,001,101,1010,1011"

Question 1 : Comment, sans représenter l’arbre B, peut-on déterminer sa taille, sa hauteur, le fait qu’un de ses nœuds soit une feuille, la somme des hauteurs de ses nœuds et la hauteur moyenne de ses nœuds ?

Question 2 : Représenter graphiquement l’arbreB.

Exercice 5 : Mettre les expressions booléennes suivantes en forme normale disjonctive et éventuellement simplifier.

— (a∨ ¬b)∧(b∨ ¬c)∧(c∨ ¬a)

— (a∨b∨c)∧(a∨ ¬b∨c)∧(a∨ ¬b∨ ¬c)

— (¬a∨b)∧(a∨b∨c)∧ ¬c

2

Références

Documents relatifs

Exercice 3 Définir une fonction Caml qui prend en argument un entier n et qui retourne le squelette d’un arbre binaire complet de taille n s’il en existe, et déclenche une

Soit la fonction suivante qui prend en entrée une structure nœud arbre racine d’un arbre binaire de recherche et un entier valeur et qui retourne l’arbre

Chercher sur Internet l‘algorithme DSW (c’est un algorithme qui prend en entrée un arbre de recherche binaire afin de réaliser son équilibrage) et l’algorithme de

[r]

Exercice 2 : Écrire en Caml ou en pseudo-code une fonction insertion_ABR qui prend en entrée un arbre binaire de recherche et une valeur et qui retourne l’arbre binaire de

**** Exercice 9 (1) : Écrire en Python une fonction qui prend en entrée une liste et un nombre et retourne une liste de listes contenant des éléments de la liste en entrée

Exercice 2 : Écrire en Caml une fonction qui prend en entrée un arbre binaire et un prédicat et qui détermine si toutes les valeurs dans l'arbre vérient le prédicat.. On rappelle

Faire une figure montrant le positionnement des points A, B, C, D, E. 3) Représenter sur un cercle trigonométrique les différentes familles de solutions.. Retrouvez ces valeurs à