From 8005e2eeec4505f59048dab5262b3da2f266dea8 Mon Sep 17 00:00:00 2001 From: Anthony Debucquoy Date: Mon, 15 Dec 2025 09:50:26 +0100 Subject: [PATCH] graph --- src/SUMMARY.md | 10 ++++- src/bac3/GraphOpti/Algos.md | 22 ++++++++++ src/bac3/GraphOpti/OptiCombi.md | 74 +++++++++++++++++++++++++++++++++ src/bac3/GraphOpti/Opti_Init.md | 1 + 4 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 src/bac3/GraphOpti/OptiCombi.md create mode 100644 src/bac3/GraphOpti/Opti_Init.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index fb7fb08..f179f0b 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -57,12 +57,18 @@ # Bac3 -- [Graph. et Opti.]() - - [définitions](./bac3/GraphOpti/Definitions.md) +--- + +- [Graph]() + - [Définitions](./bac3/GraphOpti/Definitions.md) - [Représentation](./bac3/GraphOpti/rpz.md) - [Complexité](./bac3/GraphOpti/complexite.md) - [Algos](./bac3/GraphOpti/Algos.md) +- [Opti combinatoire]() + - [Définition](./bac3/GraphOpti/OptiCombi.md) +--- + - [Statistiques]() - [Introduction](./bac3/Stats/Introduction.md) - [Statistique déscriptive](./bac3/Stats/StatDesc.md) diff --git a/src/bac3/GraphOpti/Algos.md b/src/bac3/GraphOpti/Algos.md index c1919f0..42a93c5 100644 --- a/src/bac3/GraphOpti/Algos.md +++ b/src/bac3/GraphOpti/Algos.md @@ -49,5 +49,27 @@ si ça n'est pas possible, le graph n'est pas bi-partie. L'exploration est en la ## Arbre recouvrant de poids minimal +Si G n'est pas convexe, on peut calculer le poids minimal + L'objectif est de trouver une arborescence couvrante de G dont la somme des poids des arcs soit minimale + +**Propriétée**: En partitionant le graph en deux, il y aura toujours une arrete joignant les deux +partitions qui sera minimale + +- **Algo de prism**: + 1) Arbre à un seul sommet + 2) à chaques itération, ajouter la node la plus proche (en poids) + +- **Algo de kruskal** + 1) Foret de sommets isolé + 2) à chaques itérations, ajout la plus petite arête sans cycle + 3) Stop quand arbre couvrant + - Contrairement à Prism, trouve direct une foret couvrante minimal si non connexe + - structure **Union-Find** + - *Find(x)* trouve le numéro de la classe de x + - *Union(u,v)* fusionne deux classes de numéros u et v + - Création d'un liste next: + - full 0 + - poids minimum (x,y) placer x en y + - si x et y dans même classe alors union diff --git a/src/bac3/GraphOpti/OptiCombi.md b/src/bac3/GraphOpti/OptiCombi.md new file mode 100644 index 0000000..8420755 --- /dev/null +++ b/src/bac3/GraphOpti/OptiCombi.md @@ -0,0 +1,74 @@ +# Optimisation Combinatoire + +## Définition + +- **Problème d'optimisation combinatoire**: + - **ensemble fini** de solutions admissibles \\( \Omega \\), + - **fonction objectif** \\( f: \Omega \to \mathbb{R} \\) + - but: trouver \\( x^* \\) minimisant f + \\[ x^* = \arg\min\\{ f(x) \vert x \in \Omega\\} = \arg\min_{x\in\Omega} f(x)\\] + +## Problème d'affectation + +affecter n ressources à n activités à un cout total minimum (Assignment Problem) + +\\[ + AP\left\\{ \begin{align} + \min &\sum_{i=1}^n \sum_{j=1}^n c_{ij} x_{ij} \\\\ + &\sum_{i=1}^n x_{ij} = 1 \quad j = 1,..., n \\\\ + &\sum_{j=1}^n x_{ij} = 1 \quad i = 1,..., n \\\\ + & x_{ij} \in \\{0, 1\\} \quad i = 1, ..., n \quad j = 1, ..., n + \end{align} \right. +\\] + +### Variante + +affecter n ressources à n activité en minimsant le cout maximum de chaque ressource (min-max / +bottleneck) + +\\[ + \left\\{\begin{align} + \min & C_{max} \\\\ + &\sum_{i=1}^n x_{ij} = 1 \quad j = 1,..., n \\\\ + &\sum_{j=1}^n x_{ij} = 1 \quad i = 1,..., n \\\\ + &\sum_{j=1}^n c_{max} \quad i = 1, ..., n \\\\ + &x_{ij} \in {0, 1} \quad i = 1, ..., n \quad j = 1, ..., n \\\\ + &C_{max} \ge 0 + \end{align}\right. +\\] + +## Problème de transport + +Consommation <-> Production en minimisant le cout total de transport ( Transport Problem ) + +\\[ +\left\\{\begin{align} + \min &\sum_{i=1}^r \sum_{i=1}^s c_{ij}x_{ij} \\\\ + &\sum_{j=1}^s x_{ij} = q_i \quad i = 1, ..., r \\\\ + &\sum_{i=1}^r x_{ij} = d_j \quad j = 1, ..., s \\\\ + &x_{ij} \ge 0 \quad i=1,..., r \quad j=1,...,s +\end{align} +\right. +\\] +en supposant que la production est égale à la consomation +\\[ + \sum_{j = 1}^s d_j = \sum_{i=1}^r q_i +\\] + +### Problème du voyageur de commerce (TSP) + +faire un circuit passant une seule fois par n villes de cout minimum + +\\[ +\left\\{\begin{align} + \min &\sum_{i=1}^n \sum_{i=1}^n c_{ij}x_{ij} \\\\ + &\sum_{j=1}^n x_{ij} = q_i \quad i = 1, ..., n \\\\ + &\sum_{i=1}^n x_{ij} = d_j \quad j = 1, ..., n \\\\ + &\sum_{i \in Q}\sum_{j \in \overline{Q}} x_{ij} \ge 1 \quad Q\subset \\{1,...,n\\} \quad \overline{Q} = + \\{1, ..., n\\} \backslash Q \\\\ + &x_{ij} \in \\{0, 1\\} \quad i=1,..., n \quad j=1,...,n +\end{align} +\right. +\\] + +C'est en fait un problème d'affectation relaxé diff --git a/src/bac3/GraphOpti/Opti_Init.md b/src/bac3/GraphOpti/Opti_Init.md new file mode 100644 index 0000000..a6131c1 --- /dev/null +++ b/src/bac3/GraphOpti/Opti_Init.md @@ -0,0 +1 @@ +# init