Avant tout, récupérez le fichier graphestp2.tar.gz et décompressez-le :
gunzip graphestp2.tar.gz tar xvf graphestp2.tar rm graphestp2.tar cd GraphesTp2; ls
Si vous êtes sous Linux, tapez :
cp makefile.linux makefile
Si vous êtes sous HP-UX, tapez :
cp makefile.hpux makefileCette archive contient des programmes C pour manipuler des graphes, la documentation de ces programmes se trouve ici :
![]() |
![]() |
L'image ci-dessus à gauche est extraite d'une photographie de chambre à bulles (source CERN). A droite, l'image a été seuillée pour détecter les régions les plus claires (image bs0). Le fichier bs0.list contient les coordonnées des barycentres de ces régions (la première ligne du fichier indique le nombre de points). Deux autres images sont à votre disposition : bs1 et bs2, dont les fichiers de coordonnées sont respectivement bs1.list et bs2.list. Notre but dans ce TP est de reconstituer au mieux les trajectoires des particules (ensembles de points plus ou moins alignés) en négligeant les points isolés.
Visualiser les graphes obtenus pour différentes valeurs de d. Peut-on trouver une valeur qui permette d'isoler les ``points de bruit'' des ``trajectoires de particules'', dans les trois images bs0, bs1, bs2 ?
(1) : G est un graphe antisymétrique si pour tout sommet x et pour tout sommet y de G, [ (x,y) arc de G ] implique [ (y,x) non arc de G ].
(2) : G est un graphe sans boucle (ou antiréflexif) si pour tout sommet x de G, (x,x) n'est pas un arc de G.
Proposez (sans l'implémenter) une méthode pour trouver la valeur exacte de dmin pour un ensemble quelconque de points. Complexité de la méthode ?
Commentez les résultats obtenus sur les trois images bs0, bs1, bs2, en particulier : quels sont les défauts de la méthode ? Illustrez ces défauts par des exemples précis.
On se propose de redéfinir la nature des poids associés aux arcs, de façon à favoriser la sélection des arcs qui non seulement sont courts, mais sont également alignés avec des arcs adjacents. De plus, cette définition devra être relativement simple à implémenter.
Proposez plusieurs idées, confrontez-les avec celles de vos voisins et soumettez-les au professeur responsable du TP. Retenez la meilleure et implémentez-la. Résultat ?
int ns; double x; fd = fopen(argv[1], "r"); // ouverture fichier dont le nom est dans argv[1] if (!fd) { fprintf(stderr, "cannot open file: %s\n", argv[1]); exit(0); } fscanf(fd, "%d", &ns); // lit un nombre de type "int" dans le fichier fscanf(fd, "%lf", &x); // lit un nombre de type "double" dans le fichier fclose(fd);