Ensemble d’outils pour analyser, valider et visualiser des graphes et chaînes de Markov. Combine des algorithmes avec une visualisation intuitive pour aider développeurs et chercheurs à comprendre des structures complexes.
- 🔍 Validation du graphe (Partie 1) : vérifie les contraintes de Markov (sommes sortantes ≈ 1) à partir des fichiers texte.
- 🌐 Export Mermaid (Partie 1) : génère des diagrammes Mermaid du graphe brut.
- 🧮 Composantes fortement connexes (Partie 2) : algorithme de Tarjan + partition des classes.
- 📈 Diagramme de Hasse (Partie 2) : liens inter-classes avec option de suppression des redondances.
- 📊 Propriétés Markov (Partie 2) : classes transitoires/persistantes, états absorbants, irréductibilité.
- 🧠 Matrices & distributions (Partie 3) : puissances de matrices, convergence, distributions stationnaires par classe, périodicité (défi).
- 🌐 Web UI bonus (indépendante & facultative) : petite interface web pour saisir les arguments, générer un graphe (fichier, texte ou éditeur visuel) et lancer le binaire C.
| Composant | Détails | |
|---|---|---|
| ⚙️ | Architecture |
|
| 📄 | Documentation |
|
| 🧩 | Tests |
|
| 🌐 | Exports |
|
| 📊 | Analyse |
|
└── markov-graph-analyzer/
├── CMakeLists.txt
├── README.md
├── data/
├── out/
├── webui/
├── include
│ ├── graph.h
│ ├── io.h
│ ├── list.h
│ ├── mermaid.h
│ ├── scc.h
│ ├── tarjan.h
│ ├── utils.h
│ ├── hasse.h
│ ├── markov_props.h
│ ├── mermaid_hasse.h
│ ├── matrix.h
│ ├── period.h
│ └── verify.h
├── src
│ ├── graph.c
│ ├── io.c
│ ├── list.c
│ ├── main.c
│ ├── mermaid.c
│ ├── scc.c
│ ├── tarjan.c
│ ├── utils.c
│ ├── hasse.c
│ ├── markov_props.c
│ ├── mermaid_hasse.c
│ ├── matrix.c
│ └── verify.c
└── test
├── CMakeLists.txt
├── README.md
├── core/
├── io_verify/
├── mermaid_cli/
├── tarjan_core/
├── hasse_links/
├── class_analysis_and_export/
├── matrix_ops/
├── stationary_analysis/
└── period_analysis/
- Langage de programmation : C
- Outil de build : CMake
Construire markov-graph-analyzer depuis les sources et installer les dépendances :
git clone https://github.com/Tezay/markov-graph-analyzer
cd markov-graph-analyzer
Avec CMake:
cmake . && make
Exécuter le projet (CLI couvrant toutes les parties) :
Avec CMake:
./markov-graph-analyzer
Options principales :
--in FILE Graphe (format texte Partie 1)
--eps E Tolérance Markov et convergences (def 0.01)
--out-graph FILE Export Mermaid du graphe
--out-hasse FILE Export Mermaid du Hasse (classes)
--keep-transitive Ne pas retirer les liens transitifs du Hasse
--matrix-power K Affiche M^K
--converge-max N Iter max pour diff(M^n, M^{n-1}) < eps (def 30)
--dist-start V Sommet de départ pour une distribution
--dist-steps T Nombre d'étapes pour la distribution
--no-stationary Désactive le calcul des stationnaires par classe
--period Calcule la période de chaque classe (défi)
Guide de la partie web : webui/README.md
- Emplacement :
webui/(Flask + Tailwind CDN). - Modes de saisie : fichier
--in, texte brut, ou éditeur de graphe (génère un fichier temporaire en arrière-plan). - Lancement rapide :
puis ouvrez
python3 -m venv .venv . .venv/bin/activate # Sur Windows : .venv\Scripts\activate pip install flask FLASK_APP=webui/app.py flask run
http://127.0.0.1:5000. Le binaire C doit être construit et accessible (ex:./markov_graph_analyzerou./cmake-build-debug/markov_graph_analyzer).
Note : Une partie de l'UI (Tailwind) et du Javascript de l'inteface web a été réalisée avec l'assistance d'IAs génératives, n'étant pas le cœur du projet (optionnel).
- Guide des tests : test/README.md
