Constructs weight decreasing hamiltonian paths
whpaths.Rd
Returns a modified version of paths
, where
component paths/cycles are re-oriented so low weight edges occur first, and the component paths/cycles are then permuted so low-weight paths are first.
Usage
weighted_hpaths(d, path1 = NULL, paths=NULL, matrix=TRUE, cycle=NULL,
path_weight=sum, path_dir = path_cor,...)
Arguments
- d
A
dist
, used to provide edge weights.- path1
A vector giving a hamiltonian. This will be the first path of the returned hamiltonian. The default is obtained from
order_tsp
.- paths
A matrix where each row is a hamiltonian. Default comes from
hpaths
.- matrix
if
TRUE
, returns a matrix where each row is a hamiltonian path, otherwise concatenates the rows into a vector. For oddn
, the starting node is appended to close the eulerian.- cycle
If
TRUE
, theweighted_hpaths
algorithm evaluatespath_weight
on hamiltonian cycles, ifFALSE
, on open hamiltonian paths. Default isTRUE
for odd n andFALSE
for evenn
.- path_weight
A function used combine path weights into a single value. Default function is
path_cor
.- path_dir
A function used to evaluate a path start and orientation.
- ...
passed to
path_weight
Details
If path
is not provided, find the hamiltonian (path for even n, cycle for odd n) with the smallest total
weight. Applying path_dir
to edge weights, pick the starting and point orientation for path1 giving the largest path_dir
value. (For open paths, there are only two possible starts, for cycles there are n).
Apply this node labelling to the hamiltonians in the rows of paths.
Use criterion path_dir
again to find the best orientation for each of rows 2... of paths and
permute these rows in order of increasing path_weight
.
References
see overview