AIUnlimited
🌳

Fondations IA

🌱
AI Seeds

Partez de zéro

🌿
AI Sprouts

Construisez les fondations

🌳
AI Branches

Mettez en pratique

🏕️
AI Canopy

Approfondissez

🌲
AI Forest

Maîtrisez l'IA

🔨

Maîtrise IA

✏️
AI Sketch

Partez de zéro

🪨
AI Chisel

Construisez les fondations

⚒️
AI Craft

Mettez en pratique

💎
AI Polish

Approfondissez

🏆
AI Masterpiece

Maîtrisez l'IA

📘

Pratique IA

📖
Comprendre les modèles open-source

Fondamentaux et ressources pour les modèles open-source

🎯
Du problème à la tâche modèles

Transformer les problèmes métier en tâches modèles

⚡
Exécuter votre premier modèle

Voyez vos premiers résultats en 30 minutes

🔧
Fine-tuning et évaluation

Affinez les modèles et évaluez les performances

🚀
Systèmes d'application

Construisez des applications IA réelles

🎨
IA générative

Explorez les modèles AIGC open-source

🤖
Agents

Apprenez les frameworks Agent et outils MCP

📐
Fondamentaux supplémentaires

Bases LLM et évaluation

🎓

Claude Académie

🤖
Claude 101

Learn AI basics with Claude

💻
Claude Code 101

Code with Claude as your pair programmer

🤝
Introduction to Claude Cowork

Collaborate with Claude on complex projects

⚙️
Claude Platform 101

Build apps with the Claude API

Labo

7 expériences chargées
🧬Bac à sable neuronal🤖IA ou Humain ?🥋Dojo d'ingénierie de prompts🏁Course d'algorithmes🧠Quiz IA🏗️Canevas de conception système
🎯Entretien simuléEntrer dans le labo→
🚀

Développement de carrière

🚀
Rampe de lancement entretien

Commencez votre parcours

🌟
Maîtrise comportementale

Maîtrisez les compétences relationnelles

💻
Entretiens techniques

Réussissez l'épreuve de code

🤖
Entretiens IA et ML

Maîtrisez l'entretien ML

🏆
Offre et au-delà

Décrochez la meilleure offre

Commencer
AIUnlimited

Licence MIT

沪ICP备18025655号-11

Apprendre

  • Bases de l'IA
  • Pratique IA
  • Claude Académie
  • Labo
  • Développement de carrière

Communauté

  • À propos
  • FAQ

Soutien

  • Conditions d'utilisation
  • Politique de confidentialité
  • Contact
Programmes d'IA et d'ingénierie›✏️ AI Sketch›Leçons›Listes chaînées et piles
🔗
AI Sketch • Intermédiaire⏱️ 15 min de lecture

Listes chaînées et piles

Au-delà des tableaux - Données dynamiques

Les tableaux sont excellents quand on connaît la taille des données à l'avance. Mais que se passe-t-il quand les données arrivent de façon imprévisible - un flux de mesures de capteurs, une file de tâches à traiter par une IA, ou un historique de conversation qui grandit à chaque message ? Il faut des structures qui s'adaptent.

Voici les listes chaînées, les piles et les files d'attente - le trio dynamique.

Listes chaînées - Nœuds et pointeurs

Une liste chaînée stocke les éléments sous forme de chaîne de nœuds. Chaque nœud contient deux choses : la donnée et un pointeur vers le nœud suivant.

[data: "A" | next: →] → [data: "B" | next: →] → [data: "C" | next: null]

Contrairement aux tableaux, les nœuds ne sont pas contigus en mémoire. Ils peuvent être éparpillés - le pointeur indique simplement où trouver le suivant.

Une liste chaînée de trois nœuds reliés par des flèches, comparée à un tableau avec des blocs contigus
Les nœuds d'une liste chaînée sont reliés par des pointeurs, contrairement aux éléments d'un tableau qui sont côte à côte.

Listes chaînées vs Tableaux

| Opération | Tableau | Liste chaînée | |-----------|---------|---------------| | Accès par index | O(1) ⚡ | O(n) 🐢 | | Insertion au début | O(n) 🐢 | O(1) ⚡ | | Insertion au milieu | O(n) 🐢 | O(1)* ⚡ | | Suppression au milieu | O(n) 🐢 | O(1)* ⚡ | | Utilisation mémoire | Compacte | Surcoût (pointeurs) |

*Une fois la position trouvée - la trouver reste O(n).

Quand les listes chaînées gagnent

  • Insertions et suppressions fréquentes : si vous ajoutez et retirez constamment des éléments au milieu, les listes chaînées évitent le décalage coûteux des tableaux.
  • Taille inconnue : quand on ne sait pas combien d'éléments stocker, la liste chaînée grandit nœud par nœud sans redimensionnement.
  • Base d'autres structures : piles, files d'attente et structures plus complexes reposent souvent sur des listes chaînées.
🤔
Think about it:

La barre d'onglets de votre navigateur permet d'ouvrir, fermer et réorganiser librement. Un tableau ou une liste chaînée serait-il mieux adapté pour gérer les onglets ouverts ? Pensez à ce qui se passe quand on ferme un onglet au milieu.

Piles - Dernier entré, premier sorti (LIFO)

Leçon 4 sur 100% terminé
←Tri et recherche

Discussion

Se connecter pour rejoindre la discussion

Une pile (stack) fonctionne exactement comme une pile d'assiettes : on ajoute par le haut et on retire par le haut.

Push "A" → [A]
Push "B" → [A, B]
Push "C" → [A, B, C]
Pop      → [A, B]  (removed "C")
Pop      → [A]     (removed "B")

Deux opérations définissent une pile :

  • Push : ajouter un élément au sommet.
  • Pop : retirer l'élément du sommet.

Les deux sont en O(1) - instantanées, quelle que soit la taille.

Les piles dans le monde réel

  • Annuler/Rétablir : chaque éditeur maintient une pile d'actions. Ctrl+Z dépile la dernière action et l'inverse.
  • Bouton retour : l'historique de navigation est une pile. Chaque nouvelle page est empilée ; cliquer « retour » dépile.
  • Pile d'appels : quand le code appelle une fonction, celle-ci est empilée. Quand elle se termine, elle est dépilée.
🤯

Quand vous voyez une erreur « stack overflow », la pile d'appels a littéralement manqué d'espace - généralement parce qu'une fonction s'appelle elle-même sans jamais s'arrêter (récursion infinie). Le célèbre site de questions-réponses Stack Overflow tire son nom de cette erreur.

Les piles en IA

  • Évaluation d'expressions : les compilateurs IA utilisent des piles pour évaluer les expressions dans les graphes de calcul.
  • Algorithmes de retour sur trace : quand une IA explore des solutions possibles, elle utilise une pile pour se souvenir du chemin parcouru.
  • Parcours en profondeur (DFS) : traverser des arbres et graphes en profondeur utilise naturellement une pile.
🧠Vérification rapide

Vous implémentez une fonction « annuler » pour une application de dessin. Quelle structure modélise le mieux l'historique des actions ?

Files d'attente - Premier entré, premier sorti (FIFO)

Une file d'attente (queue) fonctionne comme une file au magasin : le premier arrivé est le premier servi.

Enqueue "A" → [A]
Enqueue "B" → [A, B]
Enqueue "C" → [A, B, C]
Dequeue     → [B, C]  (removed "A")
Dequeue     → [C]     (removed "B")

Les files d'attente en IA

  • Parcours en largeur (BFS) : explorer un graphe niveau par niveau utilise une file d'attente.
  • Pipelines de données d'entraînement : les données sont chargées dans des files pour que le GPU ait toujours le prochain lot prêt.
  • Gestion des requêtes : quand des milliers d'utilisateurs interrogent une API d'IA, les requêtes entrent dans une file et sont traitées dans l'ordre.
🧠Vérification rapide

Une API d'IA reçoit 10 000 requêtes par seconde. Quelle structure garantit le traitement dans l'ordre d'arrivée ?

💡

Il existe aussi une file de priorité (priority queue), où les éléments sont traités selon leur priorité plutôt que leur ordre d'arrivée. Les systèmes d'IA utilisent les files de priorité pour traiter les tâches urgentes en premier - par exemple, une voiture autonome peut prioriser la détection d'obstacles sur la planification d'itinéraire.

Utilisation en IA : traitement séquentiel et gestion mémoire

Les modèles de langage traitent le texte comme des séquences. En coulisses, des frameworks comme PyTorch et TensorFlow utilisent des structures de type liste chaînée pour construire des graphes de calcul. Quand on entraîne un réseau de neurones, la mémoire est constamment allouée et libérée ; les allocateurs utilisent souvent des listes chaînées de blocs mémoire libres.

🤔
Think about it:

Un chatbot doit mémoriser les 10 derniers messages d'une conversation mais supprimer les plus anciens. Utiliseriez-vous une pile, une file d'attente, ou autre chose ? Que se passe-t-il quand le 11e message arrive ?

🧠Vérification rapide

Quelle affirmation sur les listes chaînées est FAUSSE ?

Points clés à retenir

  • Les listes chaînées excellent avec des données dynamiques nécessitant des insertions et suppressions fréquentes, mais sacrifient l'accès direct par index.
  • Les piles (LIFO) alimentent les systèmes d'annulation, le retour sur trace et le parcours en profondeur.
  • Les files d'attente (FIFO) garantissent un ordre équitable pour la planification de tâches, le BFS et la gestion des requêtes.
  • Ces structures travaillent souvent en coulisses dans les frameworks d'IA, gérant la mémoire et le traitement séquentiel.