Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
tp-union-find-etu
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
lifapc
tp-union-find-etu
Commits
a672cd99
Commit
a672cd99
authored
6 years ago
by
NIVOLIERS VINCENT
Browse files
Options
Downloads
Patches
Plain Diff
fix math gitlab
parent
c185b516
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
readme.md
+12
-12
12 additions, 12 deletions
readme.md
with
12 additions
and
12 deletions
readme.md
+
12
−
12
View file @
a672cd99
...
@@ -51,16 +51,16 @@ chemin pour aller de l'une à l'autre dans le labyrinthe. Initialement, toutes
...
@@ -51,16 +51,16 @@ chemin pour aller de l'une à l'autre dans le labyrinthe. Initialement, toutes
les cases sont entourées de murs, et donc chaque case est dans son propre
les cases sont entourées de murs, et donc chaque case est dans son propre
ensemble qui ne contient qu'elle.
ensemble qui ne contient qu'elle.
Abattre le mur entre les cases $
a
$ et $
b
$ permet de créer un chemin entre ces
Abattre le mur entre les cases $
`a`
$ et $
`b`
$ permet de créer un chemin entre ces
deux cases. Ainsi, pour s'assurer de ne jamais créer plus d'un chemin pour
deux cases. Ainsi, pour s'assurer de ne jamais créer plus d'un chemin pour
aller d'une case à une autre, il suffit de ne jamais abattre de mur séparant des
aller d'une case à une autre, il suffit de ne jamais abattre de mur séparant des
cases qui sont déjà reliées par un chemin. On utilisera donc la
*recherche*
pour
cases qui sont déjà reliées par un chemin. On utilisera donc la
*recherche*
pour
déterminer si deux cases sont reliées par un chemin ou non.
déterminer si deux cases sont reliées par un chemin ou non.
En créant un chemin entre la case $
a
$ et la case $
b
$, on crée en réalité des
En créant un chemin entre la case $
`a`
$ et la case $
`b`
$, on crée en réalité des
chemins entre toutes les cases qu'on pouvait atteindre depuis $
a
$ et toutes les
chemins entre toutes les cases qu'on pouvait atteindre depuis $
`a`
$ et toutes les
cases qu'on pouvait atteindre depuis $
b
$. On réalise donc l'
*union*
de
cases qu'on pouvait atteindre depuis $
`b`
$. On réalise donc l'
*union*
de
l'ensemble contenant $
a
$ et de l'ensemble contenant $
b
$.
l'ensemble contenant $
`a`
$ et de l'ensemble contenant $
`b`
$.
## Implémentation
## Implémentation
...
@@ -83,12 +83,12 @@ arbre, qui ne contient que lui.
...
@@ -83,12 +83,12 @@ arbre, qui ne contient que lui.


Dans l'exemple ci dessus, l'Union-Find contient 4 ensembles, $
0
$ est l'enfant de
Dans l'exemple ci dessus, l'Union-Find contient 4 ensembles, $
`0`
$ est l'enfant de
$
1
$, $
1
$ est la racine de son arbre.
$
`1`
$, $
`1`
$ est la racine de son arbre.
Du point de vue de l'implémentation, le plus simple est d'identifier les $
n
$
Du point de vue de l'implémentation, le plus simple est d'identifier les $
`n`
$
objets par les entiers de $[0,n-1]$. Un tableau
`tab`
d'entiers de taille $
n
$
objets par les entiers de $
`
[0,n-1]
`
$. Un tableau
`tab`
d'entiers de taille $
`n`
$
permet de stocker dans la case $
i
$ le numéro du parent de la case $
i
$. Dans
permet de stocker dans la case $
`i`
$ le numéro du parent de la case $
`i`
$. Dans
l'exemple précédent, nous aurions donc le tableau
l'exemple précédent, nous aurions donc le tableau
```
```
...
@@ -151,8 +151,8 @@ possible d'abattre le moindre mur, et le labyrinthe respecte les contraintes.
...
@@ -151,8 +151,8 @@ possible d'abattre le moindre mur, et le labyrinthe respecte les contraintes.
#### Utilisation de l'Union-Find
#### Utilisation de l'Union-Find
Pour utiliser votre Union-Find, vous pouvez numéroter implicitement toutes les
Pour utiliser votre Union-Find, vous pouvez numéroter implicitement toutes les
cases de la grille en disant que la case à la ligne $
l
$ et la colonne $
c
$ est
cases de la grille en disant que la case à la ligne $
`l`
$ et la colonne $
`c`
$ est
associée au numéro $l
\t
imes
\m
athrm{largeur} + c$.
associée au numéro $
`
l \times \mathrm{largeur} + c
`
$.
À chaque mur traité, récupérez les racines des arbres Union-Find des cases de
À chaque mur traité, récupérez les racines des arbres Union-Find des cases de
part et d'autre. Si les racines sont les mêmes, les cases sont déjà reliées par
part et d'autre. Si les racines sont les mêmes, les cases sont déjà reliées par
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment