• Aucun résultat trouvé

1 Tas binaire minimum

N/A
N/A
Protected

Academic year: 2022

Partager "1 Tas binaire minimum"

Copied!
1
0
0

Texte intégral

(1)

Université de Bordeaux Licence Informatique, 3e année

Année 2021-2022 TD/TP: feuille 3

Techniques Algorithmiques et Programmation

Algorithme A* – Tas binaire

1 Tas binaire minimum

On représentera un tas binaire (heap) par la structure suivante :

typedef struct{

void* *array;

int n, nmax;

int (*f)(const void*, const void*);

} *heap;

où array[] est le tableau de stockage des objets du tas (chacun d’eux étant un void* stocké à partir de l’indice 1, l’indice 0 n’étant pas utilisé), n est le nombre d’objets stockés dans le tas, nmax est le nombre maximum d’objets stockables dans le tas, et enfin f() la fonction de comparaison de deux objets permettant de définir la notion de tas minimum (fonction similaire àqsort()).

Question 1. Rappelez la définition d’un tas binaire ainsi que le principe de l’implémentation par un tableau. En particulier, précisez pour un élément d’indice i du tableau quels sont les indices de ses fils et de son père.

Question 2. Rappelez le principe de l’ajout d’un élément dans le tas. Donnez sa complexité en fonction du nombre n d’éléments du tas.

Question 3. Même question pour la suppression du minimum.

On suppose qu’on utilise un tableau dynamique pour array[] avec la stratégie suivante : lorsque le tas est plein, on double la taille du tableau (et qui est donc recopié).

Question 4.Avec cette stratégie, donnez la complexité pour remplir un tas avec n éléments, c’est-à- dire la complexité totale pour réalisern ajouts à partir d’un tas vide et d’un tableau initial de taille 1.

Pour établir cette complexité totale, précisez le coût des n insertions d’une part et des réallocations d’autres part.

2 En TP

Téléchargez les fichiers correspondant au TP à partir de la page de l’UE disponible ci-après : http://dept-info.labri.fr/~gavoille/UE-TAP/

Vous aurez à compléter heap.c que vous testerez avec ./test_heap après avoir compilé avec make -B test_heap toujours sur le même Makefile. Vous n’avez pas à modifier heap.h mais sim- plement lire les spécifications des fonctions qui sont à programmer dans heap.c. Il est préférable de placer les fichiers heap dans le même répertoire contenantMakefile et les fichiers tools.

Références

Documents relatifs

Insérer à la prochaine place libre dans l’arbre qui doit rester parfait, puis faire remonter le long de la branche jusqu’à satisfaire la contrainte sur les priorités. Complexité

Algorithme A* : arriver `a sa destination malgr´e des

arbre enraciné dans lequel les fils de chaque noeud sont ordonnés. Autrement dit, si un noeud a k fils, alors il existe un premier, deuxième, …etc fils.. • Un arbre binomial

Le premier tas est vide,le second contient deux grains et le troisième en

Pour un n donné ≥2, on détermine le nombre des configurations possibles a n qui sont constituées d’arcs A₂ et/ou d’arcs A₃,en prenant pour hypothèse que toutes

INVESTIGACION Y EXPERIENCIAS DIDACTICAS Diseño y realización de un programa de prácticas sobre comportamiento adecuado al tema de Etología.. 9 Persistencia de errores

Attention : dans le cours nous avons considéré un tas min , dans lequel la clé de chaque n÷ud doit être inférieure à celles de ses ls.. Dans ce TD, pour que le tri par tas

Or dans un arbre parfait, un nœud est de hauteur h s’il possède un descendant gauche de rang h mais pas de rang h