cette semaine j'ai eu ce devoir à faire: compter le grade des nœuds dans un graphe non orienté et tester s'il y a un chemin euler dedans. la fonction devrait fonctionner comme suit:Compteur de niveau Prolog et eulerpath
gradliste([[a,b],[b,c],[b,g],[c,d],[d,e],[e,f],[f,g],[g,h],[c,f]],X).
X = [[a, 1], [b, 3], [c, 3], [g, 3], [d, 2], [e, 2], [f, 3], [h, 1]]
testEulerweg([[a,b],[b,c],[c,d],[d,e],[a,e],[b,d],[b,e],[a,d]]).
true.
ma première idée de la fonction gradliste
est de « fusion » du graphique et de générer une liste comme ceci: [a,b,b,c,b,g,c,d,d,e,e,f,f,g,g,h,c,f]
alors je compte le nombre de chaque nœud. Malheureusement, j'ai collé au merge
.
et pour la deuxième fonction testEulerweg
je pense que je devrais tout d'abord écrire une fonction allconnected
de travail comme suit:
allconnected([[a,b],[b,c],[c,d]]).
true.
allconnected([[a,b],[b,c],[e,f]]).
False.
alors je peux vérifier s'il y a aucun ou 2 noeuds avec le numéro de qualité impair en utilisant la fonction gradliste
.
Quelqu'un peut-il m'aider sur mon idée? Je suis aussi ouvert à de nouvelles idées :)
merci à l'avance
bearzk
Je ne sais pas encore comment tester si le chemin est le chemin eulérien, voulez-vous donner l'esprit moi plus de conseils? – bearzk