Title: | Partial Orders and Relations |
---|---|
Description: | Finds equivalence classes corresponding to a symmetric relation or undirected graph. Finds total order consistent with partial order or directed graph (so-called topological sort). |
Authors: | Charles J. Geyer <[email protected]>. |
Maintainer: | Charles J. Geyer <[email protected]> |
License: | MIT + file LICENSE |
Version: | 0.3-2 |
Built: | 2025-02-04 03:22:37 UTC |
Source: | https://github.com/cran/pooh |
Find One Total Order Consistent with Partial Order or With Directed Acyclic Graph
tsort(from, to, domain, strict = TRUE)
tsort(from, to, domain, strict = TRUE)
from |
an atomic vector |
to |
an atomic vector of the same mode and length as |
domain |
an atomic vector of the same mode as |
strict |
logical. If |
Pairs (from[i], to[i])
can be though of either as elements of
a relation on a set or as edges in a directed graph.
This function finds one total order on the domain (nodes of the graph)
that is consistent with the relation (graph) if one exists (that is if the
graph is directed).
A vector that is a reordering of domain
so that every element of
from
appears in the value before the corresponding element of to
.
Throws an error if there is no consistent total order (the graph has a cycle).
from <- LETTERS[c(1, 1, 1, 1, 2, 2, 6)] to <- LETTERS[c(2, 3, 4, 5, 3, 5, 7)] from to tsort(from, to)
from <- LETTERS[c(1, 1, 1, 1, 2, 2, 6)] to <- LETTERS[c(2, 3, 4, 5, 3, 5, 7)] from to tsort(from, to)
Calculates Equivalence Classes
weak(from, to, domain, markers = FALSE)
weak(from, to, domain, markers = FALSE)
from |
an atomic vector |
to |
an atomic vector of the same mode and length as |
domain |
an atomic vector of the same mode as |
markers |
controls the type of result; see Values below. |
Pairs (from[i], to[i])
can be though of either as elements of
a symmetric relation on a set or as edges in an undirected graph.
This function calculates the equivalence classes of the transitive
closure of the relation or the components of the graph. If the edges
are thought of as directed, then we calculate the weak components,
meaning the components of the associated undirected graph, rather than
the so-called strong components of the directed graph.
If markers = FALSE
,
a list, elements of which are the components (equivalence classes).
If markers = TRUE
, an integer vector of the same length as
domain
or as union(from, to)
if domain
is missing,
elements of which are the same if and only if the corresponding elements
of the domain (nodes of the graph) are in the same connected component
(equivalence class).
to <- sample(1:100, 75, replace = TRUE) from <- sample(1:100, 75, replace = TRUE) out <- weak(from, to) sapply(out, length)
to <- sample(1:100, 75, replace = TRUE) from <- sample(1:100, 75, replace = TRUE) out <- weak(from, to) sapply(out, length)