{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Activité — Les matrices d’adjacence\n\n"},{"metadata":{},"cell_type":"markdown","source":"## Introduction\nEn sociologie, on cherche souvent à représenter **les relations entre individus** : qui connaît qui, qui travaille avec qui, qui échange le plus, etc.\n\nUn **graphe** permet de modéliser ces interactions :\n- **nœuds (ou sommets)** → les individus\n- **arêtes (ou liens)** → les relations entre eux\n\nMais il existe une autre manière, plus mathématique, de représenter ces relations : la **matrice d’adjacence**.\n"},{"metadata":{},"cell_type":"markdown","source":"### Définition\nPour un graphe $G = (V, E)$ à *n* sommets, la **matrice d’adjacence** $A$ est une matrice carrée *n × n* où :\n\n$$A_{ij} = \\begin{cases}1 & \\text{si une arête relie le sommet } i \\text{ au sommet } j \\\\0 & \\text{sinon}\\end{cases}$$\n\n- Dans un **graphe non dirigé**, $A$ est **symétrique** : $A_{ij} = A_{ji}$\n- Dans un **graphe dirigé**, $A$ peut être **asymétrique** : $A_{ij} = 1$ ne signifie pas forcément $A_{ji} = 1$\n"},{"metadata":{},"cell_type":"markdown","source":"## Partie 1 — Représentation papier\n### 1. Graphe de départ\nVoici un petit réseau d’amitié entre cinq personnes :\n\n```\nAlice — Bob — Claire\n │ │\n David Emma\n```\n\n**Consigne :**\n1. Listez les sommets : `Alice, Bob, Claire, David, Emma`.\n2. Complétez la matrice d’adjacence correspondante :\n\n| | Alice | Bob | Claire | David | Emma |\n|:------|:------:|:---:|:------:|:------:|:----:|\n| Alice | 0 | | | | |\n| Bob | | 0 | | | |\n| Claire| | | 0 | | |\n| David | | | | 0 | |\n| Emma | | | | | 0 |\n\n(Remplissez avec des 1 là où il existe un lien.)\n"},{"metadata":{},"cell_type":"markdown","source":"### 2. Questions d’analyse\n1. Quel est le **degré** de chaque individu (combien de liens possède-t-il) ?\n2. Quel est l’individu le plus **central** dans ce réseau ?\n3. Si on ajoute un lien entre *David* et *Emma*, comment la matrice change-t-elle ?\n4. Que signifie le fait que la matrice soit **symétrique** ?\n5. En sociologie, que représenterait une matrice **non symétrique** ? (donnez un exemple concret)\n"},{"metadata":{},"cell_type":"markdown","source":"## Partie 2 — Exploration Python\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"import networkx as nx\nimport numpy as np\nimport matplotlib.pyplot as plt","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### 1. Créer et afficher la matrice"},{"metadata":{"trusted":false},"cell_type":"code","source":"G = nx.Graph()\nG.add_edges_from([\n (\"Alice\",\"Bob\"),\n (\"Bob\",\"Claire\"),\n (\"Alice\",\"David\"),\n (\"Bob\",\"Emma\")\n])\n\n# Obtenir la matrice d’adjacence\nA = nx.to_numpy_array(G, nodelist=G.nodes())\nprint(list(G.nodes()))\nprint(A.astype(int)) # version entière","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### 2. Visualiser le graphe"},{"metadata":{"trusted":false},"cell_type":"code","source":"plt.figure()\nnx.draw(G, with_labels=True, node_color=\"lightblue\", node_size=1000)\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### 3. Explorer la structure du réseau"},{"metadata":{"trusted":false},"cell_type":"code","source":"# Degré de chaque sommet\nprint(\"Degré de chaque individu :\", dict(G.degree()))\n\n# Densité du réseau (rapport entre liens existants et liens possibles)\nprint(\"Densité du réseau :\", round(nx.density(G), 2))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### 4. Liens indirects : le carré de la matrice"},{"metadata":{"trusted":false},"cell_type":"code","source":"A2 = np.linalg.matrix_power(A, 2)\nprint(\"A² =\\n\", A2.astype(int))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":" Interprétation :\n- Si `A²[i][j] > 0`, cela signifie qu’il existe **un ami commun** entre les nœuds *i* et *j*.\n- En sociologie : cela mesure les **liens indirects**, c’est-à-dire les “amis d’amis”.\n"},{"metadata":{},"cell_type":"markdown","source":"### Pourquoi ne met-on pas les éléments eux-mêmes au carré ?\n\nQuand on écrit **A²**, cela signifie **A × A**, c’est-à-dire qu’on multiplie la matrice par elle-même selon les règles de la multiplication matricielle.\n\nOn ne calcule **pas** $(A_{ij})^2$, car cela n’aurait aucun intérêt :\n- $0^2 = 0$ et $1^2 = 1$, donc la matrice ne changerait pas.\n- Le but du carré matriciel est de compter **les chemins de longueur 2** entre les nœuds.\n\nFormellement :\n$$A^2_{ij} = \\sum_k A_{ik} \\times A_{kj}$$\n\nCela signifie que $A^2_{ij}$ indique combien de façons il existe d’aller du nœud *i* au nœud *j* en passant par **exactement un autre nœud**.\n\n**Exemple :**\nSi $A =$ \n$$\n\\begin{bmatrix}\n0 & 1 & 0 \\\\\n1 & 0 & 1 \\\\\n0 & 1 & 0\n\\end{bmatrix}\n$$\nalors $A^2 =$ \n$$\n\\begin{bmatrix}\n1 & 0 & 1 \\\\\n0 & 2 & 0 \\\\\n1 & 0 & 1\n\\end{bmatrix}\n$$\n\n- $A^2_{13} = 1$ : il existe un chemin de longueur 2 entre 1 et 3 (en passant par 2).\n- $A^2_{22} = 2$ : le sommet 2 a deux chemins de longueur 2 qui reviennent à lui-même.\n\n**Résumé :**\n\n| Calcul | Signification | Utilité |\n|:--------|:--------------|:--------|\n| $(A_{ij})^2$ | Élève chaque case au carré | Inutile (0 et 1 inchangés) |\n| $A^2 = A × A$ | Produit matriciel | Donne les **liens indirects** (chemins de longueur 2) |"},{"metadata":{},"cell_type":"markdown","source":"## Synthèse\n| Concept mathématique | Interprétation sociologique |\n|:----------------------|:----------------------------|\n| 1 dans la matrice | lien direct entre deux individus |\n| 0 dans la matrice | absence de lien |\n| somme d’une ligne | degré (popularité / nombre de connexions) |\n| symétrie | réciprocité des relations |\n| $A^2$ | existence de relations indirectes |\n| densité | cohésion du groupe |\n"},{"metadata":{},"cell_type":"markdown","source":"## Questions de réflexion\n1. En quoi la matrice d’adjacence permet-elle de **quantifier** un réseau social ?\n2. Si une matrice est très dense, que peut-on en conclure sur le **type de groupe** étudié ?\n3. Comment pourriez-vous pondérer les liens dans cette matrice pour représenter l’**intensité** des relations ?"},{"metadata":{},"cell_type":"markdown","source":""}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":2}