networkx.algorithms.dag.dag_longest_path

dag_longest_path(G, weight='weight', default_weight=1, topo_order=None)[source]

Returns the longest path in a directed acyclic graph (DAG).

If G has edges with weight attribute the edge data are used as weight values.

Parameters
GNetworkX DiGraph

A directed acyclic graph (DAG)

weightstr, optional

Edge data key to use for weight

default_weightint, optional

The weight of edges that do not have a weight attribute

topo_order: list or tuple, optional

A topological order for G (if None, the function will compute one)

Returns
list

Longest path

Raises
NetworkXNotImplemented

If G is not directed

Examples

>>> DG = nx.DiGraph([(0, 1, {'cost':1}), (1, 2, {'cost':1}), (0, 2, {'cost':42})])
>>> list(nx.all_simple_paths(DG, 0, 2))
[[0, 1, 2], [0, 2]]
>>> nx.dag_longest_path(DG)
[0, 1, 2]
>>> nx.dag_longest_path(DG, weight="cost")
[0, 2]