1 / 15

PrOJET C : LAGER IG3 2009-2010

PrOJET C : LAGER IG3 2009-2010. DREYER Quentin JAMBET Pierre NGYUEN Michael. LAGER : LAGER Ain’t a Graph Explorer for Rookies. Sommaire Présentation générale Structures utilisées Algorithmes principaux Conclusion Remerciements. LAGER : LAGER Ain’t a Graph Explorer for Rookies.

lottie
Download Presentation

PrOJET C : LAGER IG3 2009-2010

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PrOJET C : LAGERIG3 2009-2010 DREYER QuentinJAMBET PierreNGYUEN Michael 24/05/2010

  2. LAGER : LAGER Ain’t a Graph Explorer for Rookies Sommaire Présentation générale Structures utilisées Algorithmes principaux Conclusion Remerciements 24/05/2010

  3. LAGER : LAGER Ain’t a Graph Explorer for Rookies • Présentation générale • Langage : C++ • Nomination : Anglais (Commentaires : Français) • Outils annexes : • SubVersion (SVN) • Valgrind • Google Test • Respect de la charte de programmation / normalisation ANSI • Application semi-portable • Makefile complet • Acronyme récursif ! 24/05/2010

  4. LAGER : LAGER Ain’t a Graph Explorer for Rookies Structures utilisées Utilisation de 5 classes : • Classe maîtresse : Graph • Double représentation : Matrices d’adjacences / Liste d’adjacence => Comparaison Vitesse / Espace mémoire • 1 classe par représentation : AdjMat / AdjList => Clarté • Classe auxiliaire : Summit • Classe de génération : Generator 24/05/2010

  5. LAGER : LAGER Ain’t a Graph Explorer for Rookies Algorithmes principaux Fonctionnement de LAGER : • Récupération de données Facebook OU • Génération aléatoire • Chargement du fichier • Analyse du fichier • (Optionnel) Affichage des résultats 24/05/2010

  6. LAGER : LAGER Ain’t a Graph Explorer for Rookies Algorithmes principaux void Graph::initGraph(string&fileNameIn) Ouverture du fichier (fopen) Parsing des données (fscanf) => Personnes / Relations / Questions Fermeture du fichier (fclose) 24/05/2010

  7. LAGER : LAGER Ain’t a Graph Explorer for Rookies Algorithmes principaux vector <s_summit> AdjMat::initSCC() Premier parcours en profondeur (DFS) Tri des sommets dans l’ordre décroissant de leur temps de fin respectifs Deuxième parcours en profondeur du graphe dual (DFSD) Tri des sommets dans l’ordre croissant de leur temps de début respectifs Renvoie du vector 24/05/2010

  8. LAGER : LAGER Ain’t a Graph Explorer for Rookies Algorithmes principaux voidAdjMat::DFS () Initialisation de la variable int temps à 0 Appel sur DFSHidden(i, temps) pour chaque sommet non déjà parcouru 24/05/2010

  9. LAGER : LAGER Ain’t a Graph Explorer for Rookies Algorithmes principaux voidAdjMat::DFSHidden(inti, int& t) : Algorithme récursif Changement du statut du sommet (Atteint) Augmentation de 1 du temps Enregistrement du temps de début Appel sur DFSHidden(j, t) si j représente un successeur non atteint Augmentation de 1 du temps Enregistrement du temps de fin 24/05/2010

  10. LAGER : LAGER Ain’t a Graph Explorer for Rookies Algorithmes principaux void Graph::searchSCC() Appel a initSCC() // Remplit le tableau t des temps d et f Initialisation : d = t[0].d, f = t[0].f; Pour tous les sommets faire • Si d est inférieur à t[i].d ET f est supérieur à t[i].f alors 0 et i sont dans la même CFC • Sinon d = t[i].b, f = t[i].f, on débute une nouvelle CFC 24/05/2010

  11. LAGER : LAGER Ain’t a Graph Explorer for Rookies Algorithmes principaux vector <s_summit> AdjMat::initDist(intx) : Algorithme de Dijkstra Initialisation des temps d’accès à INT_MAX (Equivalent ∞) Initialisation du tableau des parents à -1 Initialisation du temps d’accès de x à 0 Tant qu’il reste des sommets faire • Extraire le sommet ayant le plus petit temps d’accès • Mettre à jour les temps d’accès de ses successeurs : d(j) = min( d(j), d(i) + j.freq); // i sommet actuel, j un successeur • Mettre à jour le tableau des parents : π(j) = i; Renvoie du vector 24/05/2010

  12. LAGER : LAGER Ain’t a Graph Explorer for Rookies Algorithmes principaux voidGraph::searchDistances() Pour chaque point de départ distinct x faire • Appel à initDist(x) // Remplit les tableaux d et π - Pour chaque question x -> y faire • t_min = d(y) dans le tableau de x // Affichage du chemin : - Afficher y • Tant que π(y) != -1 faire • y = π(y) • Afficher y 24/05/2010

  13. LAGER : LAGER Ain’t a Graph Explorer for Rookies Algorithmes principaux boolAdjMat::isImportant(intx) : Algorithme de NGUYEN Traitement des cas simples : Source / Puits / Point isolé => Non important Traitement des fils de x : • Si un des fils de x de la même CFC n’a pas d’autres père de la même CFC => X est important Traitement des pères de x : • Si un des pères de x de la même CFC n’a pas d’autres fils dans la même CFC => X est important 24/05/2010

  14. LAGER : LAGER Ain’t a Graph Explorer for Rookies Conclusion Projet bénéfique • Travail en groupe • Application de notions vu en Théorie des graphes • Découverte des Unit Test, de la STL, … Utilisation d’une librairie externe De nombreux problèmes rencontrés, mais surmontés ! 24/05/2010

  15. LAGER : LAGER Ain’t a Graph Explorer for Rookies Remerciements Nos professeurs, sans qui ce projet n’aurait pu exister Google, pour toutes ses applications qui nous ont été fortes utiles : (Google SearchEngine, Google Code, Google Test, Google Docs, …) - Mathieu Triay ! Merci de votre attention 24/05/2010

More Related