1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/eulerian.R
\name{has_eulerian_path}
\alias{has_eulerian_path}
\alias{has_eulerian_cycle}
\alias{eulerian_path}
\alias{eulerian_cycle}
\title{Find Eulerian paths or cycles in a graph}
\usage{
has_eulerian_path(graph)
has_eulerian_cycle(graph)
eulerian_path(graph)
eulerian_cycle(graph)
}
\arguments{
\item{graph}{An igraph graph object}
}
\value{
For \code{has_eulerian_path()} and \code{has_eulerian_cycle()}, a logical
value that indicates whether the graph contains an Eulerian path or cycle.
For \code{eulerian_path()} and \code{eulerian_cycle()}, a named list with two
entries: \item{epath}{A vector containing the edge ids along the Eulerian
path or cycle.} \item{vpath}{A vector containing the vertex ids along the
Eulerian path or cycle.}
}
\description{
\code{has_eulerian_path()} and \code{has_eulerian_cycle()} checks whether there
is an Eulerian path or cycle in the input graph. \code{eulerian_path()} and
\code{eulerian_cycle()} return such a path or cycle if it exists, and throws
an error otherwise.
}
\details{
\code{has_eulerian_path()} decides whether the input graph has an Eulerian
\emph{path}, i.e. a path that passes through every edge of the graph exactly
once, and returns a logical value as a result. \code{eulerian_path()} returns
a possible Eulerian path, described with its edge and vertex sequence, or
throws an error if no such path exists.
\code{has_eulerian_cycle()} decides whether the input graph has an Eulerian
\emph{cycle}, i.e. a path that passes through every edge of the graph exactly
once and that returns to its starting point, and returns a logical value as
a result. \code{eulerian_cycle()} returns a possible Eulerian cycle, described
with its edge and vertex sequence, or throws an error if no such cycle exists.
}
\examples{
g <- make_graph(~ A - B - C - D - E - A - F - D - B - F - E)
has_eulerian_path(g)
eulerian_path(g)
has_eulerian_cycle(g)
try(eulerian_cycle(g))
}
\seealso{
Graph cycles
\code{\link{feedback_arc_set}()},
\code{\link{girth}()},
\code{\link{is_acyclic}()},
\code{\link{is_dag}()}
}
\concept{cycles}
\keyword{graphs}
\section{Related documentation in the C library}{\href{https://igraph.org/c/html/latest/igraph-Cycles.html#igraph_is_eulerian}{\code{igraph_is_eulerian()}}, \href{https://igraph.org/c/html/latest/igraph-Cycles.html#igraph_eulerian_path}{\code{igraph_eulerian_path()}}, \href{https://igraph.org/c/html/latest/igraph-Cycles.html#igraph_eulerian_cycle}{\code{igraph_eulerian_cycle()}}.}
|