efrei/theorie-graphes/main.tex
2022-02-01 09:53:36 +01:00

163 lines
5.4 KiB
TeX

\documentclass[a4paper,french,12pt]{article}
\title{Théorie des graphes}
\author{}
\date{Dernière compilation~: \today{} à \currenttime}
\usepackage{../cours}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart}
\usetikzlibrary{automata, arrows.meta, positioning}
\begin{document}
\maketitle
\tableofcontents
\clearpage
\section{Définitions}
Un graphe est un ensemble de sommets qui possèdent des relations.
Quand les relations sont symétriques, le graphe est \emph{non orienté}.
Les relations sont alors appelées des \emph{arrêtes}.
L'arrête $(x,y)$ est équivalente à l'arrête $(y,x)$.
Quand les relations sont non symétriques, la relation dépend d'une direction.
Le graphe est alors \emph{orienté} et les relations s'appelent des \emph{arcs}.
Un graphe peut contenir des arcs et des arrêtes, mais on dira quand même qu'il est soit \emph{orienté} soit \emph{non orienté}.
Dès qu'il existe des relations non symétriques, donc des arcs, on parle donc de graphe orienté.
On peut ajouter une valeur aux relations (par exemple pour le calcul d'un temps de trajet, ou un coût pour le calcul d'une route OSPF).
On parle alors de graphe \emph{valué}.
S'il n'y pas de valeur associée aux relations, le graphe est \emph{non valué}.
\section{Matrice d'un graphe orienté}
\begin{multicols}{2}
On peut passer d'une représentation graphique à un tableau~: \\\\
\begin{tabularx}{\linewidth}{YYYYY}
& A & B & C & D \\
A & 0 & 1 & 1 & 1 \\
B & 0 & 0 & 0 & 0 \\
C & 0 & 1 & 0 & 1 \\
D & 0 & 1 & 0 & 0 \\
\end{tabularx}
\begin{center}
\begin{tikzpicture}[-latex,auto,x=2cm,y=2cm]
\node(a)[state] at (0,0) {A};
\node(b)[state] at (2,0) {B};
\node(c)[state] at (2,-2) {C};
\node(d)[state] at (0,-2) {D};
\path
(a) edge (b)
(a) edge (c)
(a) edge (d)
(c) edge (b)
(c) edge (d)
(d) edge (b)
;
\end{tikzpicture}
\end{center}
\end{multicols}
\section{Types de graphes}
\subsection{Cycle}
Depuis un sommet on peut rejoindre le même somment en empruntant les chemins qu'une seule fois.
\begin{tikzpicture}[-latex,auto,x=2cm,y=2cm]
\node(a)[state] at (0,0) {a};
\node(b)[state] at (0,1) {b};
\node(c)[state] at (1,1) {c};
\node(d)[state] at (1,0) {d};
\path
(a) edge (b)
(b) edge (c)
(c) edge (d)
(d) edge (a)
;
\end{tikzpicture}
\paragraph{Cycle Hamiltonien}
\paragraph{Cycle Eulerien}
\subsection{Chaîne}
Suite de sommets reliés par des arrêtes.
\paragraph{Chaîne Hamiltonienne}
C'est une chaîne passant par tous les sommets.
\begin{tikzpicture}[-,auto,x=2cm,y=2cm]
\node(a)[state] at (0,0) {a};
\node(b)[state] at (0,1) {b};
\node(c)[state] at (1,1) {c};
\node(d)[state] at (1,0) {d};
\path
(a) edge (b)
(b) edge (c)
(c) edge (d)
;
\end{tikzpicture}
\paragraph{Chaîne Eulerienne}
C'est une chaîne passant par toutes les arrêtes.
\begin{tikzpicture}[-latex,auto,x=2cm,y=2cm]
\node(a)[state] at (0,0) {a};
\node(b)[state] at (0,1) {b};
\node(c)[state] at (1,1) {c};
\node(d)[state] at (1,0) {d};
\path
(a) edge (b)
(a) edge (c)
(b) edge (c)
(c) edge (d)
(d) edge (b)
;
\end{tikzpicture}
\section{Fonction $\Gamma$}
\subsection{Extrémité, prédécesseur, successeur}
Soit $G=(S,A)$ un graphe.
Soient $x$ et $y$ deux sommets de $S$.
$a=(x,y)$ (arrête ou arc) étant un élément de l'ensemble $A$, $x$ et $y$ sont alors des \emph{extrémités} de $a$.
Si $a$ est un arc (donc orienté) allant de $x$ à $y$, alors $x$ est le \emph{prédécesseur} de $y$ et $y$ est le \emph{successeur} de $x$.
\subsection{Prédécesseurs et successeurs directs}
$\Gamma^{-1}(x)$ désigne l'ensemble des prédécesseurs de $x$. \\
$\Gamma^{+1}(x)$ désigne l'ensemble des successeurs de $x$.
\subsection{Prédécesseurs et successeurs indirects}
$\Gamma^{-n}(x)$ désigne l'ensemble des prédécesseurs de niveau $n$ de $x$. \\
$\Gamma^{+n}(x)$ désigne l'ensemble des successeurs de niveau $n$ de $x$.
On peut définir $\Gamma^{-n}(x)$ comme étant l'ensemble des prédécesseurs des $\Gamma^{-n+1}(x)$. \\
On peut définir $\Gamma^{+n}(x)$ comme étant l'ensemble des successeurs des $\Gamma^{+n-1}(x)$.
\subsection{Prédécesseurs et successeurs directs et/ou indirects}
Les ensembles des prédécesseurs et successeurs de $x$ de niveau quelconque sont notés respectivement $\Gamma^{-*}(x)$ et $\Gamma^{+*}(x)$.
On peut les calculer avec une somme infinie~:
\begin{equation*}
\Gamma^{+*}(x) = \Gamma^{+1}(x) \cup \Gamma^{+2}(x) \cup \Gamma^{+2}(x) \cdots \cup \Gamma^{+n}(x)
\end{equation*}
\end{document}