Les Graphes

Pour toute demande d'aide sur des exemples non finalisés, c'est ici.
Les exemples aboutis et intéressants seront ajoutés aux sous-forums qui suivent.

Règles du forum
Pour toute demande d'aide pour la conception (ou la confirmation d'un code) d'une figure Asymptote, c'est ici.

J'invite ceux qui ont régulièrement des questions à poser à aller dans leur panneau de l'utilisateur pour indiquer dans la signature de leurs messages :

  1. Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
  2. Version d'Asymptote et éditeur utilisé pour les figures Asymptote
  3. Distribution LaTeX et éditeur utilisé pour les tex.


On va gagner du temps dans les réponses !
Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Les Graphes

Message non lu par GM » dim. 18 avr. 2010, 11:34

projetmbc a écrit :Cela a l'air très prometteur...

J'étais justement en train de créer des styles prédéfinis et des facilités pour que chacun puisse en créer soi-même.

Un exemple :
gm_graphes_teststyle.pdf
(37.77 Kio) Téléchargé 436 fois



projetmbc a écrit :La présentation du document me plait beaucoup. Est-elle disponible ?


Elle le sera si tu la veux encore... lorsque le document sera finalisé.

Mais si tu es impatient... je te rappelle que l'on a en déjà parlé indirectement ensemble sur mathematex :
http://forum.mathematex.net/latex-f6/environnement-cases-t10079-20.html#p99173 ;-)

La présentation n'est qu'une légère adaptation du code tikz de pg dont il a donné le source. ;-)

Bon ok... faire une doc asymptote avec une présentation tikz... cela peut faire sourire. :mrgreen:
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

OG
V.I.P.
V.I.P.
Messages : 142
Enregistré le : dim. 7 mars 2010, 22:27

Re: Les Graphes

Message non lu par OG » dim. 18 avr. 2010, 17:54

Il est en forme notre Gaëtan, 25 messages sur le forum Asymptote, 35 ici,
un paquet sur les graphes !

O.G.

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Les Graphes

Message non lu par GM » dim. 18 avr. 2010, 19:52

GM a écrit :
projetmbc a écrit :La présentation du document me plait beaucoup. Est-elle disponible ?


Elle le sera si tu la veux encore... lorsque le document sera finalisé.

Mais si tu es impatient... je te rappelle que l'on a en déjà parlé indirectement ensemble sur mathematex :
http://forum.mathematex.net/latex-f6/environnement-cases-t10079-20.html#p99173 ;-)

... et pg vient à l'instant de mettre une nouvelle version de sa classe... qui vaut vraiment le coup d'être regardée de très très près, quand on sait à quel point "il touche" comme on dit.

OG a écrit :Il est en forme notre Gaëtan, 25 messages sur le forum Asymptote, 35 ici,
un paquet sur les graphes !

Oui :mrgreen: mais il va falloir que je me fasse violence et que je délaisse asymptote quelques jours pour m'occuper de mon travail scolaire en retard. :|
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Les Graphes

Message non lu par GM » jeu. 22 avr. 2010, 17:10

Je relance le forum avec un petit message... pour dire que le projet d'extension pour les graphes n'a pas avancé du tout : je suis complètement débordé en ce moment.

Mais, si cela peut dépanner quelqu'un, je mets néanmoins une version alpha (gm_graphes.asy, gm_graphes_styles.asy) de ce que j'ai fait...
... mais il faut savoir que cela va encore beaucoup bouger ... au fur et à mesure des difficultés techniques que je rencontre, pour ajouter des choses.

Un exemple où
  • on décide de la place des points ;
  • la liste des noms de sommets étant insuffisante : elle est automatiquement complétée avec des noms de la forme S_i (attention : les indices commencent à 0 !) ;
  • la matrice d'adjacence du graphe n'est pas de taille suffisante : elle est complétée avec des 0 pour atteindre la taille 7x7 fixée par le nombre de sommets définis ;
  • un style de graphe prédéfini est appliqué ;
  • une arête est ensuite modifiée avec la commande modif_a.

Figure asymptote 32053c9466f49dfd21e6d352cd7605ff
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import gm_graphes;
  2. import gm_graphes_styles;
  3. size(8cm);
  4. pair sA=(0,0), sB=(4,3), sC=(5,-2), sD=(-1,3), sE=(-2,1), sF=(1,-3), sG=(-2,-2);
  5. pair[] sommets={sA,sB,sC,sD,sE,sF,sG};
  6. string[] noms={"$A$","$B$","$C$","$D$","$E$"};
  7. real[][] matadj={{1,1,0,0,0,1},
  8. {0,0,0,1,0,0},
  9. {1,3,0,0,0,1},
  10. {0,2,0,0,1,0}};
  11. GRAPHE gr=GRAPHE(sommets,
  12. noms,
  13. matadj,
  14. style_boule_1
  15. );
  16. modif_a(gr,0,1,a_ang=0,a_pen=1.5bp+.5blue,a_penbelow=2.5bp+paleblue);
  17. draw(gr,aff_a_lab=true);


Un autre exemple où
  • on ne donne pas la place des sommets ;
  • on choisit la configuration cercle ;
  • on n'affiche pas les poids ;
  • on modifie une arête (avec modif_a) et un sommet (avec modif_s).

Figure asymptote 9ebb4d3feff0d847d15d64131dd39a1b
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import gm_graphes;
  2. import gm_graphes_styles;
  3. size(8cm);
  4. string[] noms={"$A$","$B$","$C$","$D$","$E$"};
  5. real[][] matadj={{1,1,0,0,0,1},
  6. {0,0,0,1,0,0},
  7. {1,3,0,0,0,1},
  8. {0,2,0,0,1,0}};
  9. GRAPHE gr=GRAPHE(noms,
  10. matadj,
  11. configuration="cercle",
  12. style_boule_1
  13. );
  14. modif_s(gr,2,s_penlab=blue,s_penenv=2bp+red,s_fill=FillDraw(yellow));
  15. modif_a(gr,2,5,a_ang=0,a_labpos=.65,
  16. a_pen=1.5bp+.5blue,a_penbelow=2.5bp+paleblue);
  17. draw(gr,aff_a_lab=false);


Un autre exemple où
  • on ne donne pas la place des sommets ;
  • on choisit la configuration cerclecentre qui est donc une configuration en cercle avec un sommet placé au centre du cercle : celui ayant le plus de liaisons avec les autres sommets. (cette configuration ne sera pas adaptée pour un nombre impair de sommets.
  • on modifie une arête (avec modif_a) et un sommet (avec modif_s).[/b]

Figure asymptote 2fcd878cfc5144c8cdd8e109dbd930d6
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import gm_graphes;
  2. import gm_graphes_styles;
  3. size(8cm);
  4. string[] noms={"$A$","$B$","$C$","$D$","$E$"};
  5. real[][] matadj={{1,1,0,0,0,1},
  6. {0,0,0,1,0,0},
  7. {1,3,0,0,0,1},
  8. {0,2,0,0,1,0}};
  9. GRAPHE gr=GRAPHE(noms,
  10. matadj,
  11. configuration="cerclecentre",
  12. style_boule_2
  13. );
  14. modif_s(gr,2,s_penlab=fontsize(18pt)+red,s_env=roundbox,s_penenv=2bp+.5blue,s_fill=RadialShadeDraw(paleblue,white));
  15. modif_a(gr,2,5,a_ang=0,a_labpos=.65,
  16. a_pen=1bp+.5blue,a_penbelow=3bp+paleblue,a_lab="yes !", a_penlab=fontsize(16pt)+.5green);
  17. draw(gr,aff_a_lab=true);
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

projetmbc
Messages : 34
Enregistré le : mer. 17 mars 2010, 08:31

Re: Les Graphes

Message non lu par projetmbc » ven. 23 avr. 2010, 13:02

Bonjour,
très joli tout ceci mais des styles plus sobres sont-ils prévus, pour épargner nos cartouches d'imprimante ?

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Les Graphes

Message non lu par GM » ven. 23 avr. 2010, 13:11

projetmbc a écrit :Bonjour,
très joli tout ceci mais des styles plus sobres sont-ils prévus, pour épargner nos cartouches d'imprimante ?

Le principe... est que chacun créé son fichier de styles.
Sans précision de style, le style par défaut est appliqué, ce qui donne avec l'exemple précédent ceci :

Figure asymptote 807811f6beaf8d4c393abcff07f71844
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import gm_graphes;
  2. import gm_graphes_styles;
  3. size(8cm);
  4. string[] noms={"$A$","$B$","$C$","$D$","$E$"};
  5. real[][] matadj={{1,1,0,0,0,1},
  6. {0,0,0,1,0,0},
  7. {1,3,0,0,0,1},
  8. {0,2,0,0,1,0}};
  9. GRAPHE gr=GRAPHE(noms,
  10. matadj,
  11. configuration="cerclecentre"
  12. );
  13. modif_a(gr,2,5,a_ang=0,a_labpos=.7);
  14. draw(gr,aff_a_lab=true);
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

projetmbc
Messages : 34
Enregistré le : mer. 17 mars 2010, 08:31

Re: Les Graphes

Message non lu par projetmbc » ven. 23 avr. 2010, 13:29

GM a écrit :
projetmbc a écrit :Bonjour,
très joli tout ceci mais des styles plus sobres sont-ils prévus, pour épargner nos cartouches d'imprimante ?

Le principe... est que chacun créé son fichier de styles.
Sans précision de style, le style par défaut est appliqué, ce qui donne avec l'exemple précédent ceci :

C'est nickel.

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Les Graphes

Message non lu par GM » sam. 24 avr. 2010, 09:51

Je crois que je vais passer un temps certain, cet été, sur cette extension... car elle est particulièrement motivante tellement il y a de possibilités d'ajout.

Notamment, la recherche et la coloration d'un chemin le plus court...
... voire carrément ce genre de chose : prévoir une routine qui génére toutes les figures utiles pour donner une telle explication :
recherche et coloration d'un chemin le plus court.

Pour l'exemple qui suit, au niveau du style :
  • j'adopte un style (style_boule_2) dont je modifie préalablement 3 des caractéristiques (sur 10 actuellement) avant de "générer" l'objet GRAPHE ;
  • je modifie ensuite l'objet en question en modifiant la courbure de 4 des arêtes avant de tracer le graphe.

Quand j'aurai, un peu de temps, une fonction colorerlepluscourtchemin(graphe gr, real ip1, real ip2, stylegraphe grstyle) permettra de mettre en évidence le chemin le plus court pour aller d'un sommet d'indice ip1 à un sommet d'indice ip2, dans un style de graphe donné.

Figure asymptote 250e906172a35dd83b47e04cc14a4cbb
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import gm_graphes;
  2. import gm_graphes_styles;
  3.  
  4. size(300);
  5. pair sA=(1,4),
  6. sB=(0,3), sC=(1,3), sD=(2,3), sE=(3,2.5),
  7. sF=(0,2), sG=(1,2), sH=(2,2),
  8. sI=(1,1), sJ=(2,0);
  9. pair[] sommets={sA,sB,sC,sD,sE,sF,sG,sH,sI,sJ};
  10. string[] noms={"A","B","C","D","E","F","G","H","I","J"};
  11. real[][] matadj={{ 0, 85,217, 0,173, 0, 0, 0, 0, 0}, //A
  12. { 85, 0, 0, 0, 0, 80, 0, 0, 0, 0}, //B
  13. {217, 0, 0, 0, 0, 0,186,103, 0, 0}, //C
  14. { 0, 0, 0, 0, 0, 0, 0,183, 0, 0}, //D
  15. {173, 0, 0, 0, 0, 0, 0, 0, 0,502}, //E
  16. { 0, 80, 0, 0, 0, 0, 0, 0,250, 0}, //F
  17. { 0, 0,186, 0, 0, 0, 0, 0, 0, 0}, //G
  18. { 0, 0,103,183, 0, 0, 0, 0, 0,167}, //H
  19. { 0, 0, 0, 0, 0,250, 0, 0, 0, 84}, //I
  20. { 0, 0, 0, 0,502, 0, 0,167, 84, 0}};//J
  21.  
  22. // On va adopter le style "style_boule_2"
  23. // mais on en modifie préalablement 2 des 10 paramètres.
  24. style_boule_2.a_penlab=fontsize(8pt);
  25. style_boule_2.a_labpos=.5;
  26. style_boule_2.a_penbelow=2bp+blue;
  27.  
  28. GRAPHE gr=GRAPHE(sommets,
  29. noms,
  30. matadj,
  31. style_boule_2
  32. );
  33.  
  34. // On modifie la courbure de 4 flèches.
  35. modif_a(gr,0,4,a_ang=10);
  36. modif_a(gr,4,0,a_ang=-40);
  37. modif_a(gr,4,9,a_ang=10);
  38. modif_a(gr,9,4,a_ang=-40);
  39.  
  40. draw(gr,aff_a_lab=true);


Et dire que je n'enseigne même pas les graphes... et que je n'en ai pas vraiment l'utilité. :mrgreen:
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Zaf
Messages : 56
Enregistré le : mer. 17 mars 2010, 07:11

Re: Les Graphes

Message non lu par Zaf » sam. 24 avr. 2010, 09:58

Bonjour à tous,
Bravo à ceux qui ont bien travaillé même pendant les vacances, beau travail sur les graphes !!! merci GM !
Il ne manque plus que Dijkstra et la coloration des graphes... :P

Zaf
Messages : 56
Enregistré le : mer. 17 mars 2010, 07:11

Re: Les Graphes

Message non lu par Zaf » sam. 24 avr. 2010, 11:02

Bonjour,
Serait-il possible de paramétrer dans l'orientation du graphe ?
Pour un graphe non orienté il faut des arcs non fléchés.

Répondre