• Aucun résultat trouvé

Parcours d’un arbre

Dans le document Conception et Analyse d’algorithmes (Page 62-66)

On va attaquer des algorithmes de parcours d’un arbre. Cela permet de visiter tous les nœuds de l’arbre et éventuellement d’appliquer une fonction sur ces nœuds. On distinguera deux types de parcours : le parcours en profondeur et le parcours en largeur. Le parcours en profondeur permet d’explorer l’arbre en explorant jusqu’au bout une branche pour passer à la suivante. Le parcours en largeur permet d’explorer l’arbre niveau par niveau. C’est à dire que l’on va parcourir tous les nœuds du niveau un puis ceux du niveau deux et ainsi de suite jusqu’à l’exploration de tous les nœuds.

Parcours en profondeur

Le parcours en profondeur de l’arbre, montré dans la figure 3.1.7, donne 1,2,3,4,5,6,7,8,9,10

Figure 3.1.7 : Parcours en profondeur Parcours préfixe de l’arbre : 1-2-3-4-5-6-7-8-9-10

Celui-ci représente un seul parcours en profondeur de l’arbre. Il s’agit d’un parcours d’arbre en profondeur à gauche d’abord et préfixe.

Profondeur parcours préfixe

Les types de parcours infixe, suffixe et post-fixe sont les plus importants, en effet chacun à son application particulière. Nous Commençons par le parcours préfixe, celui-ci traite la racine d’abord.

La fonction (ou procédure) traiter_racine, est une fonction que vous définissez vous même, il s’agit par exemple d’une fonction d’affichage de l’élément qui est à la racine.

Profondeur parcours infixe

Dans cette activité, on a étudié les arbres en général et les arbres binaires en

particulier. D’après l’étude qu’on a faite sur les algorithmes itératifs du parcours en profondeur dans un arbre binaire on peut déceler les problèmes qui y sont liés. Pour aboutir à l’algorithme

proprement dit pour chacun des différents parcours en profondeur, nous retenons qu’il faut procéder par deux phases qui sont l’empilement et le dépilement. Par ailleurs cette étude nous a aussi permis de nous familiariser à la résolution de problèmes formalisés de façon récursive avec des procédés itératifs

Évaluation

Voici une liste aléatoire de 15 éléments. Notez que vous pouvez faire cet exercice en prenant une autre liste aléatoire ; évidemment, il y a peu de chances que vous obteniez le même résultat.

25 60 35 10 5 20 65 45 70 40 50 55 30 15

On s’intéresse aux arbres binaires de recherche.

1. Rappelez les propriétés des arbres binaires de recherche.

2. Rappelez ce qu’est l’opération d’adjonction aux feuilles.

3. Construire l’arbre binaire de recherche par adjonction des valeurs aux feuilles, dans l’ordre de la liste. On s’attachera particulièrement à expliquer le raisonnement.

4. Donner la liste infixée de l’arbre obtenu, en justifiant votre raisonnement.

Quelle propriété a-t-elle ? Est-ce toujours le cas ?

Correction

1. Un arbre binaire de recherche est tel que tout nœud a une clé supérieure à celles des nœuds de son sous arbre gauche et inférieure à celles des nœuds de son sous arbre droit. On peut encore dire que la clé d’un nœud est comprise entre la plus grande clé de son sous arbre gauche et la plus petite clé de son sous arbre droit.

2. L’adjonction aux feuilles consiste à rechercher où devrait être la feuille si elle était déjà dans l’arbre et à la mettre à cet endroit.

3. 25 est introduit dans un arbre vide. 60 étant plus grand que 25 est mis à droite de 25. 35 étant plus grand que 25 et plus petit que 60 est mis à gauche de 60. 10 est plus petit que 25 est mis à gauche de 25. 5 est plus petit que 25 et plus petit que 10, il est mis à gauche de 10. 20 est plus petit que 25 et plus grand que 10, il est mis à droite de 10. 65 est plus grand que 25 et plus grand que 60, il est mis à droite de 60. 45 est plus grand que 25, plus petit que 60 et plus grand que 35, il est mis à droite

de 35. 70 est plus grand que 25, plus grand que 60 et plus grand que 65.

Il est mis à droite de 65. 40 est plus grand que 25, plus petit que 60, plus grand que 35 et plus petit que 45, il est mis à gauche de 45. 50 est plus grand que 25, plus petit que 60, plus grand que 35 et plus grand que 45, il est mis à droite de 45. 55 est plus grand que 25, plus petit que 60, plus grand que 35, plus grand que 45, plus grand que 50, il est mis à droite de 50. 30 est plus grand que 25, plus petit que 60 et plus petit que 35, il est mis à gauche de 35. Enfin, 15 est plus petit que 25, plus grand que 10 et plus petit que 20, il est mis à gauche de 20. On obtient l’arbre suivant.

4. La liste infixée de l’arbre est obtenue en faisant une exploration à main gauche, et en sortant le nœud après l’exploration de son sous arbre gauche et avant l’exploration de son sous arbre droit. C’est donc la suivante: 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70 Cette liste est une liste ordonnée. C’est une des propriétés d’un arbre binaire de recherche que sa liste infixée soit une liste triée, qui découle directement de la propriété énoncée dans la question A.

Activité 2: Algorithmes des Graphes Présentation

Le graphe est une structure de données très utilisées dans divers domaines par exemple :

• réseaux de transport routier, transport d’eau, d’électricité

• réseaux de transport de données (réseau de téléphonie fixe, GSM, wifi )

• réseaux d’informations (bases de données, web, réseaux sociaux . . .).

Cette structure permet de représenter des relations entre éléments. Un graphe est constitué d’un ensemble S de sommets mis en relation par un ensemble A d’arêtes ou arcs, couples d’éléments de S.

Il y a des types particuliers de graphes. Parmi eux :

Les graphes non-orientés où la directionnalité de l’arête n’intervient pas : ainsi si (i,j) ∈ A alors (j,i) ∈ A.

• Les arbres qui constituent des graphes particuliers avec définition d’un sommet racine : tout sommet de l’arbre ne peut alors être atteint que par un chemin unique depuis la racine.

• Les graphes acycliques qui ne comportent aucun cycle (un graphe comporte un cycle lorsqu’il est possible de trouver un chemin arbitrairement long entre deux sommets de celui-ci).

• Les automates qui représentent des graphes dont les arêtes sont étiquetées avec définition d’une liste d’états initiaux et d’états terminaux.

• Les graphes d’arêtes évaluées où l’on associe à chaque arête une valeur.

Nous nous intéressons ici à la structure générale de graphe (non-orienté et non-acyclique).

La figure 3.2.1 montre un graphe G orienté d’ordre 5. Il y a une boucle sur les sommets B et E.

Figure 3.2.1 : Graphe G orienté

Dans le document Conception et Analyse d’algorithmes (Page 62-66)

Documents relatifs