Copyright | (c) Stéphane Laurent 2024 |
---|---|

License | BSD-3-Clause |

Maintainer | laurent_step@outlook.fr |

Safe Haskell | Safe-Inferred |

Language | Haskell2010 |

Computes the exact Kantorovich distance between two finite probability measures. This assumes that the probability masses are rational numbers and that the distance function takes rational values only.

## Synopsis

- type RandomVariable a = Map a Rational
- type KantorovichValue = Rational
- type KantorovichSolution a b = RandomVariable (a, b)
- type KantorovichResult a b = (KantorovichValue, KantorovichSolution a b)
- kantorovich :: (Ord a, Ord b) => RandomVariable a -> RandomVariable b -> ((a, b) -> Rational) -> Bool -> IO (Maybe (KantorovichResult a b))
- prettyKantorovichSolution :: (Ord a, Ord b) => Maybe (KantorovichResult a b) -> String

# Documentation

type RandomVariable a = Map a Rational Source #

A random variable is defined as a map from a set to the set of rational numbers. It maps an element to its probability mass.

type KantorovichValue = Rational Source #

Type for the value of the Kantorovich distance.

type KantorovichSolution a b = RandomVariable (a, b) Source #

Type for the solution of the underlying linear programming problem used to compute the Kantorovich distance. The solution is a joining of the two random variables. It is then a random variable on the Cartesian product of the sets on which the two random variables are distributed.

type KantorovichResult a b = (KantorovichValue, KantorovichSolution a b) Source #

Type for the result of the `kantorovich`

function.

:: (Ord a, Ord b) | |

=> RandomVariable a | first random variable |

-> RandomVariable b | second random variable |

-> ((a, b) -> Rational) | distance function taking |

-> Bool | whether to print the details of the simplex algorithm to stdout |

-> IO (Maybe (KantorovichResult a b)) |

Kantorovich distance between two probability measures (random variables).

prettyKantorovichSolution Source #

:: (Ord a, Ord b) | |

=> Maybe (KantorovichResult a b) | an output of the |

-> String |

Prints the random variable representing the Kantorovich solution in the style of a matrix.