% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/Distance.R
\name{bottleneck_distance}
\alias{bottleneck_distance}
\title{Bottleneck distance between two persistence diagrams}
\usage{
bottleneck_distance(df1, df2, dimension = 0, ground = c("Linf", "L2"))
}
\arguments{
\item{df1, df2}{Persistence diagram data frames with columns \code{dim},
\code{birth}, \code{death}.}

\item{dimension}{Homological dimension to compare.}

\item{ground}{Ground metric on the birth-death plane: \code{"L2"} or
\code{"Linf"} (Chebyshev, the convention used by the reference above;
default).}
}
\value{
A single non-negative number, the bottleneck distance.
}
\description{
The bottleneck distance between the points of two persistence diagrams in
a given homological dimension, allowing points to be matched to the
diagonal: the infimum, over all matchings, of the largest single
point-to-point distance (Cohen-Steiner, Edelsbrunner and Harer (2007),
"Stability of Persistence Diagrams") - the \eqn{p \to \infty} limit of
\code{\link{wasserstein_distance}}. Essential (death = \code{Inf})
classes are kept rather than dropped - see
\code{\link{wasserstein_distance}}'s Details for why and how. Computed
exactly by binary search over the (finitely many) candidate distance
values for the smallest one admitting a perfect matching, checked with a
standard augmenting-path bipartite matcher, on the same augmented
assignment problem \code{\link{wasserstein_distance}} uses (see
\code{\link{augmented_cost_matrix}}).
}
\examples{
df1 <- data.frame(dim = c(0, 0), birth = c(0, 0), death = c(1, 2))
df2 <- data.frame(dim = c(0, 0), birth = c(0, 0), death = c(1, 3))
bottleneck_distance(df1, df2, dimension = 0)
}
