SlideShare une entreprise Scribd logo
1  sur  4
Lycée Omar ibn
Abdelaziz CPGE-
Oujda
Les graphes
1) Origines
Le problème des sept ponts de Königsberg Résolu par Leonhard Euler en 1736 est
à l’origine de la théorie des graphes. Ce problème consiste à déterminer s'il existe
ou non une promenade dans les rues de Königsberg permettant, à partir d'un point
de départ au choix, de passer une et une seule fois par chaque pont, et de revenir à
son point de départ, étant entendu qu'on ne peut traverser le Pregel qu'en passant sur les ponts.
2) Définitions
Graphe : Un graphe G est défini par G=(V,U), ou V est un ensemble de sommets
et U l’ensemble d'arcs(ou arêtes) ; Un arc (ou arête) est un couple de sommets, donc, un élément du produit
cartésien VxV
Graphe orienté et Graphe non orienté : Si les arêtes ne sont pas orientées, on parle d’un
graphe non orienté. Dans le cas contraire on parle d’un graphe orienté et les arêtes sont appelées
aussi les arcs.
Graphe Pondéré : Un graphe pondéré est défini par le triplet (V,U,C) où : V est l’ensemble des sommets, U est
l’ensemble des arrêtes (ou arcs), et C est la fonction de coût de U dans IR. Par convention Cu représente le coût ou le poids de
l’arc (ou de l’arête) u.
Graphe Connexe : Un graphe connexe est un graphe dont tout couple de sommets peut être relie par une chaine de
longueur n>=1
3) Terminologies
• Ordre du Graphe : le nombre de sommet du Graphe
• Degré d’un sommet : nombre d’arêtes reliées à ce sommet
• Adjacences: Deux arcs sont dits adjacents s'ils ont une extrémité en commun. Et deux sommets sont dits
adjacents si un arc les relie.
• Boucle : est un arc qui part d’un sommet vers le même sommet
• Chaîne : Une chaine de longueur n est une suite de n arêtes qui relient un sommet i à un autre j ou à lui-
même.
• Cycle : Un cycle est une chaine qui permet de partir d’un sommet et revenir a ce sommet en parcourant une
et une seule fois les autres sommets.
• Distance entre deux sommets i et j est la longueur de la chaine la plus courte qui les relie
• Chemin : c’est une chaine bien orientée
• Circuit : est un cycle "bien orienté", à la fois cycle et chemin.
• Chaine eulérienne: une chaine est dite eulérienne est une chaine comportant exactement une fois toutes
les arêtes du graphe.
• Cycle eulérien : si le sommet de départ d’une chaine eulérienne et celui d’arrivé on parle de cycle
eulérienne
• Graphe eulérien : Un graphe admettant une chaine eulérienne est dit Graphe eulérien
• Cycle hamiltonien : c’est un cycle passant une seule fois par tous les sommets d’un graphe et revenant au
sommet de départ.
4) Représentation d’un Graphe
Un graphe peut être implémenté de différentes manières selon le langage utilisé. En Python en peut représenter un
graphe à l’aide d’un dictionnaire ou à l’aide d’une matrice d’adjacence.
Propriétés de la matrice d’adjacence
•La matrice est symétrique si le graphe n’est pas orienté.
•La somme des nombres d’une même ligne (ou d’une même colonne) donne le degré du sommet correspondant.
•La diagonale ne contient que des zéros.
•Les termes aij de la matrice An
donnent le nombre de chaînes de longueur n reliant i à j
5)Parcours d’un graphe
Par la suie nous utilisons la représentation en utilisant la matrice d’adjacence d’un graphe
Le parcours en profondeur d'abord DFS (Depht First Search) : on va aussi loin que possible en faisant des
choix lors des branchements, et ensuite on remonte aussi près que possible pour faire les choix restants ;
Algorithme : Initialement tous les nœuds sont marqués " non visités".
• Choisir un nœud v de départ et le marquer " visité".
• Chaque nœud adjacent à v, non visité, est à son tour visité en utilisant DFS récursivement.
• Une fois tous les nœuds accessibles à partir de v ont été visités, la recherche de v ( DFS(v) ) est
complète. Si certains nœuds du graphe restent "non visités", sélectionner un comme nouveau nœud de
départ et répé ter le processus jusqu'à ce que tous les nœuds soient visités.
import numpy as np ou bien
def succNonVisite(G,s,test):
n=len(G[s]) : L=[]
for i in range(n):
if G[s][i]==1 and test[i]==0:
L.append(i)
return L
def DFSRecursif(G,s,test):
test[s]=1
print(s,end=' ')
for x in succNonVisite(G,s,test):
if test[x]==0:
DFSRecursif(G,x,test)
def parcoursProfondeur(G):
test = [0]*len(G)
for i in range(len(G)):
if test[i] == 0:
DFSRecursif(G,i,test)
M=np.array([[0,1,0,0,0,0,0],
[1,0,1,0,0,0,0],
[0,1,0,1,0,1,0],
[0,0,1,0,1,0,1],
[0,0,0,1,0,0,0],
[0,0,1,0,0,0,0],
[0,0,0,1,0,0,0]])
bb=parcoursProfondeur(M)
Graphe dictionnaire Matrice d’adjacence
Exemple
def matrice(A,S):#matrice d'adjacence
N=len(S)
M=[]
for i in range(0,N):
t=[]
for j in range(0,N):
if [i,j] in A or [j,i] in A:
t.append(1)
else:
t.append(0)
M.append(t)
return M
def parcours(M,n,i,marque):#parcours d'un grap conn
marque.append(i)
for j in range(0,n):
if M[i][j]==1 and j not in marque:
marque=parcours(M,n,j,marque)
return marque
def parcours_profondeur(M,n):#pour parc un gr non con
marque=[]
for i in range(0,n):
if i not in marque:
marque=parcours(M,n,i,marque)
return marque
#programme principal
A=[[1,3],[2,3],[0,2],[4,5]] : S=[0,1,2,3,4,5] :M=matrice(A,S)
print(M) :n=len(S) :print(parcours_profondeur(M,n))
Le parcours en largeur (Breadh First Search ): on procède par niveau en considérant d'abord tous les sommets
à une distance donnée, avant de traiter ceux du niveau suivant.
6) Le Plus court chemin
Il existe de nombreux algorithmes déterminant un ou le plus court chemin dans un graphe connexe pondéré. Par
exemple: Warshall, Floyd, Dijkstra, Branch and Bound, Bellman-Ford
On se limitera à la recherche d'un plus court chemin entre deux sommets du graphe pondéré avec des poids positifs
en utilisant la matrice d’adjacence pour représenter le graphe.
a. Algorithme de dijkstra
L'algorithme dû à Dijkstra est basé sur le principe suivant : Si le plus court chemin reliant E à S passe par les
sommets s1, s2, …, sk alors, les différentes étapes sont aussi les plus courts chemins reliant E aux différents
sommets s1, s2, …, sk.
On construit de proche en proche le chemin cherché en choisissant à chaque itération de l'algorithme,
un sommet si du graphe parmi ceux qui n'ont pas encore été traités, tel que la longueur connue provisoirement
du plus court chemin allant de E à si soit la plus courte possible.
Initialisation de l'algorithme :
Étape 1 : On affecte le poids 0 au sommet origine (E) et on attribue provisoirement un poids ∞ aux autres
sommets.
Répéter les opérations suivantes tant que le sommet de sortie (s) n'est pas affecté d'un poids définitif
Étape 2 : Parmi les sommets dont le poids n'est pas définivement fixé choisir le sommet X de poids p minimal.
Marquer définitivement ce sommet X affecté du poids p(X).
Étape 3 : Pour tous les sommets Y qui ne sont pas définitivement marqués, adjacents au dernier sommet fixé
X :
•Calculer la somme s du poids de X et du poids de l'arête reliant X à Y.
•Si la somme s est inférieure au poids provisoirement affecté au sommet Y, affecter provisoirement à Y le
nouveau poids s et indiquer entre parenthèses le sommet X pour se souvenir de sa provenance.
Quand le sommet s est défintivement marqué
Le plus court chemin de E à S s'obtient en écrivant de gauche à droite le parcours en partant de la fin S.
•Graphes eulériens :
•Définition :
On considère un graphe non orienté G = (X, A). Un cycle µ de G est appelé cycle eulérien si µ passe exactement
une fois par chaque arête de G. Un graphe qui possède un cycle eulérien est appelé graphe eulérien.
Donc : Le graphe G = (X, A) est eulérien si et seulement si chaque sommet de G est
de degré pair.
La condition est nécessaire puisque si µ est un cycle eulérien de G et que µ rencontre k fois un sommet x, alors x
est incident a exactement k arêtes (µ rentre k fois dans x, et il en ressort k fois aussi).
•Graphes Hamiltoniens
•Définition
On considère un graphe non orienté G = (X, A). Un cycle µ de G est appelé cycle hamiltonien si µ passe exactemen
une fois par chaque sommet de G. Un graphe qui possède un cycle hamiltonien est appelé graphe hamiltonien
Contrairement au cas des graphes eulériens, nous n'avons pas de propriété simple qui permette de vérifier si un
graphe est hamiltonien ou pas. Le problème de l'hamiltonicité (étant donné G, est-il hamiltonien) est un problèm
NP-comple
Sachant que la fonction minD retourne l’indice du sommet de C ayant la petite valeur dans D. c.à.d. le sommet
prochain ayant une distance minimale avec le sommet du départ

Contenu connexe

Dernier

Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxssusercbaa22
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfachrafbrahimi1
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptssusercbaa22
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxssuserbd075f
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfabatanebureau
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptxMalikaIdseaid1
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...M2i Formation
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptssusercbaa22
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 

Dernier (16)

Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptx
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.ppt
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 

En vedette

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

En vedette (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Cours graphes1

  • 1. Lycée Omar ibn Abdelaziz CPGE- Oujda Les graphes 1) Origines Le problème des sept ponts de Königsberg Résolu par Leonhard Euler en 1736 est à l’origine de la théorie des graphes. Ce problème consiste à déterminer s'il existe ou non une promenade dans les rues de Königsberg permettant, à partir d'un point de départ au choix, de passer une et une seule fois par chaque pont, et de revenir à son point de départ, étant entendu qu'on ne peut traverser le Pregel qu'en passant sur les ponts. 2) Définitions Graphe : Un graphe G est défini par G=(V,U), ou V est un ensemble de sommets et U l’ensemble d'arcs(ou arêtes) ; Un arc (ou arête) est un couple de sommets, donc, un élément du produit cartésien VxV Graphe orienté et Graphe non orienté : Si les arêtes ne sont pas orientées, on parle d’un graphe non orienté. Dans le cas contraire on parle d’un graphe orienté et les arêtes sont appelées aussi les arcs. Graphe Pondéré : Un graphe pondéré est défini par le triplet (V,U,C) où : V est l’ensemble des sommets, U est l’ensemble des arrêtes (ou arcs), et C est la fonction de coût de U dans IR. Par convention Cu représente le coût ou le poids de l’arc (ou de l’arête) u. Graphe Connexe : Un graphe connexe est un graphe dont tout couple de sommets peut être relie par une chaine de longueur n>=1 3) Terminologies • Ordre du Graphe : le nombre de sommet du Graphe • Degré d’un sommet : nombre d’arêtes reliées à ce sommet • Adjacences: Deux arcs sont dits adjacents s'ils ont une extrémité en commun. Et deux sommets sont dits adjacents si un arc les relie. • Boucle : est un arc qui part d’un sommet vers le même sommet • Chaîne : Une chaine de longueur n est une suite de n arêtes qui relient un sommet i à un autre j ou à lui- même. • Cycle : Un cycle est une chaine qui permet de partir d’un sommet et revenir a ce sommet en parcourant une et une seule fois les autres sommets. • Distance entre deux sommets i et j est la longueur de la chaine la plus courte qui les relie • Chemin : c’est une chaine bien orientée • Circuit : est un cycle "bien orienté", à la fois cycle et chemin. • Chaine eulérienne: une chaine est dite eulérienne est une chaine comportant exactement une fois toutes les arêtes du graphe. • Cycle eulérien : si le sommet de départ d’une chaine eulérienne et celui d’arrivé on parle de cycle eulérienne • Graphe eulérien : Un graphe admettant une chaine eulérienne est dit Graphe eulérien • Cycle hamiltonien : c’est un cycle passant une seule fois par tous les sommets d’un graphe et revenant au sommet de départ. 4) Représentation d’un Graphe Un graphe peut être implémenté de différentes manières selon le langage utilisé. En Python en peut représenter un graphe à l’aide d’un dictionnaire ou à l’aide d’une matrice d’adjacence.
  • 2. Propriétés de la matrice d’adjacence •La matrice est symétrique si le graphe n’est pas orienté. •La somme des nombres d’une même ligne (ou d’une même colonne) donne le degré du sommet correspondant. •La diagonale ne contient que des zéros. •Les termes aij de la matrice An donnent le nombre de chaînes de longueur n reliant i à j 5)Parcours d’un graphe Par la suie nous utilisons la représentation en utilisant la matrice d’adjacence d’un graphe Le parcours en profondeur d'abord DFS (Depht First Search) : on va aussi loin que possible en faisant des choix lors des branchements, et ensuite on remonte aussi près que possible pour faire les choix restants ; Algorithme : Initialement tous les nœuds sont marqués " non visités". • Choisir un nœud v de départ et le marquer " visité". • Chaque nœud adjacent à v, non visité, est à son tour visité en utilisant DFS récursivement. • Une fois tous les nœuds accessibles à partir de v ont été visités, la recherche de v ( DFS(v) ) est complète. Si certains nœuds du graphe restent "non visités", sélectionner un comme nouveau nœud de départ et répé ter le processus jusqu'à ce que tous les nœuds soient visités. import numpy as np ou bien def succNonVisite(G,s,test): n=len(G[s]) : L=[] for i in range(n): if G[s][i]==1 and test[i]==0: L.append(i) return L def DFSRecursif(G,s,test): test[s]=1 print(s,end=' ') for x in succNonVisite(G,s,test): if test[x]==0: DFSRecursif(G,x,test) def parcoursProfondeur(G): test = [0]*len(G) for i in range(len(G)): if test[i] == 0: DFSRecursif(G,i,test) M=np.array([[0,1,0,0,0,0,0], [1,0,1,0,0,0,0], [0,1,0,1,0,1,0], [0,0,1,0,1,0,1], [0,0,0,1,0,0,0], [0,0,1,0,0,0,0], [0,0,0,1,0,0,0]]) bb=parcoursProfondeur(M) Graphe dictionnaire Matrice d’adjacence Exemple def matrice(A,S):#matrice d'adjacence N=len(S) M=[] for i in range(0,N): t=[] for j in range(0,N): if [i,j] in A or [j,i] in A: t.append(1) else: t.append(0) M.append(t) return M def parcours(M,n,i,marque):#parcours d'un grap conn marque.append(i) for j in range(0,n): if M[i][j]==1 and j not in marque: marque=parcours(M,n,j,marque) return marque def parcours_profondeur(M,n):#pour parc un gr non con marque=[] for i in range(0,n): if i not in marque: marque=parcours(M,n,i,marque) return marque #programme principal A=[[1,3],[2,3],[0,2],[4,5]] : S=[0,1,2,3,4,5] :M=matrice(A,S) print(M) :n=len(S) :print(parcours_profondeur(M,n))
  • 3. Le parcours en largeur (Breadh First Search ): on procède par niveau en considérant d'abord tous les sommets à une distance donnée, avant de traiter ceux du niveau suivant. 6) Le Plus court chemin Il existe de nombreux algorithmes déterminant un ou le plus court chemin dans un graphe connexe pondéré. Par exemple: Warshall, Floyd, Dijkstra, Branch and Bound, Bellman-Ford On se limitera à la recherche d'un plus court chemin entre deux sommets du graphe pondéré avec des poids positifs en utilisant la matrice d’adjacence pour représenter le graphe. a. Algorithme de dijkstra L'algorithme dû à Dijkstra est basé sur le principe suivant : Si le plus court chemin reliant E à S passe par les sommets s1, s2, …, sk alors, les différentes étapes sont aussi les plus courts chemins reliant E aux différents sommets s1, s2, …, sk. On construit de proche en proche le chemin cherché en choisissant à chaque itération de l'algorithme, un sommet si du graphe parmi ceux qui n'ont pas encore été traités, tel que la longueur connue provisoirement du plus court chemin allant de E à si soit la plus courte possible. Initialisation de l'algorithme : Étape 1 : On affecte le poids 0 au sommet origine (E) et on attribue provisoirement un poids ∞ aux autres sommets. Répéter les opérations suivantes tant que le sommet de sortie (s) n'est pas affecté d'un poids définitif Étape 2 : Parmi les sommets dont le poids n'est pas définivement fixé choisir le sommet X de poids p minimal. Marquer définitivement ce sommet X affecté du poids p(X). Étape 3 : Pour tous les sommets Y qui ne sont pas définitivement marqués, adjacents au dernier sommet fixé X : •Calculer la somme s du poids de X et du poids de l'arête reliant X à Y. •Si la somme s est inférieure au poids provisoirement affecté au sommet Y, affecter provisoirement à Y le nouveau poids s et indiquer entre parenthèses le sommet X pour se souvenir de sa provenance. Quand le sommet s est défintivement marqué Le plus court chemin de E à S s'obtient en écrivant de gauche à droite le parcours en partant de la fin S.
  • 4. •Graphes eulériens : •Définition : On considère un graphe non orienté G = (X, A). Un cycle µ de G est appelé cycle eulérien si µ passe exactement une fois par chaque arête de G. Un graphe qui possède un cycle eulérien est appelé graphe eulérien. Donc : Le graphe G = (X, A) est eulérien si et seulement si chaque sommet de G est de degré pair. La condition est nécessaire puisque si µ est un cycle eulérien de G et que µ rencontre k fois un sommet x, alors x est incident a exactement k arêtes (µ rentre k fois dans x, et il en ressort k fois aussi). •Graphes Hamiltoniens •Définition On considère un graphe non orienté G = (X, A). Un cycle µ de G est appelé cycle hamiltonien si µ passe exactemen une fois par chaque sommet de G. Un graphe qui possède un cycle hamiltonien est appelé graphe hamiltonien Contrairement au cas des graphes eulériens, nous n'avons pas de propriété simple qui permette de vérifier si un graphe est hamiltonien ou pas. Le problème de l'hamiltonicité (étant donné G, est-il hamiltonien) est un problèm NP-comple Sachant que la fonction minD retourne l’indice du sommet de C ayant la petite valeur dans D. c.à.d. le sommet prochain ayant une distance minimale avec le sommet du départ