# Bipolar orientation

In graph theory, a bipolar orientation or st-orientation of an undirected graph is an assignment of a direction to each edge (an orientation) that causes the graph to become a directed acyclic graph with a single source s and a single sink t, and an st-numbering of the graph is a topological ordering of the resulting directed acyclic graph.

## Definitions and existence

Let G = (V,E) be an undirected graph with n = |V| vertices. An orientation of G is an assignment of a direction to each edge of G, making it into a directed graph. It is an acyclic orientation if the resulting directed graph has no directed cycles. Every acyclically oriented graph has at least one source (a vertex with no incoming edges) and at least one sink (a vertex with no outgoing edges); it is a bipolar orientation if it has exactly one source and exactly one sink. In some situations, G may be given together with two designated vertices s and t; in this case, a bipolar orientation for s and t must have s as its unique source and t as its unique sink.
An st-numbering of G (again, with two designated vertices s and t) is an assignment of the integers from 1 to n to the vertices of G, such that
* each vertex is assigned a distinct number,
* s is assigned the number 1,
* t is assigned the number n, and
* if a vertex v is assigned the number i with 1 < i < n, then at least one neighbor of v is assigned a smaller number than i and at least one neighbor of v is assigned a larger number than i.
A graph has a bipolar orientation if and only if it has an st-numbering. For, if it has a bipolar orientation, then an st-numbering may be constructed by finding a topological ordering of the directed acyclic graph given by the orientation, and numbering each vertex by its position in the ordering. In the other direction, every st-numbering gives rise to a topological ordering, in which each edge of G is oriented from its lower-numbered endpoint to its higher-numbered endpoint. In a graph containing edge st, an orientation is bipolar if and only if it is acyclic and the orientation formed by reversing edge st is totally cyclic.
A connected graph G, with designated vertices s and t, has a bipolar orientation and an st-numbering if and only if the graph formed from G by adding an edge from s to t is 2-vertex-connected. In one direction, if this graph is 2-vertex-connected, then a bipolar orientation may be obtained by consistently orienting each ear in an ear decomposition of the graph. In the other direction, if the graph is not 2-vertex-connected, then it has an articulation vertex v separating some biconnected component of G from s and t. If this component contains a vertex with a lower number than v, then the lowest-numbered vertex in the component cannot have a lower-numbered neighbor, and symmetrically if it contains a vertex with a higher number than v then the highest-numbered vertex in the component cannot have a higher-numbered neighbor.

## Applications to planarity

Lempel, Even & Cederbaum (1967) formulated st-numberings as part of a planarity testing algorithm, and Rosenstiehl & Tarjan (1986) formulated bipolar orientations as part of an algorithm for constructing tessellation representations of planar graphs.
A bipolar orientation of a planar graph results in an st-planar graph, a directed acyclic planar graph with one source and one sink. These graphs are of some importance in lattice theory as well as in graph drawing: the Hasse diagram of a two-dimensional lattice is necessarily st-planar, and every transitively reduced st-planar graph represents a two-dimensional lattice in this way. A directed acyclic graph G has an upward planar drawing if and only if G is a subgraph of an st-planar graph.

## Algorithms

It is possible to find an st-numbering, and a bipolar orientation, of a given graph with designated vertices s and t, in linear time using depth-first search. The algorithm of Tarjan (1986) uses a depth-first search that starts at vertex s and first traverses edge st. As in the depth-first-search based algorithm for testing whether a graph is biconnected, this algorithm defines pre(v), for a vertex v, to be the preorder number of v in the depth-first traversal, and low(v) to be the smallest preorder number that can be reached by following a single edge from a descendant of v in the depth-first search tree. Both of these numbers may be computed in linear time as part of the depth-first search. The given graph will be biconnected (and will have a bipolar orientation) if and only if t is the only child of s in the depth-first search tree and low(v) < pre(v) for all vertices v other than s. Once these numbers have been computed, Tarjan's algorithm performs a second traversal of the depth-first search tree, maintaining a number sign(v) for each vertex v and a linked list of vertices that will eventually list all vertices of the graph in the order given by an st-numbering. Initially, the list contains s and t, and sign(s) = −1. When each vertex v is first encountered by this second traversal, v is inserted into the list, either before or after its parent p(v) in the depth-first search tree according to whether sign(low(v)) is negative or positive respectively; then sign(p(v)) is set to −sign(low(v)). As Tarjan shows, the vertex ordering resulting from this procedure gives an st-numbering of the given graph.
Alternatively, efficient sequential and parallel algorithms may be based on ear decomposition. While the DFS-based algorithms above depend inherently on the special open ear decomposition caused by the underlying DFS-tree, the open ear decomposition here may be arbitrary. This more general approach is actually used by several applications, e.g. for computing (edge-)independent spanning trees. An open ear decomposition exists if and only if the graph formed from the given graph by adding an edge st is biconnected (the same condition as the existence of a bipolar orientation), and it can be found in linear time. An st-orientation (and thus also an st-numbering) may be obtained easily by directing each ear in a consistent direction, taking care that if there already exists a directed path connecting the same two endpoints among the edges of previous ears then the new ear must be oriented in the same direction. However, despite the simplicity of this folklore approach, obtaining a linear running time is more involved. Whenever an ear is added, the endpoints of this ear must be checked on reachability, or, equivalently for the st-numbering, which vertex comes first in the preliminary st-numbering before. This obstacle can be solved in worst-case constant time by using the (somewhat involved) order data structure, or by more direct methods. Maon, Schieber & Vishkin (1986) provide a complicated but localized search procedure for determining an appropriate orientation for each ear that (unlike the approach using depth-first search) is suitable for parallel computation.
A modern and simple algorithm that computes st-numberings and -orientations in linear time is given in. The idea of this algorithm is to replace the order data structure by an easy numbering scheme, in which vertices carry intervals instead of st-numbers.
Papamanthou & Tollis (2006) report on algorithms for controlling the lengths of the directed paths in a bipolar orientation of a given graph, which in turn leads to some control over the width and height of certain types of graph drawing.

## The space of all orientations

For 3-vertex-connected graphs, with designated vertices s and t, any two bipolar orientations may be connected to each other by a sequence of operations that reverse one edge at a time, at each step maintaining a bipolar orientation. More strongly, for planar 3-connected graphs, the set of bipolar orientations can be given the structure of a finite distributive lattice, with the edge-reversal operation corresponding to the covering relation of the lattice. For any graph with designated source and sink, the set of all bipolar orientations may be listed in polynomial time per orientation.

## st-edge-numberings and -orientations

One may construct an ordering that is similar to st-numberings by numbering edges instead of vertices. This is equivalent to st-numbering the line graph of the input graph. Although constructing the line-graph explicitly would take quadratic time, linear-time algorithms for computing an st-edge-numbering and st-edge-orientation of a graph are known.