@QuentinC : Si $M$ est la matrice d'adjacence du graphe, $M^n$ donne les nombres de chemins en exactement $n$ étapes. Si on veut uniquement savoir s'il existe ou non un chemin de longueur au plus $n$ d'un nœud vers un autre, il ne faut plus travailler dans $\mathbb{N}$ mais dans le demi-anneau à deux éléments ⊥ et ⊤, avec comme addition le "ou" et comme multiplication le "et".
(edit : Il faut aussi prendre I+M à la place de M (sinon on ne pourrait même pas aller d'un nœud à lui-même en au plus une étape). Ça revient à prendre $(I+M)^n$ dans $\mathbb{N}$, mais en confondant tous les nombres supérieurs ou égaux à 1 (ou se fiche de savoir combien de chemins, on veut juste savoir s'il y en a un).)
Mais je pense que ce qu'on demande à Timm est juste un parcours du graphe.
@ Timm : Tu ne précises pas assez ce que tu veux faire, je pense. Un chemin entre quoi et quoi ? Entre tout couple de nœuds ou juste d'un nœud à un autre ? Il y a des contraintes de complexité ? Ça veut dire quoi « un programme pour representer un graphe numériquement par sa martice d'adjacence » ? Le graphe t'es donné par sa matrice d'adjacence ou bien tu dois calculer la matrice d'adjacence d'un graphe qui t'es donné sous un autre format ? C'est pas assez clair pour que je puisse t'aider.