Orienting Unrooted Binary Networks Faster:
Focus on the Generator
June 30, 2026
The problem of orienting an unrooted network to obtain a specific class of rooted phylogenetic networks is known to be NP-hard in many cases. In this paper, we introduce two algorithmic frameworks that yield significantly improved fixed-parameter tractable (FPT) algorithms parameterized by the network level \(\ell\). Our first main contribution shows that for several prominent network classes, the core algorithmic difficulty lies in finding a directed spanning tree on the network’s undirected generator. By enumerating these spanning trees in \(\mathcal{O}(5.3334^\ell + \ell)\) time and orienting all remaining edges in polynomial time, we solve the orientation problem in \(\mathcal{O}(5.3334^\ell \cdot n)\) time for tree-based networks and in \(\mathcal{O}(5.3334^\ell \cdot n^2)\) time for orchards, where \(n\) is the number of vertices of the graph. Extending this approach with further branching yields \(\mathcal{O}(10.6667^\ell \cdot n^2)\)-time algorithms for tree-child and normal networks. Our second technique bypasses spanning trees by directly guessing the placement of reticulations on the generator. This framework provides \(\mathcal{O}(12.2071^\ell \cdot n^2)\)-time algorithms for temporal, reticulation-visible, and tree-sibling networks. Finally, we demonstrate the versatility of the reticulation-guessing framework by showing that even computing an orientation with minimum scanwidth is single-exponential FPT with respect to the level. Together, these results significantly improve the best-known running times for phylogenetic network orientation.
Phylogenetic networks are a crucial tool in evolutionary biology that extends traditional phylogenetic trees to non-linear evolutionary histories that may also contain reticulate evolutionary events such as hybridization, horizontal gene transfer, and recombination. In practice, many network reconstruction methods infer unrooted networks from undirected data, leaving the evolutionary direction of the edges unresolved. To interpret these networks biologically, it is necessary to orient the edges to form a valid directed acyclic graph with a single root. However, not all orientations produce biologically meaningful networks, motivating the problem of finding an orientation that belongs to a well-studied class of phylogenetic networks, such as tree-child, tree-based, or orchard networks.
The algorithmic problem of orienting undirected graphs into specific classes of phylogenetic networks has received significant attention in recent years. While the general orientation problem can be solved in linear time on degree-3 networks [1], restricting the output to network classes with specific desirable properties drastically increases the computational complexity. The orientation problem has been shown to be NP-hard for tree-based networks [2], orchards [3], and tree-child networks [4], [5].
Heuristic and exact approaches for orienting networks have been explored in Verzijlbergen’s thesis [6] and further mathematical conditions when a network can be oriented into a tree-child network have been analyzed in [7]. Approaches within the realm of parameterized complexity gained popularity in this field. In [8], the closely related problem of finding degree-constrained acyclic orientations has been studied as part of parameterized approaches to network orientation. In [2], a general framework for network orientation was presented that shows that orienting into a network class \(\mathcal{C}\) is FPT with respect to the level of the network, provided the class \(\mathcal{C}\) satisfies three mild conditions. The level of a network is an important parameter in the study of phylogenetics, as it measures the number of reticulation events in blobs (i.e., reticulate components). Though demonstrating that the orientation problem for many classes is in FPT [2], the running time achieved by their algorithm is impractical. The paper presents rather loose bounds that depend on the specific network class but, for many network classes, would exceed \(\mathcal{O}^*(1024^\ell)\). A more careful analysis seems to yield running times around \(\mathcal{O}^*(28.6^\ell)\) for some network classes. Recently, an impressive FPT-algorithm that is fast in practice has been proposed in [9], though with a larger parameter.
In this paper, we present two algorithmic frameworks that significantly improve the best-known running times for orienting degree-\(3\) networks into various network classes.
Both of our approaches leverage network generators [10]. We show that for tree-based networks and orchards, the core of the orientation problem is equivalent to finding the correct directed spanning tree on the generator. Since the generator of a level-\(\ell\) network has at most \(2\ell\) vertices, we can enumerate its spanning trees in \(\mathcal{O}(5.3334^\ell + \ell)\) time. Given the correct spanning tree, the remainder of the problem is solvable in polynomial time for tree-based and orchard networks, yielding \(\mathcal{O}(5.3334^\ell \cdot n)\)-time and \(\mathcal{O}(5.3334^\ell \cdot n^2)\)-time algorithms for these classes, respectively. By incorporating some further structural guesses on paths of non-tree edges incident to leaves, we extend this technique to solve the orientation problem for tree-child and normal networks in \(\mathcal{O}(10.6667^\ell \cdot n^2)\) time.
Similar to the approch taken in [2], our second approach guesses the locations of reticulations but much less precisely than in [2]. We believe this technique to be powerful enough to solve the orientation problem for most network classes and demonstrate its usefulness by obtaining \(\mathcal{O}(12.2071^\ell \cdot n^2)\)-time algorithms for temporal, reticulation-visible, and tree-sibling networks. We also demonstrate that this approach can be used to prove that computing a network orientation with minimum scanwidth is FPT in the level.
Theorems and lemmas marked with \(\textcolor{red}{\bigstar}\) are proven partly or completely in Appendix .
We use the notations \([n] := \{1,\dots,n\}\), and \([n]_0 := \{0,\ldots,n\}\). The \(\mathcal{O}^*\) and \(\tilde{\mathcal{O}}\) notation suppresses polynomial and poly-logarithmic factors in the input size, respectively.
We use standard graph-theoretic notation as in [11] and define only some terms here. We consider finite and simple graphs \(G\) with vertex set \(V(G)\) and edge set \(E(G)\). An undirected binary (phylogenetic) network is an undirected graph \(\mathcal{U}\) whose vertices have degree \(3\) (internal vertices) or \(1\) (leaves). We write \(\{u,v\}\) for undirected edges and \(uv\) for directed edges, which we call arcs.
A spanning tree of a connected undirected graph \(G\) is a connected acyclic subgraph that contains all vertices of \(G\). A topological ordering of a directed acyclic graph is a linear ordering of its vertices such that for every arc \(uv\), \(u\) appears before \(v\) in the sequence. A graph is bipartite if its vertex set can be partitioned into two independent sets \(V_1\) and \(V_2\). A matching in a graph is a set of edges sharing no common vertices.
A \(2\)-edge-connected component of an undirected graph is a maximal subgraph that remains connected after the removal of any single edge. An edge whose removal increases the number of connected components in the graph is a cut-edge. A blob of an unrooted binary network is a subgraph induced by the vertices in a \(2\)-edge-connected component and all vertices adjacent to this component.
A rooted binary (phylogenetic) network is a directed acyclic graph with a single source, called its root, which has out-degree \(2\); all other vertices have in-degree 1 and out-degree 0 (leaves), in-degree 1 and out-degree 2 (tree-vertices) or in-degree 2 and out-degree 1 (reticulations). In biological applications leaves are usually associated with species. The reticulation number of a rooted binary network \(\mathcal{N}\) is the number of reticulations, which is equal to \(|E(\mathcal{N})| - |V(\mathcal{N})| + 1\). We use the latter to define the reticulation number also of unrooted networks. The level of a binary network is the maximum reticulation number of its blobs.
An undirected network \(\mathcal{U}\) can be oriented into a rooted network \({\mathcal{N}}\) if there is an edge \(e \in E(\mathcal{U})\) such that the underlying undirected graph of \(\mathcal{N}\) can be obtained from \(\mathcal{U}\) by subdividing a single edge (the introduced vertex is the root of \(\mathcal{N}\)). For some class of rooted networks \(\mathcal{C}\), an undirected network \(\mathcal{U}\) can be \(\mathcal{C}\)-oriented if \(\mathcal{U}\) can be oriented into a rooted network \(\mathcal{N} \in \mathcal{C}\). The main problem studied in this paper is this:
We define specific network classes as needed later in the paper. See [12], [13] for biological interpretations. A network class \(\mathcal{C}\) is blob-determined if a network \(\mathcal{N}\) belongs to \(\mathcal{C}\) if and only if its blobs belong to \(\mathcal{C}\). This concept, introduced in [2], is the key to obtaining algorithms for orientation problems that are FPT in the level, as it suffices to find valid orientations for all blobs independently (but choosing the root in each blob consistently with the global placement of the root).
Central to our approach is the concept of an undirected generator [10].
Definition 1. The generator* \(\mathcal{U}_{\textrm{gen}}\) of an undirected network \(\mathcal{U}\) is the graph obtained by removing leaves until no leaves remain and then suppressing degree-\(2\) vertices.*
For most network classes \(\mathcal{C}\), our algorithm for finding a \(\mathcal{C}\)-orientation starts by guessing the placement of the root. Introducing this root creates a degree-\(2\) vertex. When constructing the generator of a network \(\mathcal{U}\) after placing the root, the root is the only degree-\(2\) vertex we do not suppress during the construction of \(\mathcal{U}_{\textrm{gen}}\). Also, after placing the root \(\rho\), the root \(\rho_B\) of every blob \(B\) of \(\mathcal{U}\) that does not contain \(\rho\) must be the degree-\(3\) vertex in \(B\) closest to \(\rho\) in \(\mathcal{U}\). We do not consider the cut-edge incident to \(\rho_B\) to be part of the blob and do not suppress \(\rho_B\) when constructing the generator \(B_{\textrm{gen}}\) of \(B\).
To avoid confusion with the edges of \(\mathcal{U}\), we call the edges of \(\mathcal{U}_{\textrm{gen}}\) sides. Each side \(e = \{u,w\}\) of \(\mathcal{U}_{\textrm{gen}}\) corresponds to a caterpillar consisting of a path \(P_e = \langle u, v_1, \dots, v_{k(e)}, w \rangle\) of length \(k(e)+1\) where each vertex \(v_i\) neighbours a leaf \(x_i\). We call \(e\) a \(k(e)\)-side or a \(\geq q\)-side for \(q \leq k(e)\) to specify its number of pendant leaves.
The generator of an undirected network can be computed in linear time.
Lemma 1 (Lemma 1 in [10]). Let \(B\) be a level-\(\ell\) blob. Then the generator \(B_{\textrm{gen}}\) has \(2\ell - 2\) vertices and \(3\ell - 3\) edges.
The number of spanning trees of a \(\Delta\)-regular multigraph of order \(n\) converges, as \(n \to \infty\), to \[\left(\frac{(\Delta-1)^{\Delta-1}}{\left(\Delta^2 - 2\Delta\right)^{\Delta/2 - 1}}\right)^n \text{ \cite{mckay1983spanning}}.\] For \(\Delta = 3\), this evaluates to \(\left({4}/{\sqrt{3}}\right)^n\). Given a graph with \(n\) vertices and \(m\) edges, all \(T\) spanning trees can be enumerated in \(\mathcal{O}(n + m + T)\) time [14], [15].
Since \(B_{\textrm{gen}}\) is a cubic multigraph of order \(2\ell - 2\), for every blob \(B\), the number of spanning trees of \(B_{\textrm{gen}}\) is asymptotically \[\mathcal{O}\!\left(\left(\frac{4}{\sqrt{3}}\right)^{2\ell - 2}\right) = \mathcal{O}\!\left(\left(\frac{4}{\sqrt{3}}\right)^{2\ell}\right) = \mathcal{O}\!\left(\left(\frac{16}{3}\right)^{\ell}\right).\]
Lemma 2 ([14]–[16]). Enumerating all \(\mathcal{O}(16/3^\ell)\) spanning trees of the generator of a level-\(\ell\) blob takes \(\mathcal{O}(16/3^\ell + \ell)\) time.
Definition 2. A network \({\mathcal{N}}\) is tree-based* if it has a spanning tree whose leaves are leaves of \(\mathcal{N}\). We call such a spanning tree a base tree of \({\mathcal{N}}\).*
This definition is independent of edge directions, yielding the following lemma.
Lemma 3 (\(\textcolor{red}{\bigstar}\)). An undirected network \(\mathcal{U}\) has a tree-based orientation if and only if \(\mathcal{U}\) has an undirected base tree.
By 3, deciding tree-based orientability reduces to finding an unrooted base tree. Moreover, as the class of tree-based networks is blob-determined, it suffices to find an unrooted base tree for each blob \(B\). The union of these trees is a base tree of \(\mathcal{U}\). For every base tree \(T\) of \(B\), there exists a unique spanning tree \(S\) of \(B_{\textrm{gen}}\) consistent with \(T\) in the sense that a side \(e\) of \(B_{\textrm{gen}}\) belongs to \(S\) if and only if all edges in \(P_e\) belong to \(T\).
Thus, to find an unrooted base tree of a blob \(B\), we enumerate all spanning trees \(S\) of \(B_{\textrm{gen}}\) and test whether \(B\) has a base tree \(T\) consistent with \(S\). For a fixed spanning tree \(S\) of \(B_{\textrm{gen}}\), let \(V_0\) be the set of leaves of \(S\). Let \(V_1 \subseteq V_0\) be the vertices without incident \(\ge 2\)-side not in \(S\), and let \(E_1\) be the set of \(1\)-sides incident to vertices in \(V_1\).
Let \(H\) be the bipartite graph obtained from \((V_1, E_1)\) by subdividing each side \(e \in E_1\) with a vertex \(e\). Since \(\Delta(H) \le 2\), a maximum matching \(M\) in \(H\) can be found in linear time. As we show below, if \(M\) does not match all vertices in \(V_1\), no base tree consistent with \(S\) exists, and we proceed to the next spanning tree. Otherwise, we construct \(T\) by taking the union \(T'\) of caterpillars for all \(e \in S\), adding the path \(\langle v,w,x \rangle\) for each \((v,e) \in M\) (where \(P_e = \langle v,w,u \rangle\) and \(x\) is the leaf at \(w\)), adding a path connecting each vertex \(v \in V_0 \setminus V_1\) to the closest leaf on an incident \(\ge 2\)-side, and greedily completing \(T'\) to a spanning tree of \(B\).
Theorem 1. Tree-Based Orientation can be solved in \(\mathcal{O}(5.3334^\ell \cdot n)\) time.
Proof. Correctness. By 3 and since the class of tree-based networks is blob-determined, it suffices to find an unrooted base tree of each blob \(B\). Given a spanning tree \(S\) of \(B_{\textrm{gen}}\) and a matching \(M\) of the corresponding graph \(H\) that matches all vertices in \(V_1\), our construction clearly yields a base tree.
Conversely, if \(B\) has a base tree \(T\), then \(T\) is consistent with some spanning tree \(S\) of \(B_{\textrm{gen}}\) and must contain a path \(P_v\) from each vertex \(v \in V_1\) to a distinct leaf of \(B\) attached to an incident side \(e \in E_1\). Setting \(M = \{\{v,e\} \mid P_v \subseteq e\}\) forms a valid matching in \(H\) because no two paths \(P_u\) and \(P_v\) can end at the leaf of the same \(1\)-side. Thus, the graph \(H\) corresponding to \(S\) has a matching that matches all vertices in \(V_1\).
Running time. By 2, enumerating spanning trees of \(B_{\textrm{gen}}\) takes \(\mathcal{O}(16/3^\ell + |B|)\) time per blob \(B\). Constructing \(H\), computing the matching \(M\), and expanding \(S\) to a base tree \(T\) of \(B\) takes linear time per spanning tree \(S\) of \(B\). Summing across all blobs thus yields a total cost of \(\mathcal{O}(16/3^\ell \cdot n) = \mathcal{O}(5.3334^\ell \cdot n)\). ◻
Definition 3. An orchard* is a rooted tree-based network \({\mathcal{N}}\) that has a base tree \(T\) and a labelling \(\lambda : V({\mathcal{N}}) \to \mathbb{Q}\) such that \(\lambda(u) < \lambda(v)\) for each arc \(uv \in T\), and \(\lambda(u) = \lambda(v)\) for each arc \(uv \notin T\). Such a labelling \(\lambda\) is called an HGT-consistent labelling of \({\mathcal{N}}\).*
We solve the following problem as a subroutine.
Intuitively, TSO asks for a consistent time-ordering of vertices, where \(E_=\)-edges group vertices into simultaneity classes (e.g., endpoints of reticulation edges that must receive the same label), \(E_{\ne}\)-edges enforce strict separation between classes, arcs enforce strict temporal precedence, and condition (4) ensures that every vertex in \(V_1\) has at least one neighbour that succeeds it in the time-ordering. We call such a labelling golden.
Let \(C_1,\dots,C_k\) be the connected components of \((V, E_=)\). If there exists an arc \(uv\) or an edge \(\{u,v\} \in E_{\ne}\) with \(u,v \in C_j\), then no solution exists. Otherwise, let \(\mathcal{Z}:= \emptyset\) and \(h := k\). While \(\mathcal{Z}\ne \{C_1, \ldots, C_k\}\), choose a component \(C_i \notin \mathcal{Z}\) such that every arc \(uv \in A\) and every edge \(\{u,v\} \in E_{\ne}\) with \(u \in C_i\) satisfies \(v \in C_j\) for some component \(C_j \in \mathcal{Z}\). We label the vertices in \(C_i\) with \(h\), add \(C_i\) to \(\mathcal{Z}\), decrement \(h\), and repeat. If no such component exists and not all vertices have been labelled yet, then there is no golden labelling.
Lemma 4 (\(\textcolor{red}{\bigstar}\)). For any instance \((V_1 \uplus V_2, E_= \uplus E_{\ne}, A)\) of Topological Simultaneity Ordering, finding a golden labelling or deciding that none exists takes \(\mathcal{O}(|V| + |E| + |A|)\) time.
To decide whether an undirected network can be oriented into an orchard, we guess the root of the network, which forces the root of each blob. Since the class of orchards is blob-determined, it now suffices to decide for each blob \(B\) independently whether it has an orchard orientation with this root. To do so, we guess an undirected spanning tree \(S\) of \(B_{\textrm{gen}}\) and obtain a directed spanning tree by orienting \(S\) away from the root. We construct a TSO instance from \(S\) in which \(V_1\) is the set of leaves of \(S\), and \(V_2 = V(B_{\textrm{gen}}) \setminus V_1\). \(A\) is the set of arcs in \(S\). \(E_=\) is the set of \(0\)-sides of \(B_{\textrm{gen}}\) not in \(S\). \(E_{\ne}\) is the set of \(1\)-sides of \(B_{\textrm{gen}}\) not in \(S\). If the resulting TSO instance has no solution, we consider the next spanning tree of \(B_{\textrm{gen}}\) or, if the spanning trees are exhausted, the next root placement in \(\mathcal{U}\). If a golden labelling \(\lambda\) is found, we extend it to all vertices of \(B\) as follows:
Every arc \(e = (u, w) \in A\) corresponds to a path \(P_e = \langle u, v_1, \ldots, v_k, w \rangle\); we set \(\lambda(v_i) = \lambda(u) + i / (k + 1)\) for all \(i \in [k]\). For each side \(e = \{u,w\} \not\in S\), internal vertices of \(P_e = \langle u, v_1, \ldots, v_k, w \rangle\) are labelled as follows: (i) if \(k(e) = 0\), then no internal vertices need labelling; (ii) if \(k(e) = 1\), then \(e \in E_{\ne}\) and we set \(\lambda(v_1) = \max(\lambda(u), \lambda(w))\); (iii) if \(k(e) \ge 2\), then we set \(\lambda(v_i) = \max(\lambda(u), \lambda(w)) + i\) for all \(i \in[k-1]\) and \(\lambda(v_k) = \lambda(v_{k-1})\). For any network leaf \(x\) with parent \(p\), we set \(\lambda(x) = \lambda(p) + 1\). We obtain the final orientation by directing all edges from vertices with lower labels to vertices with higher labels, breaking ties arbitrarily.
Theorem 2. Orchard Orientation can be solved in \(\mathcal{O}(5.3334^\ell \cdot n^2)\) time.
Proof. Correctness. If our algorithm returns an orientation and a labelling \(\lambda\) for each blob \(B\), then it is easily verified that every non-leaf vertex \(v\) has a neighbour \(w\) with \(\lambda(v) < \lambda(w)\), and every non-root vertex \(v\) has exactly one neighbour \(u\) with \(\lambda(u) < \lambda(v)\). Thus, the arcs \(xy\) with \(\lambda(x) < \lambda(y)\) in the orientation form a base tree. Since each remaining arc \(uv\) satisfies \(\lambda(u) = \lambda(v)\), \(\lambda\) is an HGT-consistent labelling of \(B\) with respect to this base tree, that is the orientation of \(B\) is orchard. Since orchards are blob-determined, the union of the orientations of the different blobs is thus an orchard orientation of \(\mathcal{U}\).
Conversely, if \(\mathcal{U}\) has an orchard orientation, base tree \(T\), and HGT-consistent labelling \(\lambda\), then the restriction \(T_B\) of \(T\) to each blob \(B\) is a base tree of \(B\), and the restriction of \(\lambda\) to \(B\) is an HGT-consistent labelling of \(B\) with respect to \(T_B\). \(B_{\textrm{gen}}\) has a directed spanning tree consistent with \(T_B\). Since we inspect all possible spanning trees of \(B_{\textrm{gen}}\), we find this spanning tree. Since \(\lambda\) is HGT-consistent, it satisfies \(\lambda(u) < \lambda(v)\) for each arc \(uv \in S\). Every side \(e = \{u,v\} \in E_=\) is a \(0\)-side not in \(S\) and thus satisfies \(\lambda(u) = \lambda(v)\). Every side \(e \in E_{\ne}\) is a \(1\)-side with corresponding path \(P_e = \langle u, w, v \rangle\). Exactly one of the edges in \(P_e\) does not belong to \(T_B\). Thus, we have either \(\lambda(u) = \lambda(w) > \lambda(v)\) or \(\lambda(u) < \lambda(w) = \lambda(v)\). This shows that restriction \(\lambda\) to \(V(B_{\textrm{gen}})\) yields a golden labelling of the \({{\normalfont\mathrm{\small TSO}}}\) instance obtained from \(B\) and \(S\). Thus, our algorithm finds a (possibly different) golden labelling and constructs from it a (possibly different) orchard orientation of \(B\).
Running time. For each of the \(\mathcal{O}(n)\) possible root choices, iterating over all spanning trees across all blobs takes \(\mathcal{O}(16/3^\ell + |B|)\) time per blob \(B\) by 2. Constructing and solving the TSO instances takes \(\mathcal{O}(\ell)\) time per tree. Summing across blobs gives \(\mathcal{O}(16/3^\ell \cdot n)\) per root choice, yielding \(\mathcal{O}(16/3^\ell \cdot n^2) = \mathcal{O}(5.3334^\ell \cdot n^2)\) total time. ◻
Definition 4. A phylogenetic network is tree-child* if each vertex \(u\) has at least one child \(v\) that is a tree-vertex or a leaf, implying a reticulation-free path to a leaf. We say \(v\) is a tree-child of \(u\). A phylogenetic network is normal if it is tree-child and contains no arc \(uv\) such that \({\mathcal{N}}\) contains a path from \(u\) to \(v\) other than \(uv\). We call such an arc \(uv\) a shortcut.*
To decide whether an undirected network can be oriented into a tree-child or normal network, we use the same overall strategy as for orchards: We guess the root of the orientation, which fixes the root of each blob. Since the classes of tree-child and normal networks are blob-determined, it now suffices to find an orientation of each blob \(B\) consistent with this placement of its root. To do so, we guess an unrooted spanning tree of \(B_{\textrm{gen}}\) and direct its edges away from the root. It remains to decide whether there exists a tree-child or normal orientation of \(B\) consistent with the chosen rooted spanning tree \(S\) of \(B_{\textrm{gen}}\).
Recall that each side \(e = \{u, v\}\) of \(B_{\textrm{gen}}\) corresponds to a path \(P_e\) in \(B\). Since each internal vertex of \(P_e\) has an attached leaf, providing a guaranteed tree-child for this vertex, the tree-child condition needs to be ensured explicitly only for the vertices of \(B_{\textrm{gen}}\). Our main concern is how to orient the edges in \(P_e\), for each side \(e = \{u,v\} \notin S\) to ensure that \(u\) and/or \(v\) has a tree-child in \(P_e\), if possible. If \(k(e) = 0\), then neither endpoint can have a tree-child in \(P_e\); if, \(k(e) = 1\), then at most one of the endpoints has a tree-child in \(P_e\); if \(k(e) = 2\), then exactly one endpoint has a tree-child in \(P_e\); and, if \(k(e) \geq 3\), then placing a reticulation in the middle of \(P_e\) ensures that both \(u\) and \(w\) have a tree-child in \(P_e\).
Let \(L(S)\) be the set of leaves of \(S\). A leaf-cycle is a cycle in \(B_{\textrm{gen}}\) edge-disjoint from \(S\); thus, its vertices are in \(L(S)\). A leaf-path is a path of at least two sides, edge-disjoint from \(S\), and whose endpoints are not in \(L(S)\). The internal vertices are in \(L(S)\). A stretch is a path \(\langle v_0, \dots, v_t \rangle\) in \(B_{\textrm{gen}}\) with \(t > 1\) sides, which contains no \(\ge 3\)-sides nor any sides in \(S\), and such that \(v_0\) and \(v_t\) are either incident with a \(\geq 3\)-side or not in \(L(S)\).
Lemma 5. If \(B\) has a tree-child orientation, then there is a tree-child orientation \(B^r\) such that exactly one of the following holds for each stretch \(\langle v_0, \dots, v_t \rangle\):
\(v_i\) has a tree-child in \(P_{\{v_i,v_{i+1}\}}\) for all \(i \in [t-1]_0\).
\(v_i\) has a tree-child in \(P_{\{v_i,v_{i-1}\}}\) for all \(i \in [t]\).
There exists an index \(i \in [t - 1]_0\) such that:
each vertex \(v_j\) with \(j \in [i]\) has a tree-child in \(P_{\{v_{j-1}, v_j\}}\),
each vertex \(v_j\) with \(j \in \{i+1, \dots, t\}\) has a tree-child in \(P_{\{v_{j+1}, v_j\}}\),
\(P_{\{v_i, v_{i+1}\}}\) contains a reticulation, and
if \(\{v_i, v_{i+1}\}\) is a \(2\)-side, then \(v_i\) (or \(v_1\) if \(i=0\)) has a tree-child in \(P_{\{v_i, v_{i+1}\}}\).
Proof. As only one condition can be satisfied by \(B_r\), we show that at least one is satisfied. Fix a stretch \(Q = \langle v_0, \dots, v_t \rangle\). The lemma holds if this stretch satisfies one of the first two conditions. So assume that there are vertices \(v_a\) and \(v_b\) such that \(v_a\) has a tree-child in \(P_{\{v_a,v_{a-1}\}}\) and \(v_b\) has a tree-child in \(P_{\{v_b,v_{b+1}\}}\). Choose \(a\) to be the maximal such index, and \(b\) to be the minimal such index. Since \(Q\) contains no \(\ge 3\)-sides and, therefore, each side in \(Q\) can provide a tree-child for at most one generator vertex, \(v_i\) has to have a tree-child in \(P_{\{v_i,v_{i+1}\}}\) for all \(i \geq b\), and \(v_i\) has to have a tree-child in \(P_{\{v_i,v_{i-1}\}}\) for all \(i \leq a\). This precludes that \(a > b\). Thus, \(a \le b\). If \(a + 1 < b\), then \(v_{a+1}\) must have a tree-child in \(P_{\{v_a, v_{a+1}\}}\) or \(P_{\{v_{a+1}, v_{a+2}\}}\), contradicting the choice of \(a\) or \(b\). Thus, \(a + 1 \le b\). In this case, the index \(i = a\) satisfies the first two conditions of the third case, and we can orient the edges in \(P_{\{v_a, v_{a+1}\}}\) so that an internal vertex of \(P_{\{v_a, v_{a+1}\}}\) becomes a reticulation, which satisfies the last two conditions of the third case. ◻
By 5, there are at most \(t+2\) ways to orient a stretch with \(t\) sides. Leaf-cycles may not be decomposable into stretches, but are even easier to orient.
Lemma 6. If \(B\) has a tree-child orientation, then there is a tree-child orientation \(B^r\) such that exactly one of the following holds for each leaf-cycle \(C = \langle v_0, \dots, v_t, v_0 \rangle\) without \(\geq 3\)-sides:
\(v_i\) has a tree-child in \(P_{\{v_i,v_{i+1}\}}\) for all \(i \in [t-1]_0\).
\(v_i\) has a tree-child in \(P_{\{v_i,v_{i-1}\}}\) for all \(i \in [t]\).
Proof. Assume w.l.o.g. that \(v_0\) has a tree-child in \(P_{\{v_0,v_1\}}\). Since \(C\) contains no \(\ge 3\)-sides, the same inductive argument as in the proof of 5 shows that \(v_j\) has a tree-child in \(P_{\{v_{j-1}, v_j\}}\) for all \(j \in [t]\). The second option can be shown analogously. ◻
6 implies also that each leaf-cycle needs at least one 2-side to ensure acyclicity—an already known fact [7]. We can assume that, for each \(2\)-side \(e\) in a leaf-cycle, the path \(P_e = \langle u,v_1,v_2,w \rangle\) is oriented so that \(v_1\) or \(v_2\) is a reticulation.
To test whether there exists a tree-child orientation of \(B\) consistent with \(S\), we choose the orientation of every \(\ge 3\)-side \(e \notin S\) so that both endpoints have a tree-child in \(P_e\) and guess the orientation of every \(0\)-side, the orientations of the edges in every stretch, and the orientations of the edges in each leaf-cycle without \(\ge 3\)-sides. This leaves the orientation of \(1\)- and \(2\)-sides whose endpoints are not in \(L(S)\). We call these non-leaf sides. We choose their orientations using the following reduction rule and lemma, but before we do so, we test whether the edge directions chosen so far create a directed cycle. If so, the guesses we made are incorrect and we try the next combination of orientations of \(0\)-sides, stretches, and leaf-cycles without \(\ge 3\)-sides.
Reduction Rule 1. Let \(e = \{u, w\} \notin S\) be a non-leaf side. Let \(c_u\) and \(c_w\) be the children of \(u\) and \(w\), respectively, in \(S\). If \(u\) has no tree-child in \(P_{\{u,c_u\}}\) or \(w\) has no tree-child in \(P_{\{w,c_w\}}\), assume w.l.o.g. that the former is the case. Then orient \(P_e\) so that \(u\)’s neighbour in \(P_e\) is \(u\)’s tree-child and, if \(e\) is a \(2\)-side, the other internal vertex of \(P_e\) is a reticulation. If \(e\) is a \(1\)-side and there is a directed path from \(w\) to \(u\), given the edge directions chosen so far, then this creates a directed cycle and there is no tree-child orientation of \(G\) consistent with \(S\).
1 is applicable as long as there exists a non-leaf side with an endpoint whose child in \(S\) is a reticulation. Once no such side exists, we orient the remaining sides by making one of the internal vertices of each of these sides a reticulation.
Lemma 7. When all leaf-paths, leaf-cycles, and \(0\)-sides have been oriented and 1 cannot be applied, all remaining sides can be oriented so that one of the internal vertices of each such side becomes a reticulation.
Proof. Consider any side \(\{u,w\}\) that remains unoriented after applying 1 exhaustively. Let \(c_u\) and \(c_w\) be the children of \(u\) and \(w\), respectively, in \(S\). Then the child of \(u\) in \(P_{\{u,c_u\}}\) is a tree-vertex or incident to a still unoriented edge. The same is true for the child of \(w\) in \(P_{\{w,c_w\}}\). Placing a reticulation on an internal vertex of every still unoriented side ensures that the endpoints of each such side become tree-vertices. Thus, the child of \(u\) in \(P_{\{u,c_u\}}\) and the child of \(w\) in \(P_{\{w,c_w\}}\) are tree-vertices once we are done orienting all edges. Since the edges of each side not oriented after applying 1 are oriented in opposite directions, we do not introduce any cycles. ◻
Once all edges have been oriented, we verify that the network is tree-child.
To obtain an orientation into a normal network, we apply an additional rule after 1 and before applying 7: If there exists a non-leaf side \(e = \{u,w\}\) such that the current partial orientation contains a directed path from \(u\) to \(w\), then, (1) if \(k(e)=1\), orient the edges in \(P_e\) towards \(w\) and, (2) if \(k(e)=2\), orient the edges in \(P_e\) so that the neighbour of \(w\) in \(P_e\) is a reticulation. Both choices prevent shortcuts.
Theorem 3 (\(\textcolor{red}{\bigstar}\)). Tree-Child Orientation and Normal Orientation can be solved in \(\mathcal{O}(10.6667^\ell \cdot n^2)\) time.
Proof. Correctness. By 5 6, our algorithm iterates over all relevant orientations of \(0\)-sides, stretches, and leaf-cycles without \(\ge 3\)-edges. For the non-leaf sides, 1 is correct because it turns an endpoint \(w\) of such a side \(\{u,w\}\) into a reticulation only if this is necessary to ensure that \(u\) has a tree-child. 7 shows that the orientations we choose for all edges whose directions are not forced by our guesses and 1 are correct. Thus, if there exists an orientation of \(B\) consistent with \(S\), our algorithm finds it. Since this holds for every blob \(B\) of \(\mathcal{U}\), this shows that we find a valid orientation of \(\mathcal{U}\) if one exists. ◻
For the network classes in this section, the spanning tree approach yields running times of \(\mathcal{O}^*(16^\ell)\) because it seems difficult to avoid guessing for every \(1\)-side \(\{u,w\}\) not in \(S\) whether there is a reticulation at \(u\), at \(w\) or on the side. In this section, we show that faster running times are achievable for these network classes by guessing the placement of reticulations instead of a spanning tree. Specifically, after guessing the global root placement as before, we aim to find an orientation for each blob \(B\). To do so, we guess which of the vertices of \(B_{\textrm{gen}}\) are reticulations and which sides of \(B_{\textrm{gen}}\) have reticulations on them. Then we show that, given this guess of reticulations, it takes polynomial time to decide whether there exists a valid orientation of \(B\) consistent with this guess.
Lemma 8. For an undirected generator \(B_{\textrm{gen}}\) of a level-\(\ell\) blob, there are \(\mathcal{O}(12.2071^\ell)\) possible choices for placing reticulations.
Proof. By 1, \(B_{\textrm{gen}}\) has \(2\ell - 2\) vertices and \(3\ell - 3\) edges, yielding \(5\ell - 5\) reticulation candidates. Since we need to place \(\ell\) reticulations, we thus have \(\binom{5\ell-5}{\ell}\) choices to do so. Using the entropy bound \(\binom{5\ell}{\ell} \leq (5^5 / 4^4)^\ell = (3125 / 256)^\ell\), this yields \(\mathcal{O}(12.2071^\ell)\) choices. ◻
Let \(V_r \subseteq V(B_{\textrm{gen}})\) be the subset of generator vertices we guessed are reticulations, and let \(E_r \subseteq E(B_{\textrm{gen}})\) be the subset of sides that we guessed have reticulations on them. There exists at most one orientation of the subgraph of \(B_{\textrm{gen}}\) containing all sides of \(B_{\textrm{gen}}\) not in \(E_r\) in which exactly the vertices in \(V_r\) are reticulations, and this orientation can be found in \(\mathcal{O}(|B_{\textrm{gen}}|)\) time [2] if it exists. The orientation of each side \(e \notin E_r\) determines the orientation of the edges in the corresponding path \(P_e\) in \(B\). Thus, we only need to find the orientations of the edges in paths \(P_e\) for \(e \in E_r\). For all of the network classes we discuss here, it is always safe to place the reticulation on a \(\ge 3\)-side \(e \in E_r\) at any vertex of \(P_e\) that is not a neighbour of either endpoint of \(P_e\). \(0\)-sides cannot have any reticulations on them. If a \(1\)-side \(e\) has a reticulation on it, then this determines the orientation of all edges in \(P_e\). Thus, it only remains to choose the orientations of \(2\)-sides in \(E_r\). We call these sides undetermined.
Definition 5. A rooted phylogenetic network \({\mathcal{N}}\) is temporal* if it has a labelling \(\lambda: V({\mathcal{N}}) \to \mathbb{Q}\) such that*
(1) each arc \(uv\) satisfies \(\lambda(u) \leq \lambda(v)\),
(2) each reticulation arc \(uv\) (i.e., \(v\) is a reticulation) satisfies \(\lambda(u) = \lambda(v)\), and
(3) each vertex \(v \in V({\mathcal{N}})\) has an arc \(vw\) such that \(\lambda(v) < \lambda(w)\).
Vertex \(w\) in Condition (3) is a tree-child of \(v\), so temporal networks are tree-child networks.
Since temporal networks are blob-determined, we can once again focus on orienting a single blob \(B\), given a fixed choice of its root and a guess of the placement of reticulations in \(B_{\textrm{gen}}\). After orienting all but the undetermined sides of \(B_{\textrm{gen}}\) as described at the beginning of this section, we first test whether this partial orientation can be extended to a tree-child orientation. If this is not the case, then the guess of reticulations or of the root was not the right one. If we conclude that a tree-child orientation is possible, then, in the process, we fix the orientations of all undetermined sides that matter to obtain a tree-child orientation. Any orientation of the remaining sides produce a tree-child orientation, but we need to produce an orientation that has a temporal labelling \(\lambda\). We reduce this problem to an instance of TSO, the problem already used to find an orchard-orientation in 4.2.
First note that every generator vertex has at most two incident undetermined sides. Otherwise, it is not reachable from the root, as all three sides incident to it contain reticulations, so the guess of reticulations was incorrect. We start by partially orienting each undetermined side \(e = \{u, v\}\) by orienting the edges in \(P_e\) incident with \(u\) and \(v\) towards the internal vertices of \(P_e\), as this is consistent with having a reticulation in \(P_e\). Now we apply the following reduction rule exhaustively.
Reduction Rule 2. If there exists a generator vertex \(u\) incident with exactly one undetermined side \(e = \{u,v\}\) and without a tree-child along any of its other incident sides, then orient the edges in \(P_e\) such that the internal vertex of \(P_e\) next to \(u\) is a tree-vertex, and the other internal vertex is a reticulation.
After applying this rule exhaustively, we check whether the orientation is acyclic and whether every vertex now has a tree-child. If not, then there is no tree-child orientation consistent with the guessed placement of reticulations and, thus, also no temporal orientation. To orient the remaining sides to obtain a temporal orientation, or decide that none exists, we construct the following TSO instance:
The set \(A\) contains an arc \(uw\) for each side \(e=\{u,w\}\) of \(B_{\textrm{gen}}\) without a reticulation that is directed from \(u\) to \(w\) unless \(e\) is a \(0\)-side and \(w\) is a reticulation. The set \(E_=\) contains all \(1\)-sides with a reticulation and all \(0\)-sides incident with a reticulation. The set \(E_{\neq}\) contains all undetermined sides as well as \(\{u,w\}\) if \(uw \in A\). The set \(V_2\) contains all generator vertices incident with a \(\geq 3\)-side. All remaining generator vertices are in \(V_1\).
As we prove below, there is a temporal orientation of \(B\) consistent with the guessed placement of reticulations if and only if this TSO instance has a golden labelling \(\lambda\). In this case, we extend \(\lambda\) to a temporal labelling of \(B\) as follows: For each side \(e = \{u,w\}\) with corresponding path \(P_e = \langle u, v_1, \dots, v_{k(e)}, w \rangle\) in \(B\), assume w.l.o.g.that \(\lambda(u) \leq \lambda(w)\). If \(e\) does not contain a reticulation, then set \(\lambda(v_i) = \lambda(u) + \frac{i}{k(e)+1}\), for all \(i \in [k(e) - 1]\); if \(w\) is not a reticulation, then set \(\lambda(v_{k(e)}) = \lambda(u) + \frac{k(e)}{k(e)+1}\); if \(w\) is a reticulation, then set \(\lambda(v_{k(e)}) = \lambda(w)\). If \(e\) is a 1-side that contains a reticulation, then set \(\lambda(v_1) = \lambda(u)\). If \(e\) is a 2-side that contains a reticulation, then set \(\lambda(v_1) = \lambda(v_2) = \lambda(w)\). If \(e\) is a \(\geq 3\)-side that contains a reticulation, then set \(\lambda(v_i) = \lambda(w) + \min(i,k(e)-2)\). For any leaf \(x\) with parent \(p\), set \(\lambda(x) = \lambda(p) + 1\). This labelling defines an orientation by orienting an edge \(\{u,v\}\) towards \(v\) whenever \(\lambda(u) < \lambda(v)\) and orienting \(\{u,v\}, \{v,w\}\) towards \(v\) whenever \(\lambda(u) = \lambda(v) = \lambda(w)\).
Theorem 4 (\(\textcolor{red}{\bigstar}\)). Temporal Orientation can be solved in \(\mathcal{O}(12.2071^\ell \cdot n^2)\) time.
Proof. Correctness. It is is easy to verify that, if we find a golden labelling, then the final orientation we obtain is temporal, with the labelling \(\lambda\) to prove it. In particular, we explicitly ensure that the endpoints of reticulation arcs have the same label and that every vertex \(v\) has an out-neighbour \(w\) with \(\lambda(w) > \lambda(v)\), making this out-neighbour a tree-child of \(v\).
For the converse direction, assume that \(\mathcal{U}\) has a temporal orientation and a corresponding temporal labelling \(\lambda\). Then this orientation is consistent with some guess of a root and with some choice of reticulations within each blob. Since this choice of reticulations allows only one orientation of the sides without reticulations on them, the temporal orientation agrees with the orientations of these sides computed by the algorithm from [2]. It must also agree with the orientations chosen by 2, as these orientations are necessary even to obtain a tree-child orientation. As the endpoints of reticulation arcs must be assigned the same label by \(\lambda\) and every vertex must have a a neighbour with a greater label, it is now easy to verify that the restriction of \(\lambda\) to the generator vertices is a golden labelling of the TSO instance we construct. Thus, we find a golden labelling and, from it, obtain a temporal orientation. ◻
Definition 6. A phylogenetic network is reticulation-visible* if, for each reticulation \(r\), there is a leaf \(x\) such that every path from the root to \(x\) contains \(r\). We say \(r\) is visible from \(x\).*
Again, we focus on finding a reticulation-visible orientation of each blob \(B\) consistent with a root guess and with a guessed placement of reticulations on generator vertices and sides. Reticulations on sides are trivially visible from their adjacent leaves. We reduce visibility of reticulations that are generator vertices to Matching on Bipartite Graphs.
Let \(V_r \subseteq V(B_{\textrm{gen}})\) be reticulations that are generator vertices. We remove from \(V_r\) all those reticulations that, based on the edge directions chosen so far, are visible from a leaf without passing through another reticulation or are visible from another reticulation. The former are clearly visible, and we have the following observation:
If a reticulation \(r\) is visible from a reticulation \(r'\), then \(r\) is visible if \(r'\) is visible.
Let \(B'\) be the graph obtained from \(B\) by replacing every undetermined side with a \(1\)-side with a reticulation on it. We identify the reticulations that can be removed from \(V_r\) by running directed BFS in \(B'\) from each vertex \(r \in V_r\), halting along any branch upon encountering a leaf or a reticulation. If a leaf is found, \(r\) has a path to a leaf that does not pass through any reticulation. Thus, \(r\) is visible. If a reticulation \(r'\) is encountered along two distinct branches, \(r\) is visible from \(r'\) and is likewise removed. By the following lemma, this procedure correctly identifies all reticulations that can be removed.
Lemma 9. If a reticulation \(r\) is visible from another reticulation, then the BFS from \(r\) finds a leaf or finds a reticulation twice.
Proof. Assume for the sake of contradiction that the BFS does not discover any leaves and discovers every reticulation at most once. Then each branch of the BFS ends at a unique reticulation. Thus, for each of these reticulations there is a path from the root avoiding \(r\). This directly implies that every vertex below these reticulations has a path from the root avoiding \(r\) as well, and \(r\) cannot be visible from any other reticulation. ◻
After this filtering process, \(V_r\) contains those reticulations that are not yet visible from a leaf nor from another reticulation. Thus, we need to orient undetermined sides to make these reticulations visible from leaves attached to these sides. We reduce this to an instance of Matching on Bipartite Graphs.
Construction 1. Let \(U\) be the set of undetermined sides. We construct a bipartite graph \(H\) with vertex bipartitions \(V_r\) and \(U\), where \(r \in V_r\) is adjacent to \(\{u,v\} \in U\) if and only if \(r\) can reach \(u\) or \(v\) without passing through another reticulation.
A matching \(M\) of size \(|V_r|\) in \(H\) yields a valid orientation as follows: If \((r,\{u,v\}) \in M\), then without loss of generality, \(r\) has a path to \(u\) that does not pass through another reticulation. We choose the reticulation in \(P_{\{u,v\}}\) to be the neighbour of \(v\), which ensures that \(r\) is visible from the leaf attached to the neighbour of \(u\) in \(P_{\{u,v\}}\). For the undetermined sides not matched by \(M\), we place the reticulation on this side arbitrarily. As we show next, if there is no matching of size \(|V_r|\) in \(H\), then there is no reticulation-visible orientation consistent with the guessed placement of reticulations on vertices and sides of \(B_{\textrm{gen}}\).
Theorem 5 (\(\textcolor{red}{\bigstar}\)). Reticulation-Visible Orientation can be solved in \(\mathcal{O}(12.2071^\ell \cdot n^2)\) time.
Proof. Correctness. For each placement of the root, we consider all possible placements of reticulations within each blob \(B\). Thus, if there is a reticulation-visible orientation of \(B\) consistent with the guessed root, then it is consistent with one of the reticulation guesses we make. For this guess, the directed BFS correctly removes reticulations that are visible or become visible once another reticulation becomes visible, leaving only those reticulations that need to be made visible from undetermined sides. 1 ensures that \(r\) is adjacent to a side \(e\) in \(H\) if and only if \(r\) can reach an endpoint of \(e\) without passing through another reticulation. Since each undetermined side has a reticulation on it, only one endpoint of such a side is visible from a leaf attached to this side, that is, only one reticulation in \(V_r\) is visible from a leaf on this side. Thus, a valid orientation gives rise to a matching of \(H\) that matches all vertices in \(V_r\), and it is easy to verify that the converse also holds. ◻
Definition 7. A phylogenetic network is tree-sibling* if each reticulation has a sibling that is a tree-vertex, or equivalently, if one parent of each reticulation has a tree-child.*
First note that any reticulation we place on an undetermined side satisfies this condition, as this side is a \(2\)-side and the other internal vertex of the side becomes a tree-vertex that is a parent of the reticulation and whose other child is a leaf. Thus, we only need to concern ourselves with ensuring that every reticulation that is a generator vertex or an internal vertex of a \(1\)-side has a tree-sibling. We reduce this problem to 2-SAT. In this formulation, we associate a Boolean variable \(x_z\) with every internal vertex \(z\) of an undetermined side. This variable is true if we make \(z\) a tree vertex. Thus, for the two internal vertices \(y\) and \(z\) of each undetermined side, we impose the condition that \(x_y = \neg x_z\).
Now consider a reticulation \(r\) that is a generator vertex or an internal vertex of a \(1\)-side, and let \(u\) and \(w\) be its parents. Let \(u'\) be the other child of \(u\), and let \(w'\) be the other child of \(w\). If neither \(u'\) nor \(w'\) is an internal vertex of an undetermined side, then we can simply check whether one of them is a tree-vertex. Similarly, if, say, \(u'\) is an internal vertex of an undetermined side and \(w'\) is not, then \(r\) has a tree-sibling if \(w'\) is a tree-vertex. If \(w'\) is a reticulation, then we need to make \(u'\) a tree-vertex, which we ensure by adding the clause \(\{x_{u'}\}\) to the 2-SAT formula. If both \(u'\) and \(w'\) are on undetermined sides, then we need to make at least one of them a tree-vertex, which we ensure by adding the clause \(\{x_{u'}, x_{w'}\}\) to the 2-SAT formula.
Theorem 6 (\(\textcolor{red}{\bigstar}\)). Tree-Sibling Orientation can be solved in \(\mathcal{O}(12.2071^\ell \cdot n^2)\) time.
Proof. Correctness. We consider all possible placements of the root and all possible placements of reticulations within each blob \(B\). Thus, if there is a tree-sibling orientation of \(B\), then it is consistent with one of the guesses we make. For this guess, the 2-SAT formula encodes the condition that every reticulation that does not already have a tree-sibling based on the guesses we made has its tree-sibling on a neighbouring undetermined side. Thus, there exists a tree-sibling orientation if and only if this 2-SAT formula has a satisfying truth assignment. The translation of this truth assignment into the corresponding orientation is straightforward. ◻
As a final remark, we consider computing an orientation of minimum scanwidth, as defined in [17]. The scanwidth of a graph is completely determined by the placement of reticulations on vertices and sides of the generators of its blobs, independent of its exact position on a side, and scanwidth is blob-determined. Computing scanwidth takes \(\tilde{\mathcal{O}}(4^n)\) time for graphs of order \(n\). Since the generators of blobs have order at most \(2\ell - 2\) and contain up to \(\ell\) further vertices for reticulations on sides, computing the scanwidth resulting from each placement takes \(\tilde{\mathcal{O}}(4^{3\ell})\) time per blob. Accounting for global root guessing and summing over all blobs, the total time is \(\tilde{\mathcal{O}}((3125 / 256)^\ell \cdot 64^\ell \cdot n^2) = \tilde{\mathcal{O}}(781.25^\ell \cdot n^2)\), yielding the following theorem.
Theorem 7. For an undirected network \(\mathcal{U}\), an orientation of \(\mathcal{U}\) of minimum scanwidth can be computed in \(\tilde{\mathcal{O}}(781.25^\ell \cdot n^2)\) time.
In this paper, we have presented FPT algorithms for the orientation problem for several prominent phylogenetic network classes, improving upon state-of-the-art results by restricting what needs to be guessed to the generators of blobs instead of the blobs themselves. We believe our spanning-tree-based and reticulation-guessing approaches can extend to orient many other network classes. The following are questions worthy of future exploration:
While orienting into tree-child, orchard, and tree-based networks is -hard, -hardness for reticulation-visible, temporal, tree-sibling, or galled networks remains open.
Our approach for Tree-Child Orientation requires further branching once the spanning tree is known. Can the tree-child orientation problem be solved in polynomial time after guessing the spanning tree or can the running time at least be improved to \(\mathcal{O}^*(c^\ell)\) for \(c < 10\)?
Does \(\mathcal{C}\)-orientation admit an FPT algorithm when parameterized by the structure of the \(0\)-sides, noting that having many leaves on sides simplifies the problem?
Can we efficiently orient an undirected network while optimizing other biologically important features, such as parsimony or high compatibility with a given set of gene trees?