This commit is contained in:
2025-09-16 21:31:19 +02:00
parent ecb8aa569a
commit c52d188f3a

45
src/README.md Normal file
View File

@@ -0,0 +1,45 @@
# Compte Rendu - Mini Projet 1 - Algorithme PageRank
## Utilisation
Pour lancer le programme :
javac Node.java
javac Simulation.java
java Simulation <int : nbr de sites>
Le programme renvoi directement le résultat du PageRank sous forme d'un tableau trié du haut vers le bas en fonction des scores.
La pertinence est également affiché pour que l'on puisse constater la corrélation (plus ou moins forte) entre pertinence et score.
Exemple d'un tableau :
java Simulation 4
les sites sont classés dans l'ordre du plus haut score au plus bas:
1) site1 - score:3 - pertinence:98.0
2) site4 - score:2 - pertinence:96.0
3) site2 - score:0 - pertinence:76.0
4) site3 - score:0 - pertinence:80.0
fin programme
## Fonctionnement
La simulation repose sur une distribution aléatoire des pertinences au début du programme.
Lorsque la simulation commence, et à chaque instant t (tours de boucle), deux sites sont choisis aléatoirement avec certaines
conditions pour amélorier les performances ainsi que le rendu :
le premier site, x, ne peut pas avoir formé un lien avec tous les autres
sites au moment où il est choisi et il ne peut pas être le même site que le x de l'instant t précédent; si une de ces conditions n'est
pas respectés, le programme choisi un autre x.
Le site y ne peut pas être le même que x et ne peut pas avoir une association dirigée provenant de x. L'algorithme est donc simple,
puisque si l'on associe x à y, x ne considérera plus y lors de prochaines explorations de graphe.
Si toute les conditions sont respectés, les pertinences de chaque site auquel x s'est précedemment associé (s'il y en a) sont récupérées
et comparées une par une à celle du nouveau site y. Si cette dernière est supérieure ou égale pour chaque comparaison, x s'associe à y (lien dirigé de x vers y). Après tout cela, on passe au tour de boucle suivant.
Il y a deux conditions d'arrêt, choisies arbitrairement :
- la première est qu'il doit y avoir au moins un site lié à tous les autres sites du graphe et que le nombre d'arêtes créés sur l'ensemble
du graphe doit être de n*(n+1)/2 -n, où n désigne le nombre de sites. Dans ce cas, on arrête la simulation.
- la deuxième est que si au bout de 10000 tours de boucles (choisi arbitrairement) aucune nouvelle liaision a été créée, on arrête la
simulation.
A la fin du programme, les sites sont triés en fonction de leur score, et le résultat est affiché à la console.