j'essaye de construire un arbre pondéré représentant une marche aléatoire sur les sommets d'un tétraèdre de sommets A, B, C et D. En utilisant PdfAdd, j'obtiens le code suivant :
Code : Tout sélectionner
// préambule asymptote
usepackage("amsmath,amssymb");
usepackage("inputenc","utf8");
// code figure
unitsize(1cm,1cm);
object sommet0=draw(Label("A"),ellipse,(0,0),NoFill);
object sommet1=draw(Label("B"),ellipse,(14,0),NoFill);
object sommet2=draw(Label("C"),ellipse,(14,-2),NoFill);
object sommet3=draw(Label("D"),ellipse,(0,-2),NoFill);
add(new void(picture pic, transform t) {
path arete01=point(sommet0,dir(degrees((14,0),true)),t){dir(25+degrees((14,0),true))}..point(sommet1,dir(180+degrees((14,0),true)),t);
draw(pic,arete01,Arrow);
label(pic,scale(.7)*"$\frac{1}{3}$",relpoint(arete01,.5),Relative(dir(90+degrees((14,0),true))),Fill(1,white));
path arete10=point(sommet1,dir(degrees((-14,0),true)),t){dir(25+degrees((-14,0),true))}..point(sommet0,dir(180+degrees((-14,0),true)),t);
draw(pic,arete10,Arrow);
label(pic,scale(.7)*"$\frac{1}{3}$",relpoint(arete10,.5),Relative(dir(90+degrees((-14,0),true))),Fill(1,white));
path arete02=point(sommet0,dir(degrees((14,-2),true)),t){dir(25+degrees((14,-2),true))}..point(sommet2,dir(180+degrees((14,-2),true)),t);
draw(pic,arete02,Arrow);
path arete20=point(sommet2,dir(degrees((-14,2),true)),t){dir(25+degrees((-14,2),true))}..point(sommet0,dir(180+degrees((-14,2),true)),t);
draw(pic,arete20,Arrow);
label(pic,scale(.7)*"$\frac{1}{3}$",relpoint(arete20,.5),Relative(dir(90+degrees((-14,2),true))),Fill(1,white));
path arete03=point(sommet0,dir(degrees((0,-2),true)),t){dir(25+degrees((0,-2),true))}..point(sommet3,dir(180+degrees((0,-2),true)),t);
draw(pic,arete03,Arrow);
label(pic,scale(.7)*"$\frac{1}{3}$",relpoint(arete03,.5),Relative(dir(90+degrees((0,-2),true))),Fill(1,white));
path arete30=point(sommet3,dir(degrees((0,2),true)),t){dir(25+degrees((0,2),true))}..point(sommet0,dir(180+degrees((0,2),true)),t);
draw(pic,arete30,Arrow);
label(pic,scale(.7)*"$\frac{1}{3}$",relpoint(arete30,.5),Relative(dir(90+degrees((0,2),true))),Fill(1,white));
path arete12=point(sommet1,dir(degrees((0,-2),true)),t){dir(25+degrees((0,-2),true))}..point(sommet2,dir(180+degrees((0,-2),true)),t);
draw(pic,arete12,Arrow);
label(pic,scale(.7)*"$\frac{1}{3}$",relpoint(arete12,.5),Relative(dir(90+degrees((0,-2),true))),Fill(1,white));
path arete21=point(sommet2,dir(degrees((0,2),true)),t){dir(25+degrees((0,2),true))}..point(sommet1,dir(180+degrees((0,2),true)),t);
draw(pic,arete21,Arrow);
label(pic,scale(.7)*"$\frac{1}{3}$",relpoint(arete21,.5),Relative(dir(90+degrees((0,2),true))),Fill(1,white));
path arete13=point(sommet1,dir(degrees((-14,-2),true)),t){dir(25+degrees((-14,-2),true))}..point(sommet3,dir(180+degrees((-14,-2),true)),t);
draw(pic,arete13,Arrow);
label(pic,scale(.7)*"$\frac{1}{3}$",relpoint(arete13,.5),Relative(dir(90+degrees((-14,-2),true))),Fill(1,white));
path arete31=point(sommet3,dir(degrees((14,2),true)),t){dir(25+degrees((14,2),true))}..point(sommet1,dir(180+degrees((14,2),true)),t);
draw(pic,arete31,Arrow);
label(pic,scale(.7)*"$\frac{1}{3}$",relpoint(arete31,.5),Relative(dir(90+degrees((14,2),true))),Fill(1,white));
path arete23=point(sommet2,dir(degrees((-14,0),true)),t){dir(25+degrees((-14,0),true))}..point(sommet3,dir(180+degrees((-14,0),true)),t);
draw(pic,arete23,Arrow);
label(pic,scale(.7)*"$\frac{1}{3}$",relpoint(arete23,.5),Relative(dir(90+degrees((-14,0),true))),Fill(1,white));
path arete32=point(sommet3,dir(degrees((14,0),true)),t){dir(25+degrees((14,0),true))}..point(sommet2,dir(180+degrees((14,0),true)),t);
draw(pic,arete32,Arrow);
label(pic,scale(.7)*"$\frac{1}{3}$",relpoint(arete32,.5),Relative(dir(90+degrees((14,0),true))),Fill(1,white));
});
shipout(bbox(0.1cm,0.1cm,white));
Merci.