Corrigé du test de contrôle

Documents pareils
Les arbres binaires de recherche

ARBRES BINAIRES DE RECHERCHE

Les structures de données. Rajae El Ouazzani

Algorithmique et structures de données I

L exclusion mutuelle distribuée

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Définitions. Numéro à préciser. (Durée : )

Feuille TD n 1 Exercices d algorithmique éléments de correction

INF601 : Algorithme et Structure de données

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Arbres binaires de recherche

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

4. Les structures de données statiques

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Quelques Algorithmes simples

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Algorithmique, Structures de données et langage C

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Rappels sur les suites - Algorithme

Licence Sciences et Technologies Examen janvier 2010

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Adama MBODJI MBODJ.SYSTEM

Organigramme / Algorigramme Dossier élève 1 SI

Correction TD algorithmique

1 Recherche en table par balayage

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Architecture des Systèmes d Information Architecture des Systèmes d Information

Théorie et codage de l information

Algorithme. Table des matières

Installation Client (licence réseau) de IBM SPSS Modeler 14.2

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Cours d Informatique

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Algorithmique et Programmation, IMA

Continuité et dérivabilité d une fonction

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Algorithmique et Programmation

Domain Name Service (DNS)

Parallélisme et Répartition

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

SUPPORT DE COURS. Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : omarinmt@gmail.com

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Programmation C. Apprendre à développer des programmes simples dans le langage C

Cours de Master Recherche

CORRECTION EXERCICES ALGORITHME 1

Algorithmique avec Algobox

Programmation linéaire

Limites finies en un point

DNS : Domaine Name System

Représentation d un entier en base b

Informatique Générale

Chapitre 5 : Flot maximal dans un graphe

Logiciels de gestion FAC. Analyste AgExpert. Guide de démarrage rapide 2014

Cours de Systèmes d Exploitation

Ecran principal à l ouverture du logiciel

Chap III : Les tableaux

TP 2 Réseaux. Adresses IP, routage et sous-réseaux

PROCÉDURE POUR LA CRÉATION DU FOURNISSEUR POUR LE PAIEMENT DES FRAIS DE SERVICE DE GARDE SEULEMENT : BANQUE TD CANADA TRUST

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

chapitre 4 Nombres de Catalan

Bases de programmation. Cours 5. Structurer les données

Approche Contract First

Algorithmes de recherche

Plan du cours Cours théoriques. 29 septembre 2014

Algorithmes récursifs

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

Certificat Big Data - Master MAthématiques

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

CH.6 Propriétés des langages non contextuels

PROCÉDURE POUR LA CRÉATION DU FOURNISSEUR POUR LE PAIEMENT DES FRAIS DE SERVICE DE GARDE SEULEMENT : BANQUE TD CANADA TRUST

Introduction à MATLAB R

Master d'informatique. Réseaux. Supervision réseaux

Initiation à LabView : Les exemples d applications :

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

MIS 102 Initiation à l Informatique

ASR1 TD7 : Un microprocesseur RISC 16 bits

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours Informatique Master STEP

Examen Médian - 1 heure 30

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Serveurs de noms Protocoles HTTP et FTP

Les deux points les plus proches

Compression de Données - Algorithme de Huffman Document de Conception

Service On Line : Gestion des Incidents

Cryptologie et physique quantique : Espoirs et menaces. Objectifs 2. distribué sous licence creative common détails sur

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Administration réseau Résolution de noms et attribution d adresses IP

Transcription:

USTHB Faculté d'electronique et d Informatique Département D'Informatique Master SII Algorithmique avancée et complexité Bab-Ezzouar 15 novembre 2016 Corrigé du test de contrôle Exercice 1 : (5 pts) Considérer l arbre binaire de recherche suivant : 1) insérer le nombre 43 dans l arbre. 2) Ensuite supprimer le nombre 19 de l arbre.

3) Ecrire un algorithme de suppression d un élément d un arbre binaire de recherche. L algorithme passe par 4 étapes qui sont : 1. Recherche de la valeur x dans l arbre. 2. Recherche de la valeur minimale du sous-arbre droit du nœud contenant x ou bien de la valeur maximale du sous-arbre gauche du nœud contenant x. Soit y, cette valeur. 3. Suppression du nœud contenant y. 4. Remplacer x par y. Algorithme Suppression d un élément d un arbre binaire de recherche Programme principal var racine : élément ; a : entier ; début suppression (a) ; procédure suppression ; entrée : racine : élément; x :entier ; sortie : l arbre binaire de recherche sans le nœud contenant x ; var nœud, p, prédécesseur, parent : élément ; existe : booléen ; début nœud := racine ; existe := faux ; tant que (noeud nil) et non existe faire (* recherche de la clé x dans l arbre *) si (x = nœud.clé) alors existe := vrai sinon début prédecesseur := nœud ; si (x < nœud.clé) alors nœud := nœud.fgauche sinon nœud := nœud.fdroit ; si (nœud = nil) alors signaler ( x n existe pas dans l arbre ) sinon si (x = nœud.clé) alors début p := nœud.fdroit ; (* recherche de la clé minimale du sous-arbre droit *) si (p nil) alors tant que (p.fgauche nil) faire

début parent := p ; p := p.fgauche ; (* recherche de la clé maximale du sous-arbre gauche *) sinon début p := nœud.fgauche ; si (p nil) alors tant que (p.fdroit nil) faire début parent := p ; p := p.fdroit ; sinon (* le nœud contenant x n a pas de successeur alors suppression de ce nœud *) si (nœud = racine) alors racine := nil sinon début prédecesseur.fdroit := nil ; prédecesseur.fdroit := nil ; si (nœud.fgauche nil) ou (nœud.fdroit nil) alors début (* remplacer x par y *) x := p.clé ; nœud.clé := x ; (* supprimer le nœud contenant y *) si (p.fgauche = nil) alors parent.fgauche := nil sinon parent.fdroit := nil ; 4) Calculer la complexité de l algorithme. La recherche de l élément x à supprimer se fait en O(log2(n))=p où p est la profondeur de l arbre et n le nombre de noeuds. L opération de recherche de l élément du sous-arbre droit qui a la plus petite valeur pour remplacer x s effectue aussi en O(log2(n)), de même pour la recherche de la clé maximale du sous-arbre gauche. La complexité est donc O(log2(n)). Exercice 2 : (5 pts) 1) Rappeler la représentation d un ensemble S vue en cours. Une représentation possible d un ensemble S, qui facilite l écriture des opérations union et intersection entre deux ensembles, utilise deux tableaux TV (Tableau des Valeurs) et VR (Vecteur Représentatif de l ensemble S). Le tableau TV contient toutes les valeurs susceptibles d appartenir à un ensemble S. TV[max] contient le nombre de valeurs de TV. VR, le vecteur représentatif de S, est un vecteur de nombres booléens déi comme suit : VR[i] = { 1 si TV[i] S 0 sinon 2) Comment implémenter les opérations suivantes : a. Appartenance d un élément à un ensemble.

Procédure appartenance ; sortie : vrai ou faux ; var p : entier ; si (TV[p] = x) et (VR[p]=1) alors retourner(vrai) sinon retourner(faux) ; b. Union de deux ensembles. procédure union ; entrée : TV : tableau d entiers ; VR 1, VR 2 : tableau de booléens ; sortie : VR 3 : tableau de booléens; var i : 1..max ; début pour (i := 1 à TV[max]) faire VR 3[i] := VR 1[i] ou VR 2[i] ; (* ou est l opérateur booléen de disjonction *) c. Intersection de deux ensembles. procédure intersection ; entrée : TV : tableau d entiers ; VR 1, VR 2 : tableau de booléens ; sortie : VR 3 : tableau de booléens; var i : 1..max ; début pour (i := 1 à TV[max]) faire VR 3[i] := VR 1[i] et VR 2[i] ; (* et est l opérateur booléen de conjonction *) Calculer la complexité de chacune de ces opérations La complexité de la procédure appartenance est O(TV[max]) car au pire cas, x n appartient pas à TV et la boucle aura un nombre d itérations égal à TV[max]. Les procédures union et intersection ont chacune une complexité en O(TV[max]) car la boucle pour, a un nombre d itérations égal à TV[max]. 3) Ecrire la procédure d insertion d un élément dans un ensemble et calculer sa complexité. Procédure insertion ; sortie : TV : tableau d entiers ; VR : tableau de booléens ;

var p : entier ; si (TV[p] x) alors début TV[p] := x ; TV[max] := TV[max] +1 ; VR[p] :=1 ; La complexité de la procédure insertion est O(TV[max]) car au pire cas, x n appartient pas à TV et la boucle aura un nombre d itérations égal à TV[max]. 4) Ecrire la procédure de suppression d un élément d un ensemble et calculer sa complexité. Procédure suppression ; sortie : TV : tableau d entiers ; VR : tableau de booléens ; var p : entier ; si (TV[p] = x) alors si (VR[p] =0) alors afficher ( x n existe pas dans l ensemble ) sinon VR[p] := 0 ; La complexité de la procédure suppression est O(TV[max]) car au pire cas, x n appartient pas à TV et la boucle aura un nombre d itérations égal à TV[max].