Pimp A - info121A
Programmation IMPérative Avancée
Frédéric Vernier
inspiré du cours de Burkhart Wolff
Programme
Tri
Récursivité
Dichotomie
Arbre
Graphes
Examen blanc
xxx
yyy
Traverse et Calculs dans Arbres
Graphes omniprésent !
Exemples
Représentations de graphes
Parcours et Calculs
etc.
Exemple: Graphes de Réseaux
Réseau de transport
Stations (+type)
Connexions
Routes
Exemple: Graphes
Réseau sociaux
(mais qui te like?)
Exemple: Recherche Labyrinthe
La recherche d’une
sortie d’un labyrinthe …
Exemple: Recherche Labyrinthe
Recherche d’une
sortie = arbre
ensemble des
chemins = graphe
Exemple: Configurations en Jeux
n queens
peut avoir
des cycles
Graphe
implicite
Graphes : Définition
… consistent d’un ensemble de sommets (noeuds) V et de
liens entre eux, des arêtes (arcs) E entre eux, i.e. un ensemble
de paires entre les V.
… peuvent être
orientés (E non-symétrique)
ou non-orientés (E symétrique)
… peuvent avoir (en plus des arbres):
boucles ([4,5,2,3]),
sommets avec plusieurs “pères” (2)
Graphs : Definitions
… peuvent avoir:
cas: orientés
- in-degré (example: 2)
- out-degré (example: 2)
cas non-orientés
- degré (example: 2)
des attributs sur des sommets (ex.: “graph coloré”)
des attributs sur des arêtes (ex.: “graph pondéré”)
Graphe : Représentation
Représentation de Graphes:
G = (V,E) ou
V = {1,2,3,4,5,6}
E = {(6,4),(4,3),(4,5),(5,2),(5,1),(2,1),
(4,6),(3,4),(5,4),(2,5),(1,5),(1,2)}
Et, bien sur, une représentation
par référence (position dans tableaux):
[[2,5], [5,1],
[2,4], [3,5,6],
[1,2,4], [4]]
… ou par une fonction:
vector<ref> voisins(<ref>)
Graphe : Représentation
Différentes formes de graphes
et de problèmes … [Wikipedia]
Route problems
!!Hamiltonian path and cycle problems
!!Minimum spanning tree
!!Route inspection problem
(also called the "Chinese Postman Problem")
!!Seven Bridges of Königsberg
!!Shortest path problem
!!Steiner tree
!!Three-cottage problem
!!Traveling salesman problem (NP-hard)
Exemple de problème
Exemple de problème
Problème du chemin Hamiltonien:
(pour des graphes orientés et non-orientés):
… trouver un chemin qui
passe par tous les sommets
exactement une fois.
… n’existe pas dans tous
les graphes.
Certaines Graph-Problèmes
Problème du voyageur de commerce:
pour un graphe pondéré G = (V, A, !)
typiquement non-orienté, mais …
visiter chaque sommet qu’une seule fois
(sauf le départ et fin, qui sont égaux)
minimiser le cout du chemin
problème d’optimisation
récurrent et complexe (NP)
Autre exemple
graphe pondéré:
Arbre couvrant
de poids minimal
(angl: Minimum
spanning tree)
sommets tous liés
poids minimal
Graphes & Arbres
Arbres faciles à explorer par des
algorithmes récursives
Idée: explorer les graphes par
construction de sous-arbres …
… marquer les sommets déjà visitées …
marquer(A)
de-marquer(A)
est-marqué(A)
Graphs vs. Arbres: Marquages
Explicites et implicites Graphs
Comme dans le cas des arbres, les sommets
et les arrêtes peuvent être
explicitement représentés
(métro, shortest path navigation …)
implicitement représentés:
(jeux, labyrinthes … )
vector<ref> voisins(sommets S)
visiter(S, op)
Schéma de parcours d’arbres
Parcours en profondeur (depth-first)
Variante: Parcours Postfixe.
(Variantes infixe et prefixe analog arbres)
void visiterGraph(Sommet A){
marquer(A)
foreach(Sommet S : voisins(A))
if(nonMarque(S))
visiterGraph(S);
visiter(A);
de-marquer(A);
}
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !