Let $(X,f)$ be a Belyi pair, i.e. a Riemann surface $X$ together with a morphism $f: X \to \mathbb{P}^1$, ramified only in $0,1, \infty$. Grothendieck's dessin d'enfant is the pre-image $G$ of the interval $[0,1]$ considered as a graph embedded in $X$ (a dessin d'enfant has more information than that, but let us concentrate on just the graph for the moment). What is the algorithm to compute $G$?

What I mean by an algorithm is some efficient procedure that works in terms of algebraic data used to define $X$ and $f$. We may assume $X$ projective, so let $X$ be given by its homogeneous coordinate ring $R^\bullet$, specified by generators and relations, and $f$ specified by elements of a graded $R^\bullet$-module $M^\bullet$ corresponding to the line bundle $f^*(O(-1))$.

Is there an algorithm that computes the adjacency matrix of $G$ in terms of these data?

update: a dessin d'enfant also contains splitting of the set of vertices into two classes and a cyclic ordering of edges incident to each vertex (which arises from the monodromy action) which can be used to define an action of the free group on two generators on the edges of the dessin. The stabiliser of the action is a subgroup of finite index, and in fact, a conjugacy class of a group of finite index in $F_2$ defines the isomorphism type of a dessin d'enfant.

Therefore my question can also be reformulated accordingly: how to compute efficiently (conjugacy class of) a finite index subgroup of $F_2$ corresponding to a Belyi pair $(X,f)$?