An implementation of the Similarity-First Search algorithm (SFS), a combinatorial algorithm which can be used to solve the seriation problem and to recognize some structured weighted graphs. The SFS algorithm represents a generalization to weighted graphs of the graph search algorithm Lexicographic Breadth-First Search (Lex-BFS), a variant of Breadth-First Search. The SFS algorithm reduces to Lex-BFS when applied to binary matrices (or, equivalently, unweighted graphs). Hence this library can be also considered for Lex-BFS applications such as recognition of graph classes like chordal or unit interval graphs. In fact, the SFS seriation algorithm implemented in this package is a multisweep algorithm, which consists in repeating a finite number of SFS iterations (at most n sweeps for a matrix of size n). If the data matrix has a Robinsonian structure, then the ranking returned by the multistep SFS algorithm is a Robinson ordering of the input matrix. Otherwise the algorithm can be used as a heuristic to return a ranking partially satisfying the Robinson property.
Documentation is available for the R functions
Development is happening on http://github.com:seminaro/SFS.git.
SFS is available on CRAN, at https://cran.r-project.org/package=SFS
If you change any interface wrapping C++ code for R, regenerate the wrapper code by
R> library(Rcpp)R> compileAttributes()
and if you change the set of exported functions (or import from other packages)
R> library(devtools)R> devtools::document("../SFS")
To prepare a CRAN upload, do
R> library(devtools)R> devtools::check("../SFS")
and also consider uploading to https://win-builder.r-project.org/upload.aspx to see if the code works on Windows.