fgl-5.7.0.1: Martin Erwig's Functional Graph Library

Safe Haskell | Safe
Language | Haskell98

Data.Graph.Inductive.Query.SP

Description

Shortest path algorithms

Synopsis

- spTree :: (Graph gr, Real b) => Node -> gr a b -> LRTree b
- sp :: (Graph gr, Real b) => Node -> Node -> gr a b -> Maybe Path
- spLength :: (Graph gr, Real b) => Node -> Node -> gr a b -> Maybe b
- dijkstra :: (Graph gr, Real b) => Heap b (LPath b) -> gr a b -> LRTree b
- type LRTree a = [LPath a]
- data Heap a b

# Documentation

spTree :: (Graph gr, Real b) => Node -> gr a b -> LRTree b #

Tree of shortest paths from a certain node to the rest of the (reachable) nodes.

Corresponds to `dijkstra` applied to a heap in which the only known node is the starting node, with a path of length 0 leading to it.

The edge labels of type `b` are the edge weights; negative edge weights are not supported.

sp #

Arguments

:: (Graph gr, Real b) |
=> Node | Start
-> Node | Destination
-> gr a b |
-> Maybe Path |

Shortest path between two nodes, if any.

Returns `Nothing` if the destination is not reachable from the start node, and ``Just` path` otherwise.

The edge labels of type `b` are the edge weights; negative edge weights are not supported.

spLength #

Arguments

:: (Graph gr, Real b) |
=> Node | Start
-> Node | Destination
-> gr a b |
-> Maybe b |

Length of the shortest path between two nodes, if any.

Returns `Nothing` if there is no path, and ``Just` length` otherwise.

The edge labels of type `b` are the edge weights; negative edge weights are not supported.

dijkstra #

Arguments

:: (Graph gr, Real b) |
=> Heap b (LPath b) | Initial heap of known paths and their lengths.
-> gr a b |
-> LRTree b |

Dijkstra's shortest path algorithm.

The edge labels of type `b` are the edge weights; negative edge weights are not supported.

type LRTree a = [LPath a] #

data Heap a b #

Instances

(Eq a, Eq b) => Eq (Heap a b) # |
Instance details Defined in Data.Graph.Inductive.Internal.Heap Methods (==) :: Heap a b -> Heap a b -> Bool # (/=) :: Heap a b -> Heap a b -> Bool #
(Read a, Read b) => Read (Heap a b) # |
Instance details Defined in Data.Graph.Inductive.Internal.Heap Methods readsPrec :: Int -> ReadS (Heap a b) # readList :: ReadS [Heap a b] # readPrec :: ReadPrec (Heap a b) # readListPrec :: ReadPrec [Heap a b] #
(Show a, Show b) => Show (Heap a b) # |
Instance details Defined in Data.Graph.Inductive.Internal.Heap Methods showsPrec :: Int -> Heap a b -> ShowS # show :: Heap a b -> String # showList :: [Heap a b] -> ShowS #
(NFData a, NFData b) => NFData (Heap a b) # |
Instance details Defined in Data.Graph.Inductive.Internal.Heap Methods rnf :: Heap a b -> () #