Directed Feedback Vertex Set (Projet Programmation L3 MIAGE 2022-2023)

En quelques mots:

Le but de ce projet est de participer à la track heuristic du challenge PACE pour le problème de graphes Directed Feedback Vertex Set en proposant un algorithme pour le résoudre.

Dates

Directed Feedback Vertex Set

Etant donné un graphe orienté, une question basique consiste à déterminer quels sommets supprimer du graphe afin qu’il ne reste plus aucun cycle orienté dans le graphe. Voir Wikipedia.

Dans cet exemple, le graphe de gauche contient 2 cycles. Supprimer le sommet rouge supprimer tous les cycles du graphe.

On se propose de résoudre ce problème dans ce projet, dans le cadre d’un challenge international.

Ce problème est dit difficile à résoudre optimalement (NP-complet). Nous verrons donc des heuristiques, donnant une solution sans garantie d’optimalité. Une manière (bête) pour faire cela de manière non optimale consiste à supprimer tous les sommets du graphe : il n’y a évidement plus aucun cycle dans le graphe. Evidement, cette heuristique ne permet pas de trouver le nombre optimum (minimum) de sommets à supprimer pour résoudre le problème.

Le but de ce projet est de proposer et implémenter un (ou plusieurs) algorithme heuristique non trivial proposant une solution réalisable pour ce problème. C’est à dire qu’il n’est pas demandé d’avoir une solution forcement optimale, mais une solution valide : votre algorithme doit forcement produire un graphe sans cycle une fois tous les sommets supprimés. On souhaite toutefois avoir la solution la plus petite possible (ce qui donnera un classement).

Plus de détails

Ce qui est attendu

Obligatoirement

Une exécution typique de votre programme pourra être:

cat file1.gr | python3 programme.py > solution

ou encore

python3 programme.py < file1.gr > solution

Pour tester le principe du signal, par exemple (envoie un signal SIGTERM après 10 secondes):

timeout 10s python3 programme.py < file1.gr > solution

Optionnellement

Rendu

L’utilisation du GIT de github classroom est imposée. S’inscrire ici. Tous vos dépôts seront automatiquement clonés à moment de la deadline et la note se basera sur cet état. Il ne servira donc à rien de continuer à modifier votre code après la deadline.

Le projet est à faire seul.

Utilisez le canal Teams pour toute question relative au projet.

Il est attendu sur le Git :

Vous avez le droit de discuter entre vous et de lire des articles, mais vous devez préciser ce qui n’est pas de vous. Un détecteur de plagiat de code sera utilisé.

La note finale prendra en compte votre classement dans le challenge.

Je crois en vous, bon courage.