Théorie des graphes
Ecrire un programme Python permettant de calculer le nombre d'amis de chaque utilisateur du réseau. « d'amitiés » précédent. 4.3. Implémentation d'un graphe
Théorie des graphes et optimisation dans les graphes Table des
Taille mémoire nécessaire : la matrice d'adjacence d'un graphe ayant n sommets nécessite de l'ordre de O(n2) emplacements mémoire. Si le nombre d'arcs est très
Quelques rappels sur la théorie des graphes
L'algorithme 1 présente la méthode du parcours d'un graphe en largeur. -9/28-. Page 10. IUT Lyon. Informatique. Théorie des Graphes.
TP 2 : Théorie des graphes 1 Introduction
Instructions. Il s'agit d'un TP Python pour lequel il est conseillé d'utiliser Spyder Python 3.6. Voici les principales consignes :.
Graphes et Python - Nanopdf
La question à l'origine de la théorie des graphes est due à Euler en 1736 : dans cette partie de la ville de Königsberg. Peut-on
Introduction à la théorie des graphes
Le problème consiste à construire un cycle eulérien ce qui est impossible
Graphes et outils logiques
15 janv. 2020 0.6 Théorie arithmétique : récurrence . ... Contexte (ou théorie) ... Réalisation en Python le graphe étant donné sous la forme d'un dic-.
Poly dInfo 2 - Mathématiques - IUT de Nantes
1.15 Les graphes avec Python . time que les connaissances sur la théorie des graphes ne forment pas une théorie mais « un savoir une série de faits« .
N1MA0011_Poly_Elements de theorie des graphes
Éléments de théorie des graphes – Éric Sopena. MHT063. 2 version du mardi 29 janvier 2013 La représentation en Python du graphe G ci-dessus sera alors :.
À la recherche du plus court chemin
Ce calcul fait appel à la théorie des graphes et utilise différents algorithmes Langage Python par exemple si l'on veut faire implémenter l'algorithme ...
[PDF] Modélisation de graphes en Python - ZoneNSI
Obtenir un graphe vide par une méthode constructeur 2 Etre capable d'ajouter un noeud/sommet à un graphe existant 3 Etre capable d'ajouter des arêtes/arcs à
[PDF] Théorie des graphes
Le programme Python suivant permet de simuler le parcours aléatoire du graphe précédent en utilisant une liste d'adjacence des hyperliens : Q20 Modifier le
[PDF] TP 2 : Théorie des graphes 1 Introduction - CELENE
Voici donc quelques opérations simples sur les graphes accessibles grâce à cette bibliothèque Créer un graphe : 1 G = nx Graph() #Crée un graphe G non orienté
[PDF] Formation LIESSE 2021 Théorie des graphes sous Python
10 mai 2021 · output=”test-graph-tool pdf ”) Aime Alice Bob Yannis Haralambous (IMT Atlantique) Formation LIESSE 2021Théorie des graphes sous Python
[PDF] N1MA0011_Poly_Elements de theorie des graphes
Éléments de théorie des graphes – Éric Sopena MHT063 2 version du mardi 29 janvier 2013 La représentation en Python du graphe G ci-dessus sera alors :
[PDF] Graphes - Université Paris Cité
1 15 Les graphes avec Python time que les connaissances sur la théorie des graphes ne forment pas une théorie mais « un savoir une série de faits«
[PDF] Les graphes
31 mai 2021 · Savoir utiliser un graphe pour en déduire l'existence de Les scripts Python Sur la théorie des graphes appliquée aux jeux
[PDF] Théorie des graphes et optimisation dans les graphes - CNRS
Théorie des graphes et optimisation dans les graphes Christine Solnon Table des matières 1 Motivations 3 2 Définitions 4 3 Représentation des graphes
[PDF] Quelques rappels sur la théorie des graphes - CNRS
Quelques rappels sur la théorie des graphes 1 1 Définitions 1 1 1 Graphes non orientés Définition 1 1 Un graphe non orienté G est la donnée d'un couple G
[PDF] Graphes
I Eléments de la théorie des graphes 2 LSVIII-BIM Algorithmie 2019 Un graphe orienté G noté G = (S A) est un ensemble fini S de sommets (ou nœuds)
LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 1/21Objectifs pédagogiques :
Modéliser des situations sous forme de graphes.Chercher un chemin dans un graphe
de la théorie des graphes et de la recherche opérationnelle sont aujourd'hui immenses tant au plan civil que militaire :
aide à la prise de décision ; recherche de la meilleure stratégie ;La théorie des graphes n'est pas une branche indépendante des mathématiques, elle se rattache à la programmation
linéaire, la programmation convexe (où le concept plus général de fonction convexe remplace les fonctions linéaires
et affines), la topologie, le calcul des probabilités.1. Un peu de vocabulaire sur les graphes
certains étant reliés par des segments de droites ou de courbes (simples) appelés arêtes, la disposition des sommets
et la forme choisie pour les arêtes n'intervenant pas. Le nombre de sommets du graphe est son ordre. Sauf indication
contraire, un graphe sera considéré comme non orienté et les arêtes pourront être parcourues dans les deux sens. Ce
type de graphe peut se présenter dans des problèmes élémentaires de type combinatoire. La plupart des applications
de la théorie graphes, (problèmes d'optimisation, communications, trafics aériens, ...) conduisent à des graphes
orientés où les arêtes orientées sont appelées arcs. Le degré d'un sommet est le nombre d'arêtes auxquelles il est
relié. Deux sommets d'un graphe sont dits adjacents s'il existe une arête (ou un arc) qui les relie. Un graphe est
dit complet si deux quelconques de ses sommets sont adjacentsGraphe non orienté
Graphe orienté
S1 S2 S3 S1 S2 S3Sommet
Sommet
LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 2/21 en outre complets.2. Le dilemme du gardien de parc
Situation réelle
Situation modélisée par un graphe non orientéVous travaillez dans un parc et devez entretenir les ponts représentés en rouge sur la figure ci-dessus. Pour économiser
du temps et de l'énergie, vous désirez passer sur chaque pont une et une seule fois. Q1. Etablir le graphe modélisant la situation décrite. Q2. En partant de la zone C, trouvez tous les chemins possibles. Q3. Cela est-il possible en commençant depuis l'île B ? Expliquez. Q5. Précisez le degré de chaque sommet du graphe.Q6. Pourquoi, selon vous, le graphe modélisant le situation étudiée est-il qualifié de non orienté.
Précurseur avec Leibniz de la théorie des graphes et de la topologie, Euler résolut (1735) le problème des sept ponts
Situation réelle
Situation modélisée par un graphe non orienté A B C D A B C D A B C D A B C D ?LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 3/21revenir à son point de départ. En représentant le problème par un graphe, on peut alors reformuler la question de la
départ ?Les deux contraintes importantes sont :
un cycle.de trouver une condition très simple pour savoir si un tel chemin existe. Euler a remarqué ceci :
il faut donc que chaque quartier comporte un nombre pair de ponts. Q7. Etablir le graphe modélisant la situation décrite. Q8. Le problème des 7 ponts admet-il une solution ? Justifier.4. Réseaux sociaux : modélisation par un graphe
Au premier trimestre 2020, Facebook© revendiquait 2,6 milliards d'utilisateurs actifs chaque mois, en hausse de 9,2% par
rapport à début 2019. Le réseau social américain a passé la barre symbolique des 2 milliards au deuxième trimestre 2017. A
noter que 42% des utilisateurs actifs mensuels de Facebook viennent d'Asie-Pacifique, 15,6% sont Européens et 9,7% sont
4.1. Principe de la modélisation par un graphe non orienté
Imaginez un réseau social ayant 7 abonnés (L, M, N, O, P, Q et R) où :L est ami avec M, N, O et P ;
M est ami avec L et P ;
N est ami avec L, O et P ;
O est ami avec L,N,P,Q et R ;
P est ami avec O,L et M ;
Q est ami avec N et O ;
R est ami avec O.
La description de ce réseau social, malgré son faible nombre d'abonnés, est déjà quelque peu compliquée, alors imaginez cette même description avec un réseau social comportant des millions d'entre eux ! Il existe un moyen plus "visuel" pour représenter ce réseau social : on peut représenter chaque abonné par un cercle (avec le nom de l'abonné situé dans le cercle) et chaque relation "X est ami avec Y" par un segment de droite reliant X et Y ("X est ami avec Y" et "Y est ami avec X" étant représenté par le même segment de droite). Le mini-réseau social décrit précédemment peut être modélisé sous la forme du graphe ci-contre.Modélisation du mini-réseau social sous
Arête
Sommet
LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 4/21>>> La distance entre deux sommets d'un graphe est le nombre minimum d'arêtes pour aller du sommet à un autre.
Exemple : entre L et R la distance est 2.
>>> L'écartement d'un sommet est la distance maximale existant entre ce sommet et les autres sommets du graphe.
Exemple : pour le sommet Q, la plus grande distance avec un autre sommet est 3 ; l'écartement est donc de 3.
>>> Le centre d'un graphe est le sommet d'écartement minimal (le centre n'est pas nécessairement unique).
Exemple : les sommets Q et R ont un écartement de 3, les autres un écartement de 2 ; les centres sont donc L, N, O,
P. >>> Le rayon d'un graphe est l'écartement d'un centre du graphe. Exemple : les centres L, N, O, P ont un écartement de 2 ; le rayon du graphe est donc 2. >>> Le diamètre d'un graphe est la distance maximale entre deux sommets du graphe. Q9. Construisez un graphe de réseau social à partir des informations suivantes :A est ami avec B, D et E ;
B est ami avec A, C et D ;
C est ami avec B et D ;
D est ami avec A, B, C et E ;
E est ami avec A et F ;
F est ami avec E.
Q10. Compléter le tableau ci-dessous des distances entre sommets :Distances A B C D E F
A 0 B 0 C 0D 0
E 0
F 0
Q11. Quel est le centre du graphe
Q12. Quel est le rayon du graphe ?
Q13. Quel est le diamètre du graphe ?
4.2. Implémentation d'un graphe non orienté à l'aide d'une matrice d'adjacence
programme Python. Une matrice est un tableau à double entrée :Comment construire une matrice d'adjacence ?
Il faut savoir qu'à chaque ligne correspond un sommet du graphe et qu'à chaque colonne correspond aussi un sommet
du graphe. À chaque intersection ligne i-colonne j (ligne i correspond au sommet i et colonne j correspond au sommet
j), on place un 1 s'il existe une arête entre le sommet i et le sommet j, et un zéro s'il n'existe pas d'arête entre le
sommet i et le sommet j.LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 5/21 / colonne, de répondre à la question : Est-ce que le sommet " X » est relié directement au sommet " Y » par une arête ?Si la réponse est OUI 1
Si la réponse est NON 0
Remarques :
et de colonnes. associée sont symétrique par rapport à la grande diagonale des 0. traduisant la relation " est ami avec »Graphe non orienté traduisant la relation :
" X est ami avec Y ».LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 6/214.3. Implémentation d'un graphe orienté à l'aide d'une matrice d'adjacence
arcs) afin de traduire la relation " X » suit " Y ».Graphe orienté de traduisant la relation :
" X suit Y »Remarque ; Zoé est la star du réseau social car elle ne suit personne mais tout le monde la suit.
Q17. Comment peut-on obtenir facilement le nombre de personnes suivies par une personne donnée ? Q18. Comment peut-on obtenir facilement le nombre de personnes qui suivent une personne donnée ?2 liens entrants (1 depuis la page et 1 depuis la page ).
graphe orientéModélisation des liens sortants par liste
Ecriture simplifiée :
Page Lien sortant
Pages : 0 1 2 3 (indices)LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 7/21Le programme Python suivant permet de simuler le parcours aléatoire du graphe précédent en utilisant une liste
aléatoire comportant nbEtapes :LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 8/21 Remarque : on affichera pas les pages visitées au fur et à mesure du parcours du graphe.Q23. Les résultats précédents sont-ils sensiblement modifiés si on déplace le lien rouge dans le réseau de pages web
précédent comme figuré ci-dessous ?de recherche Google. En première approximation un " page rank » simplifié se rapproche des scores de fréquentation
inventé par Larry Page, cofondateur de Google. Ce mot est une marque déposée. Comprendre en vidéo le PR de Google avec PageRank Simulator : https://youtu.be/xdE-L-A2TLA PageRank Simulator : http://faculty.chemeketa.edu/ascholer/cs160/WebApps/PageRank/La toute première " formule magique » de calcul du PR par Google (la toute dernière est secrète) :
Comment calculer un PS simplifié ? : http://www.canyouseome.com/comment-calculer-le-page-rank/LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 9/216. Comment parcourir un graphe ?
représentent les pages du site et les arêtes représentent les liens hypertextes (ou hyperliens) permettant d'aller
d'une page à une autre.Dans tout ce qui suit, on supposera que ce graphe est connexe, c'est-à-dire qu'à partir d'une page donnée, toute
autre page est accessible par une série de liens (une chaîne). parcourir ce graphe en passant par tous ses sommets.6.1. Parcours en largeur : Breadth First Search (BFS)
Comment ça marche ?
de ses voisins avant d'explorer leurs enfants. Autrement dit, on commence d'abord par aller sur la plus grande largeur
possible. Son implémentation repose sur une file (queue) dont le principe du premier entré, premier sorti (FIFO : First
dRemarque : on donne le nom de parcours en largeur d'un graphe car cet algorithme va visiter tous les sommets à
distance 1 du sommet de départ puis tous les sommets à distance 2 du sommet de départ puis tous les sommets à
distance 3 du sommet de départ etc... distance = 0 distance = 1 distance = 2 distance = 3Exploration
LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 10/21Ressources à consulter :
https://youtu.be/NrQGxfFMYzsOn va procéder à un parcours en largeur du graphe en mettant les sommets successifs dans une file (structure
FIFO). Voici la description intuitive de l'algorithme :1. On enfile le sommet de départ (on visite la page d'accueil du site).
2. On enfile les sommets adjacents à la tête de file (on visite les pages ciblées par la page d'accueil) s'ils ne sont
pas déjà présents dans la file.3. On défile (c'est-à-dire on supprime la tête de file).
4. Tant que la file n'est pas vide, on ré-itère les points 2 et 3.
En d'autres termes, on défile toujours prioritairement les sommets (les pages) les plus tôt découverts.
Programmation en Python :
Nous avons vu précédemment la notion de graphe et le fait que tout graphe pouvait être caractérisé par sa matrice
d'adjacence composée de 1 et de 0 selon que deux sommets sont ou ne sont pas reliés par une arête.
Une nouvelle façon d'encoder un graphe sous Python est d'utiliser un dictionnaire qui sera la représentation de sa
matrice d'adjacence. La clé associée à chaque sommet sera la liste des sommets adjacents :Q24. Montrer, en partant du point B, que la méthode de parcours en largeur (BFS) du graphe précédent se ramène à
un arbre dont le sommet est b. On représentera en pointillés les arêtes entre deux sommets déjà explorés.
LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 11/21réalisera avec une fonction bfs(graphe, sommet_de_depart) dont les variables seront les suivantes :
Un dictionnaire P tel que, en fin de parcours, pour tout sommet S du graphe, P[S] sera le père de S, c'est-à-
dire le sommet à partir duquel le sommet S a été découvert lors du parcours.Un dictionnaire couleur[] tel que, pour tout sommet S, couleur[S] soit blanc si le sommet S n'est pas passé
dans la file, gris si le sommet S est dans la file et noir si le sommet S est sorti de la file.Une liste Q utilisée comme file (FIFO) : on enfile un sommet lorsqu'il est découvert et on le défile lorsqu'il est
terminé (traitement prioritaire des sommets découverts au plus tôt).Q25. Assurez-vous que le résultat obtenu est conforme à celui obtenu à la main à la question Q24.
Q26. Tester le parcours du graphe en largeur depuis différents sommets et comparer le résultat obtenu avec la
méthode manuelle.Il est également possible de coder le programme en faisant intervenir la notion de classe comme dans le programme
ci-après.LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 12/21LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 13/216.2. Parcours en profondeur : Depth First Search (DFS)
Comment ça marche ?
chaque branche complètement avant de passer à la suivante. Autrement dit, on commence d'abord par aller le plus
Ressources à consulter :
https://youtu.be/kcedjJOjDpgOn va procéder à un parcours en profondeur du graphe en mettant les sommets successifs dans une pile (structure
LIFO). Voici la description intuitive de l'algorithme :1. On empile le sommet de départ (on visite la page d'accueil du site).
2.Si le sommet de la pile possède des voisins qui ne sont pas dans la pile, ni déjà passés dans la
pile, alors on sélectionne l'un de ces voisins et on l'empile (en le marquant de son numéro de découverte) Sinon on dépile (c'est-à-dire on supprime l'élément au sommet de la pile).3. On recommence au point 2 tant que la pile n'est pas vide.
En d'autres termes, on traite toujours en priorité les liens des pages les plus tard découvertes.
LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 14/21Programmation en Python :
Q27. Montrer, en partant du point g, que la méthode de parcours en profondeur (DFS) du graphe précédent se ramène
à un arbre dont le sommet est g. On représentera en pointillés les arêtes entre deux sommets déjà explorés.
programmation du parcours en profondeur (DFS) se réalisera avec une fonction dfs(graphe, sommet_de_depart) dont les variables seront les suivantes :Un dictionnaire P tel que, en fin de parcours, pour tout sommet S du graphe, P[S] sera le père de S, c'est-à-
dire le sommet à partir duquel le sommet S a été découvert lors que parcours.Un dictionnaire couleur[] tel que, pour tout sommet S, couleur[S] soit blanc si le sommet S n'est pas passé
dans la file, gris si le sommet S est dans la file et noir si le sommet S est sorti de la file.Une liste Q utilisée comme pile (LIFO).
Q28. Tester le parcours du graphe en largeur depuis différents sommets et comparer le résultat obtenu avec la
méthode manuelle.Il est également possible de coder le programme en faisant intervenir la notion de classe comme dans le programme
ci-après.LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 15/21LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 16/217. Comment détecter un cycle dans un graphe ?
7.1. Notion de cycle
Un cycle est un sous graphe dont les sommets peuvent être organisés en une séquence fermée.
Graphe orienté :
Graphe non orienté :
tester les programmes des paragraphes suivants.7.2. Parcours en largeur (BFS)
7.2.1. Graphe orienté
L'idée est très simple, pour vérifier s'il existe un cycle, il suffit de vérifier s'il existe un chemin partant d'un sommet
disons "v" et revenant à ce sommet pour tous les sommets. S'il existe un tel chemin, nous disons que le graphe
contient un cycle. Maintenant, la question est de savoir comment vérifier un tel chemin ? Là encore réponse à cette
question est très simple, exécutez une traversée à partir d'un sommet "v" si nous revenons à ce sommet, nous
retournons True sinon retournons False.La fonction suivante vérifie s'il existe un chemin partant d'un sommet " u » vers un sommet " v » :
1 5 2 3 4 3 4 5 1 5 2 3 4 3 4 5 Cycle CycleLGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 17/21La fonction ci-dessus est la fonction principale, maintenant pour vérifier s'il existe un cycle, il suffit de vérifier tous les
sommets s'il existe un chemin partant de ce sommet et y retournant : 1 5 2 3 4LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 18/217.2.1. Graphe non orienté
Pour un graphe non orienté, nous appliquons simplement le parcours en largeur pour détecter un cycle. L'idée est
d'utiliser un tableau pour mémoriser le parent de chaque sommet (De quel sommet nous avons découvert chaque
sommet). En découvrant les sommets, on vérifie si on retourne au sommet déjà visité et que ce sommet n'est pas le
parent du sommet courant, si c'est le cas, alors il existe un cycle. 1 5 2 3 4LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 19/217.3. Parcours en profondeur (DFS)
7.3.1. Graphe orienté
L'utilisation de la parcours en profondeur est un peu plus compliquée, car l'algorithme est récursif, et comme vous le
savez, derrière chaque algorithme récursif, il existe une pile utilisée pour les appels récursifs. Parce que pendant
l'exécution de l'algorithme, nous n'avons pas accès à cette pile, nous allons devoir créer une pile et suivre les sommets
déjà dans la pile. Comment cette pile est utile pour détecter un cycle ? Pour bien comprendre ce qui se passe, on
sont empilés vers la pile et dépilés :Revenons maintenant à la question de savoir comment il est utile de savoir quel élément est déjà dans la pile
Lors de l'exécution de l'algorithme, si nous revenons à un élément " i » (Visités[i] = True) qui existe déjà dans la pile
(Pile[i] = True), (Visités[i] = True) et on ajoute également à la pile (Pile[i] = True sommets adjacents, on le supprime de la pile (Pile[i] = False)LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 20/21 1 5 2 3 4LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI ʹ Théorie des graphes 21/217.3.2. Graphe non orienté
La revient à un sommet, que ce sommet n'est pas le parent du sommet de l'appelant. 1 5 2 3 4quotesdbs_dbs44.pdfusesText_44[PDF] parcours en profondeur itératif
[PDF] algorithme parcours en profondeur python
[PDF] parcours en largeur graphe java
[PDF] conflit de puissance définition
[PDF] parcours lecture acces pas cher
[PDF] parcours lecture pdf
[PDF] parcours lecture le petit chaperon rouge
[PDF] parcours lecture acces avis
[PDF] parcours lecture occasion
[PDF] coexistence pacifique cours
[PDF] archives militaire en ligne
[PDF] livret militaire en ligne
[PDF] la coexistence pacifique de 1953 ? 1962 pdf
[PDF] cornière catnic