edit et corrections d'erreurs factuelles, de calculs et de mise en page
This commit is contained in:
@@ -184,6 +184,39 @@ A = np.matrix(A)
|
||||
|
||||
Ecrire la matrice d'adjacence du réseau social de l'introduction
|
||||
|
||||
### Liste d'adjacence
|
||||
|
||||
La matrice n'est pas la seule représentation possible. On peut aussi associer à chaque sommet la **liste de ses voisins** (ou de ses **successeurs** dans le cas d'un graphe orienté). En Python, un dictionnaire est parfait pour cela :
|
||||
|
||||
```python
|
||||
adjacence = {
|
||||
'A': ['B', 'C', 'E'],
|
||||
'B': ['A', 'C', 'D'],
|
||||
'C': ['A', 'B', 'D'],
|
||||
'D': ['B', 'C'],
|
||||
'E': ['A']
|
||||
}
|
||||
```
|
||||
|
||||
C'est cette représentation que nous utiliserons pour les parcours (voir [PARCOURS.md](PARCOURS.md)) et l'implémentation en POO (voir [POO.md](POO.md)).
|
||||
|
||||
**Quelle représentation choisir ?**
|
||||
|
||||
| | Matrice d'adjacence | Liste d'adjacence |
|
||||
|---|---|---|
|
||||
| Tester si deux sommets sont voisins | Immédiat (une case) | Parcours de la liste |
|
||||
| Mémoire | n × n cases, même si peu d'arêtes | Proportionnelle au nombre d'arêtes |
|
||||
| Usage naturel | Graphes denses (beaucoup d'arêtes) | Graphes creux (peu d'arêtes) |
|
||||
|
||||
### Exercice 3:
|
||||
|
||||
Le programme officiel demande de savoir **passer d'une représentation à l'autre**.
|
||||
|
||||
1. Écrire à la main la liste d'adjacence correspondant à la matrice de l'exemple du cours.
|
||||
2. Écrire une fonction `matrice_vers_liste(matrice, sommets)` qui prend la matrice (liste de listes) et la liste des noms de sommets, et renvoie le dictionnaire d'adjacence.
|
||||
3. Écrire la fonction inverse `liste_vers_matrice(adjacence, sommets)`.
|
||||
4. Vérifier vos deux fonctions : `matrice_vers_liste` suivie de `liste_vers_matrice` doit redonner la matrice de départ.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user