SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Parcours d’arbres
Présenté par Yann Caron
skyguide
ENSG Géomatique
Plan du cours
Parcours en profondeur
Pre-order
In-Order
Post-Order
Parcours en largeur
Implémentation
Enjeu
✔ Un arbre est une structure non linéaire
NB : Liste chaînée en est un cas particulier
✔ Dans quel ordre parcourir ses nœuds
✔ Phase de CodeGen en compilation
3/22
Parcours en profondeur
Pre-Order
✔ Effectue l’action
✔ S’il existe, traverser
l’élément gauche
✔ S’il existe, traverser
l’élément à droite
✔ Ordre
A, B, D, E, F, G, C, F
5/22
DD
BB
FF
EE
GG
AA
CC
Démo : tree-dfs-preorder.al
Récursif
FF
In-Order
✔ S’il existe, traverser
l’élément gauche
✔ Effectue l’action
✔ S’il existe, traverser
l’élément à droite
✔ Ordre
D, B, F, E, G, A, F, C
6/22
Démo : tree-dfs-inorder.al
Récursif
DD
BB
FF
EE
GG
AA
CC
FF
Post-Order
✔ S’il existe, traverser
l’élément gauche
✔ S’il existe, traverser
l’élément à droite
✔ Effectue l’action
✔ Ordre
D, F, G, E, B, F, C, A
7/22
Démo : tree-dfs -postorder.al
Récursif
DD
BB
FF
EE
GG
AA
CC
FF
Algorithme générique
✔ Effectue l’action pré-order
✔ Pour tous les éléments enfants :
✔ Traverser l’élément enfant
✔ Effectue l’action in-order
✔ Effectue l’action
8/22
Récursif
Parcours en largeur
En largeur
✔ Créer une file
✔ Ajouter la racine
✔ Tant que la file n’est
pas vide
✔ Retirer l’élément
✔ Action
✔ Ajouter tous les
éléments enfants
✔ Ordre
A, B, C, D, E, F, G, H
10/22
DD
BB
GG
EE
HH
AA
CC
Démo : tree-bfs.al
FF
Impératif
Algorithme générique
✔ Créer une structure (pile, file, file de priorité)
✔ Ajouter l’élément racine
✔ Tant que la structure n’est pas vide
✔ Retirer l’élément
✔ Effectuer le traitement (ou tester le critère
recherche)
✔ Ajouter les enfants de l’élément dans la
structure
11/22
Impératif
Observations
✔ Si la structure est une pile (stack)
✔ Parcours en profondeur pre-order
✔ Attention : il faut inverser l’ordre des
enfants lorsqu’ils sont ajoutés à la pile
✔ Si la structure est une file (queue)
✔ Parcours en largeur
12/22
Observations
✔ Si la structure est une file de priorité :
✔ Et si la priorité c’est le cumul de distance
✔ = Algorithme de Dijkstra
✔ Et si la priorité est la distance de
l’hypoténuse
✔ = A* search
13/22
Démo : tree-generic.al
Autres algorithmes
✔ Best first search
✔ Algorithme de Dijkstra
✔ A* search
✔ Bean search (profondeur limitée)
✔ Min-max – alpha-beta
✔ Binary search tree
✔ Kd-tree
✔ Quad-tree
14/22
Implémentation
Composite
✔ En programmation orientée objet le patron
de conception Composite permet de
déclarer un arbre
✔ Une super classe
✔ Une feuille qui en hérite
✔ Un nœuds qui en hérite et que contient une
liste d’éléments de type super classe
16/22
Composite
17/22
Source : GofComposite.java
Interpreter
✔ Le patron interpreter est une extension du
patron composite
✔ Il ajoute une méthode eval aux composants
qui permet une évaluation en profondeur en
fonction de la topologie de l’arbre
✔ Un contexte (l’ensemble des ressources
nécessaires) est passé en paramètre aux
méthodes interpret
18/22
Interpreter
19/22
Source : Interpreter
Visitor
✔ Il peut être utile de séparer la structure des
données de son implémentation
✔ Dans ce cas, on utilise un patron visiteur
✔ Celui ci intègre tous les comportements des
nœuds de l’arbre dans des méthodes
distinctes
✔ Il s’enregistre auprès de la structure par un
parcours en profondeur
✔ La méthode eval de l’interpreter se
contente de déléguer l’appel au visitor
20/22
Visitor
21/22
Source : GofVisitor.java
Merci de votre attention

Contenu connexe

Plus de Yann Caron

Algea - 02 - gemmes
Algea - 02 - gemmesAlgea - 02 - gemmes
Algea - 02 - gemmesYann Caron
 
Algea - 01 - hero
Algea - 01 - heroAlgea - 01 - hero
Algea - 01 - heroYann Caron
 
ALGEA - 00 - introduction
ALGEA - 00 - introductionALGEA - 00 - introduction
ALGEA - 00 - introductionYann Caron
 
Programmation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - GeomatiqueProgrammation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - GeomatiqueYann Caron
 
Programmation Android - 10 - Spatialite
Programmation Android - 10 - SpatialiteProgrammation Android - 10 - Spatialite
Programmation Android - 10 - SpatialiteYann Caron
 
Programmation Android - 09 - Web services
Programmation Android - 09 - Web servicesProgrammation Android - 09 - Web services
Programmation Android - 09 - Web servicesYann Caron
 
Programmation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridgeProgrammation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridgeYann Caron
 
Programmation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancéesProgrammation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancéesYann Caron
 
Programmation Android - 06 - Publication
Programmation Android - 06 - PublicationProgrammation Android - 06 - Publication
Programmation Android - 06 - PublicationYann Caron
 
Programmation Android - 05 - Google map
Programmation Android - 05 - Google mapProgrammation Android - 05 - Google map
Programmation Android - 05 - Google mapYann Caron
 
Programmation Android - 04 - Databases
Programmation Android - 04 - DatabasesProgrammation Android - 04 - Databases
Programmation Android - 04 - DatabasesYann Caron
 
Programmation Android - 03 - IHM bases
Programmation Android - 03 - IHM basesProgrammation Android - 03 - IHM bases
Programmation Android - 03 - IHM basesYann Caron
 
Programmation Android - 02 - Android
Programmation Android - 02 - AndroidProgrammation Android - 02 - Android
Programmation Android - 02 - AndroidYann Caron
 
Programmation Android - 01 - Introduction
Programmation Android - 01 - IntroductionProgrammation Android - 01 - Introduction
Programmation Android - 01 - IntroductionYann Caron
 
Programmation Android - 00 - Présentation
Programmation Android - 00 - PrésentationProgrammation Android - 00 - Présentation
Programmation Android - 00 - PrésentationYann Caron
 
In01 - Programmation Android - 07 - techniques avancées
In01 - Programmation Android - 07 - techniques avancéesIn01 - Programmation Android - 07 - techniques avancées
In01 - Programmation Android - 07 - techniques avancéesYann Caron
 
In01 - Programmation Android - Travaux pratiques
In01 - Programmation Android - Travaux pratiquesIn01 - Programmation Android - Travaux pratiques
In01 - Programmation Android - Travaux pratiquesYann Caron
 
In01 - Programmation Android - 06 - publication
In01 - Programmation Android - 06 - publicationIn01 - Programmation Android - 06 - publication
In01 - Programmation Android - 06 - publicationYann Caron
 
In01 - Programmation Android - 05 - Google map
In01 - Programmation Android - 05 - Google mapIn01 - Programmation Android - 05 - Google map
In01 - Programmation Android - 05 - Google mapYann Caron
 
Cours CNAM In01 - Programmation Android - Septembre 2014
Cours CNAM In01 - Programmation Android - Septembre 2014Cours CNAM In01 - Programmation Android - Septembre 2014
Cours CNAM In01 - Programmation Android - Septembre 2014Yann Caron
 

Plus de Yann Caron (20)

Algea - 02 - gemmes
Algea - 02 - gemmesAlgea - 02 - gemmes
Algea - 02 - gemmes
 
Algea - 01 - hero
Algea - 01 - heroAlgea - 01 - hero
Algea - 01 - hero
 
ALGEA - 00 - introduction
ALGEA - 00 - introductionALGEA - 00 - introduction
ALGEA - 00 - introduction
 
Programmation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - GeomatiqueProgrammation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - Geomatique
 
Programmation Android - 10 - Spatialite
Programmation Android - 10 - SpatialiteProgrammation Android - 10 - Spatialite
Programmation Android - 10 - Spatialite
 
Programmation Android - 09 - Web services
Programmation Android - 09 - Web servicesProgrammation Android - 09 - Web services
Programmation Android - 09 - Web services
 
Programmation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridgeProgrammation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridge
 
Programmation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancéesProgrammation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancées
 
Programmation Android - 06 - Publication
Programmation Android - 06 - PublicationProgrammation Android - 06 - Publication
Programmation Android - 06 - Publication
 
Programmation Android - 05 - Google map
Programmation Android - 05 - Google mapProgrammation Android - 05 - Google map
Programmation Android - 05 - Google map
 
Programmation Android - 04 - Databases
Programmation Android - 04 - DatabasesProgrammation Android - 04 - Databases
Programmation Android - 04 - Databases
 
Programmation Android - 03 - IHM bases
Programmation Android - 03 - IHM basesProgrammation Android - 03 - IHM bases
Programmation Android - 03 - IHM bases
 
Programmation Android - 02 - Android
Programmation Android - 02 - AndroidProgrammation Android - 02 - Android
Programmation Android - 02 - Android
 
Programmation Android - 01 - Introduction
Programmation Android - 01 - IntroductionProgrammation Android - 01 - Introduction
Programmation Android - 01 - Introduction
 
Programmation Android - 00 - Présentation
Programmation Android - 00 - PrésentationProgrammation Android - 00 - Présentation
Programmation Android - 00 - Présentation
 
In01 - Programmation Android - 07 - techniques avancées
In01 - Programmation Android - 07 - techniques avancéesIn01 - Programmation Android - 07 - techniques avancées
In01 - Programmation Android - 07 - techniques avancées
 
In01 - Programmation Android - Travaux pratiques
In01 - Programmation Android - Travaux pratiquesIn01 - Programmation Android - Travaux pratiques
In01 - Programmation Android - Travaux pratiques
 
In01 - Programmation Android - 06 - publication
In01 - Programmation Android - 06 - publicationIn01 - Programmation Android - 06 - publication
In01 - Programmation Android - 06 - publication
 
In01 - Programmation Android - 05 - Google map
In01 - Programmation Android - 05 - Google mapIn01 - Programmation Android - 05 - Google map
In01 - Programmation Android - 05 - Google map
 
Cours CNAM In01 - Programmation Android - Septembre 2014
Cours CNAM In01 - Programmation Android - Septembre 2014Cours CNAM In01 - Programmation Android - Septembre 2014
Cours CNAM In01 - Programmation Android - Septembre 2014
 

Dernier

firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirstjob4
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfWBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfSophie569778
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageInstitut de l'Elevage - Idele
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...Institut de l'Elevage - Idele
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusInstitut de l'Elevage - Idele
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...Institut de l'Elevage - Idele
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...Institut de l'Elevage - Idele
 
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...Institut de l'Elevage - Idele
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Ville de Châteauguay
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de planchermansouriahlam
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéInstitut de l'Elevage - Idele
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...Institut de l'Elevage - Idele
 
DISPOSITIFS-MEDICAUX-PPT.pdf............
DISPOSITIFS-MEDICAUX-PPT.pdf............DISPOSITIFS-MEDICAUX-PPT.pdf............
DISPOSITIFS-MEDICAUX-PPT.pdf............cheddadzaineb
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesInstitut de l'Elevage - Idele
 

Dernier (20)

JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdf
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfWBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
 
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de plancher
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversité
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
 
DISPOSITIFS-MEDICAUX-PPT.pdf............
DISPOSITIFS-MEDICAUX-PPT.pdf............DISPOSITIFS-MEDICAUX-PPT.pdf............
DISPOSITIFS-MEDICAUX-PPT.pdf............
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentes
 

Théorie des langages - 01.1 - Parcours d'arbres

  • 1. Parcours d’arbres Présenté par Yann Caron skyguide ENSG Géomatique
  • 2. Plan du cours Parcours en profondeur Pre-order In-Order Post-Order Parcours en largeur Implémentation
  • 3. Enjeu ✔ Un arbre est une structure non linéaire NB : Liste chaînée en est un cas particulier ✔ Dans quel ordre parcourir ses nœuds ✔ Phase de CodeGen en compilation 3/22
  • 5. Pre-Order ✔ Effectue l’action ✔ S’il existe, traverser l’élément gauche ✔ S’il existe, traverser l’élément à droite ✔ Ordre A, B, D, E, F, G, C, F 5/22 DD BB FF EE GG AA CC Démo : tree-dfs-preorder.al Récursif FF
  • 6. In-Order ✔ S’il existe, traverser l’élément gauche ✔ Effectue l’action ✔ S’il existe, traverser l’élément à droite ✔ Ordre D, B, F, E, G, A, F, C 6/22 Démo : tree-dfs-inorder.al Récursif DD BB FF EE GG AA CC FF
  • 7. Post-Order ✔ S’il existe, traverser l’élément gauche ✔ S’il existe, traverser l’élément à droite ✔ Effectue l’action ✔ Ordre D, F, G, E, B, F, C, A 7/22 Démo : tree-dfs -postorder.al Récursif DD BB FF EE GG AA CC FF
  • 8. Algorithme générique ✔ Effectue l’action pré-order ✔ Pour tous les éléments enfants : ✔ Traverser l’élément enfant ✔ Effectue l’action in-order ✔ Effectue l’action 8/22 Récursif
  • 10. En largeur ✔ Créer une file ✔ Ajouter la racine ✔ Tant que la file n’est pas vide ✔ Retirer l’élément ✔ Action ✔ Ajouter tous les éléments enfants ✔ Ordre A, B, C, D, E, F, G, H 10/22 DD BB GG EE HH AA CC Démo : tree-bfs.al FF Impératif
  • 11. Algorithme générique ✔ Créer une structure (pile, file, file de priorité) ✔ Ajouter l’élément racine ✔ Tant que la structure n’est pas vide ✔ Retirer l’élément ✔ Effectuer le traitement (ou tester le critère recherche) ✔ Ajouter les enfants de l’élément dans la structure 11/22 Impératif
  • 12. Observations ✔ Si la structure est une pile (stack) ✔ Parcours en profondeur pre-order ✔ Attention : il faut inverser l’ordre des enfants lorsqu’ils sont ajoutés à la pile ✔ Si la structure est une file (queue) ✔ Parcours en largeur 12/22
  • 13. Observations ✔ Si la structure est une file de priorité : ✔ Et si la priorité c’est le cumul de distance ✔ = Algorithme de Dijkstra ✔ Et si la priorité est la distance de l’hypoténuse ✔ = A* search 13/22 Démo : tree-generic.al
  • 14. Autres algorithmes ✔ Best first search ✔ Algorithme de Dijkstra ✔ A* search ✔ Bean search (profondeur limitée) ✔ Min-max – alpha-beta ✔ Binary search tree ✔ Kd-tree ✔ Quad-tree 14/22
  • 16. Composite ✔ En programmation orientée objet le patron de conception Composite permet de déclarer un arbre ✔ Une super classe ✔ Une feuille qui en hérite ✔ Un nœuds qui en hérite et que contient une liste d’éléments de type super classe 16/22
  • 18. Interpreter ✔ Le patron interpreter est une extension du patron composite ✔ Il ajoute une méthode eval aux composants qui permet une évaluation en profondeur en fonction de la topologie de l’arbre ✔ Un contexte (l’ensemble des ressources nécessaires) est passé en paramètre aux méthodes interpret 18/22
  • 20. Visitor ✔ Il peut être utile de séparer la structure des données de son implémentation ✔ Dans ce cas, on utilise un patron visiteur ✔ Celui ci intègre tous les comportements des nœuds de l’arbre dans des méthodes distinctes ✔ Il s’enregistre auprès de la structure par un parcours en profondeur ✔ La méthode eval de l’interpreter se contente de déléguer l’appel au visitor 20/22
  • 22. Merci de votre attention