Hamza KONTE
dauphine_l3miage_hamza
cmake .
make
./ds_finder < in.gr > out.sol
Deux conteneurs Docker sont disponibles via docker-compose :
Environnement complet avec gcc-13, valgrind, vim, et Java (pour le vérificateur).
Les répertoires src/, testset/ et real-instances/ sont montés en volumes.
docker compose up -d ds-dev
docker exec -it ds-dev bash
# Dans le conteneur :
cmake . && make
./ds_finder < tmp/testset/lite_1.grCompile un binaire statique Linux/amd64 (pour soumission sur optil.io) :
docker start ds-buildLe binaire statique est généré dans src/ via le target binary_solution.
Outils Python pour visualiser les graphes et les solutions. Installation des dépendances :
pip install -r visualizer/requirements.txtAffiche le graphe avec les sommets de la solution en rouge :
python3 visualizer/graph_visualizer.py <graphe.gr> [solution.sol]Convertit le graphe en fichier .gexf pour analyse dans Gephi :
python3 visualizer/gefx_converter.py <graphe.gr> <solution.sol>
# Génère graph.gexf dans le répertoire courantcd src && ./ds_finder < ../testset/lite_1.grLe script testall.sh exécute le solveur sur toutes les instances d'un répertoire, vérifie les solutions avec ds_verifier-1.0.jar, et produit un fichier results.csv :
./testall.sh <timeout> <programme> <répertoire_instances>
# Exemple :
./testall.sh 300s ./src/ds_finder real-instancesFormat de sortie (results.csv) :
instance ; valeur (solution valide)
instance ; TO (timeout)
instance ; KO (solution invalide)
instance ; ERR (erreur d'exécution)
java -jar ds_verifier-1.0.jar <graphe.gr> <solution.sol>.
├── src/
│ ├── core/
│ │ ├── main.c # Pipeline principal + gestion SIGTERM
│ │ ├── solvers/
│ │ │ ├── solver.c # Routage vers la bonne stratégie
│ │ │ ├── greedy.c # Glouton par degré
│ │ │ ├── periphery_greedy.c # Glouton spécialisé core-periphery
│ │ │ ├── optimizer.c # Recherche locale, échappement des optima locaux
│ │ │ ├── prune.c # Suppression de sommets redondants
│ │ │ ├── swap.c # Échange de sommets
│ │ │ └── sorter.c # Tri par degré
│ │ ├── struct/
│ │ │ ├── graph.c # Classification du graphe
│ │ │ └── covers.c # Compteur de couverture
│ │ └── utils/
│ │ ├── parser.c # Lecture format DIMACS
│ │ ├── time.c # Utilitaires de temps
│ │ └── logger.c # Logs de debug
│ ├── includes/ # Headers
│ ├── libs/libft/ # Librairie faite dans mon cursus à 42
│ └── CMakeLists.txt
├── visualizer/ # Outils de visualisation Python
├── testset/ # Instances de test légères
├── real-instances/ # 100 instances d'optimisation
├── docker-compose.yml
├── build.Dockerfile # Image de build statique
├── dev.Dockerfile # Image de développement
├── testall.sh # Script de benchmark
└── ds_verifier-1.0.jar # Vérificateur officiel