La modélisation adoptée ici est très proche de la formalisation mathématique du problème. Pour des raisons de simplicité de programmation (modularité, encapsulation, gestion automatique de la mémoire...), j'ai opté pour le langage Java (http://java.sun.com). Je vais donc exposer les structures de données non pas de façon générale mais en tenant compte du langage support.
Une instance du problème se modélise ici à l'aide de 3 classes :
Les 3 sous sections ci-dessous passent en revue ces classes et leur fonctionnement.