R ECURSION ET ARBRES

Documents pareils
ARBRES BINAIRES DE RECHERCHE

Les structures de données. Rajae El Ouazzani

Les arbres binaires de recherche

Quelques Algorithmes simples

INF601 : Algorithme et Structure de données

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)

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Ordre du jour provisoire pour la COP12

Algorithmique, Structures de données et langage C

BSM 9.0 ESSENTIALS. Nouveaux utilisateurs de Business Service Management (BSM) 9.0, parmi lesquels :

ITIL. optimal. pour un service informatique. 2 e édition C H R I S T I A N D U M O N T. Préface de Patrick Abad

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Algorithmique et Programmation, IMA

Chapitre 7. Récurrences

Algorithmes récursifs

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

PARTIE 1. Phénoménologie

affectation après la classe de

Corrigé des TD 1 à 5

Algorithmique et Programmation

Fondements de l informatique Logique, modèles, et calculs

Introduction à la théorie des graphes. Solutions des exercices

STATUTS DE L ASSOCIATION DE L ESPACE DE VIE ENFANTINE LES MOUSSAILLONS

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

Association «les Breumailles de la Bonne Eure» EHPAD de Bracieux 31, rue de Candy

Groupe Eyrolles, 2006, ISBN :

Cours d algorithmique pour la classe de 2nde

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

MIS 102 Initiation à l Informatique

avast! EP: Installer avast! Small Office Administration

STAGE IREM 0- Premiers pas en Python

Education à l'orientation

L EAI. par la pratique. François Rivard. Thomas Plantain. Groupe Eyrolles, 2003 ISBN :

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

Tel : Fax :

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Résolution de systèmes linéaires par des méthodes directes

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

Algorithmes de recherche

Arbres binaires de recherche

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

22 Nous Reconnaissons la force du pardon

Initiation à LabView : Les exemples d applications :

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

Organigramme / Algorigramme Dossier élève 1 SI

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Liste des notes techniques... xxi Liste des encadrés... xxiii Préface à l édition internationale... xxv Préface à l édition francophone...

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

LA NOMENCLATURE DOUANIERE ET TARIFAIRE (Cameroun)

(Enregistré sous le n à la préfecture de Paris en date du 3 juillet 2012)

Table des matières I. GÉNÉRALITÉS

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Rappels sur les suites - Algorithme

TABLE DES MATIÈRES. Les auteurs. Préface par Walter Deffaa. Préface par André Kilesse

LES TYPES DE DONNÉES DU LANGAGE PASCAL

TELEPHONE SANS FIL TELEFUNKEN TC 151. (avec répondeur) TELEFUNKEN TC 101 MODE D EMPLOI

Introduction à MATLAB R

Initiation à la programmation en Python

et dépannage de PC Configuration Sophie Lange Guide de formation avec exercices pratiques Préparation à la certification A+

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

Correction TD algorithmique

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

Découverte de Python

Initiation à l algorithmique

SYNERGIE. Société Anonyme Capital social : Siège : 11 avenue du Colonel Bonnet PARIS RCS PARIS S T A T U T S

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

Algorithmique I. Algorithmique I p.1/??

SOCIÉTÉ RADIO-CANADA/CANADIAN BROADCASTING CORPORATION

GUIDE POUR L ENREGISTREMENT INTERNATIONAL DES DESSINS ET MODÈLES INDUSTRIELS EN VERTU DE L ARRANGEMENT DE LA HAYE

M é ca n ism e Pr o lo g. Ex e m p le

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

CORRECTION EXERCICES ALGORITHME 1

Java Licence Professionnelle CISII,

Déploiement et migration Windows 8 Méthodologie Compatibilité des applications ADK MDT 2012 ConfigMgr 2012 SCCM 2012 Windows Intune MDOP

Parallélisme et Répartition

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

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

Cours de Génie Logiciel

Cours Informatique Master STEP

Liste des règles 1. Texte original. (Etat le 1 er septembre 2008)

OCL - Object Constraint Language

Pourquoi l apprentissage?

Logiciel Libre Cours 3 Fondements: Génie Logiciel

4. Les structures de données statiques

L'ASSURANCE DU R1SQUE AUTOM OB1LE. Controle et assurance. Jacques Charbonnier. larcier

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Raisonnement probabiliste

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

ENREGISTREMENT COMPTABLE DE LA TVA

Réseaux IUP2 / 2005 DNS Système de Noms de Domaine

STATUTS D'UNE SOCIETE A RESPONSABILITE LIMITEE. Nom de la Société AU CAPITAL DE DINARS

Image d un intervalle par une fonction continue

Limites finies en un point

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan


1 Recherche en table par balayage

Transcription:

RÉCURSION ET ARBRES

Algorithmes récursifs Exemple : calculer le factoriel n! On peut donner une solution itérative ou récursive C est vrai en général : Chaque algorithme récursif peut être transformé en un algorithme non-récursif itératif et chaque boucle peut être transformé en récurrences sans boucles i

Algorithmes récursifs 2 Pour que cela soit correct, une solution récursive doit 1. définir des cas de base 2. performer un calcul fini ce dernier est plus simple à démontrer si l arguments diminuent à chaque appel récursif exemple simple : factoriel autre exemple (Ackerman) A(i, j) = 2 j si i = 1; soit i soit j diminue à chaque appel récursif A(i 1, 2) si j = 1 et i 2 A(i 1, A(i, j 1)) si i, j 2 ii

Algorithme d Euclid E1 Algo gcd(a, b) E2 tandis que (b 0) E3 c a mod b E4 a b E5 b c E6 retourner a (on impose b a) re1 Algo gcd(a, b) // récursion re2 si b = 0 alors retourner a re3 sinon retourner gcd(b, a mod b) iii

Algorithme d Euclid 2 E1 Algo gcd(a, b) // avec b a E2 tandis que (b 0) E3 E4 E5 c a mod b a b b c E6 retourner a Temps de calcul : polynomial Preuve : On a a = kb + c (k + 1)c 2c en Ligne E3. Donc bc ab/2. Par conséquence, le nombre d itérations est borné par lg(ab) = lg a + lg b. Si a mod b prend O(log 2 a) temps, alors l exécution est en temps O(log 3 a). iv

Parcours de listes chaînées compter le nombre des éléments parcours de la liste v

Diviser pour régner dm1 Algo MAX(L, l, r) // trouve le max parmi L[l],..., L[r] dm2 si l = r alors retourner L[l] dm3 m l+r 2 dm4 u MAX(L, l, m) ; v MAX(L, m + 1, r) dm5 si u > v alors retourner u sinon retourner v Temps de calcul pour ce genre de solutions Alors, T (n) = O(n). T (n) = T (k) + T (n k) + O(1) vi

Autres récurrences typiques Recherche binaire : T (n) = T (n/2) + O(1) solution T (n) = O(log n) Tri par fusion : T (n) = 2T (n/2) + O(n) solution T (n) = O(n log n) vii

Arbres terminologie Graphe : sommet et arêtes Arbre (libre) : graphe non-orienté, connexe et acyclique Arbre raciné ou arborescence (en théorie des graphes) : graphe orienté, et connexe avec un sommet spécial, la racine, dans lequel il y a 1 chemin simple de la racine à chaque sommet. - orientation des arêtes : relations parent-enfant - u est dans le sous-arbre enraciné à w ssi w est sur le chemin de la racine à u w parent racine enfant sous-arbre de racine w viii

Arbres utilité Les arbres jouent un rôle central dans la conception et analyse d algorithmes - arbres pour décrire les propriétés dynamiques des algorithmes - structures de données explicites qui sont des réalisations concrètes d arbres ix

Arbres terminologie 2 Ancêtre : w est l ancêtre de u ssi u est dans le sous-arbre enraciné à w Descendant : u est un descendant de w ssi u est dans le sous-arbre enraciné à w Dans des graphes orientés (y inclut les arborescences) les sommets s appellent aussi des nœuds, et les arêtes s appellent aussi des arcs Degré d un nœud : nombre d arcs sortants (ou nombre d enfants) Nœud externe ou feuille : aucun arc sortant (aucun enfant) Nœud interne : tous les autres (au moins 1 enfant) x

Arborescence exemples Domaines internet : com edu ca net org... gc... umontreal fas... iro mail frontal... www Packages en Java, répertoires sous Unix,... xi

Arbre ordonné Arbre ordonné : il existe un ordre parmi les enfants de chaque nœud interne Arbre numeroté : les enfants d un nœud sont étiquetés par des entiers positifs distincts. i-ème enfant absent : si aucun enfant n est étiqueté par i Arité k : ssi tous les enfants avec étiquettes > k sont absents. Arbre binaire : arbre numeroté d arité 2 enfant gauche ou droit : enfant étiqueté par 1 ou 2 frères ou sœurs : nœuds avec le même parent xii

Arbre numeroté (cont.) Définition altérnative par récurrence : Déf. Un arbre k-aire T est une structure définie sur un ensemble fini de nœuds qui 1. ne contient aucun nœud, ou 2. est composé de (k + 1) ensembles de nœuds disjoints : un nœud racine r, et les arbres k-aires T 1, T 2,..., T k. (En 2, la racine de T i quand T i est non-vide est l enfant de r étiqueté par i.) xiii

Arbre numeroté (cont.) Attention : l ordre des enfants est important dans un arbre numeroté 1 1 1 2 3 2 3 2 3 4 arborescence (l'ordre des enfants n'est pas important) 4 arbre binaire («4» est l'enfant gauche) 4 arbre binaire («4» est l'enfant droit) Dans ce cours, les nœuds internes dans les arbres binaires auront toujours 2 enfants xiv

Hauteur et niveau Niveau d un nœud u : longueur du chemin qui mène à u à partir de la racine Hauteur d un nœud u : longueur du chemin à la feuille la plus distante dans le sous-arbre de u Hauteur de l arbre : hauteur de la racine niveau 0 niveau 1 niveau 2 niveau 3 hauteur=2 hauteur=3 Longueur du chemin (interne/externe) : somme des niveaux de tous les nœuds (internes/externes) xv

Hauteur d un arbre binaire Thm. La hauteur d un arbre binaire à n feuilles est entre lg n et (n 1). xvi

Implantation d un arbre numeroté Arbre = ensemble d objets représentant de nœuds + relations parent-enfant En général, on veut retrouver facilement le parent et les enfants de n importe quel nœud Approche Java : public class TreeNode { TreeNode parent; TreeNode enfant_gauche; TreeNode enfant_droit;... } Si arbre k-aire, alors on peut avoir TreeNode[] enfants avec enfants.length = k. xvii

Parcours des arbres Dans un parcours, tous les nœuds de l arbre sont visités. Déf. Dans un parcours préfixe (preorder traversal), chaque nœud est visité avant que ses enfants soient visités. Déf. Dans un parcours postfixe (postorder traversal), chaque nœud est visité après que ses enfants sont visités. xviii

Parcours préfixe et postfixe Algo PARCOURS-PRÉFIXE(x) 1 if x null then 2 visiter x ( ) 3 for i 1,..., k do PARCOURS-PRÉFIXE enfant(x, i) Algo PARCOURS-POSTFIXE(x) 1 if x null then ( ) 2 for i 1,..., k do PARCOURS-POSTFIXE enfant(x, i) 3 visiter x (enfant(x, i) donne l enfant de x étiqueté par i s il n y en a pas, alors null) Maintenant PARCOURS-PRÉFIXE(racine) va visiter tous les nœuds dans l arbre dans l ordre préfixe. xix

Parcours infixe On peut parcourir un arbre binaire aussi dans l ordre infixe Déf. Dans un parcours infixe (inorder traversal), chaque nœud est visité après son enfant gauche mais avant son enfant droit. Algo PARCOURS-INFIXE(x) 1 if x null then 2 PARCOURS-INFIXE 3 visiter x 4 PARCOURS-INFIXE ( gauche(x) ) ( droit(x) ) xx

Récursions sur arbres binaires La structure récursive de l arbre permet des solutions naturelles par récurrences Logique générale : traiter la racine, sous-arbre gauche, et le sous-arbre droit + calcul avec les valeurs exemples : taille et hauteur xxi

Arbre syntaxique * 2 + notation infixe: 2*(3+7) notation préfixe: * 2 + 3 7 notation postfixe: 2 3 7 + * 3 7 xxii