-
Notifications
You must be signed in to change notification settings - Fork 6
/
README.Rmd
79 lines (48 loc) · 2.16 KB
/
README.Rmd
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
70
71
72
73
74
75
76
77
78
79
---
output: rmarkdown::github_document
---
# saucy
Fast Symmetry Discovery Tool for Sparse Graphs
## Description
Many computational tools have recently begun to benefit from the use of the symmetry inherent in the tasks they solve, and use general-purpose graph symmetry tools to uncover this symmetry. Common applications include organic chemistry, constraint solvers, logistics, optimization, bio-informatics, and finite group theory. However, older symmetry-finding tools often suffer quadratic runtime (or worse!) in the number of symmetries explicitly returned and are therefore of limited use on very large, sparse, symmetric graphs. Over the last 10+ years, we developed a symmetry-discovery algorithm which exploits the sparsity present not only in the input but also the output, i.e., the symmetry generators themselves. By avoiding quadratic runtime on large graphs, it improved state-of-the-art runtimes from several days to less than a second. Recent improvements to our algorithm include additional pruning that quickly solves the hard Miyazaki graphs.
## NOTE
I just wrapped code. http://vlsicad.eecs.umich.edu/BK/SAUCY for orig ref. The following are the authors of the core C "library":
* Paul T. Darga <pdarga@umich.edu>
* Mark Liffiton <liffiton@umich.edu>
* Hadi Katebi <hadik@eecs.umich.edu>
## What's Inside The Tin
The following functions are implemented:
- `saucy`: Searching for Automorphisms in Underlying CNF, yes?
- `shatter`: Identifies Symmetries in CNF Instances
## Installation
```{r eval=FALSE}
devtools::install_github("hrbrmstr/saucy")
```
```{r message=FALSE, warning=FALSE, error=FALSE, include=FALSE}
options(width=120)
```
## Usage
```{r message=FALSE, warning=FALSE, error=FALSE}
library(saucy)
# current verison
packageVersion("saucy")
```
### Saucy
Graph 1 (from example files)
```{r}
graph1 <- saucy::saucy(system.file("extdata", "graphfile", package="saucy"))
graph1
str(graph1)
```
Graph 2 (from example files)
```{r}
graph2 <- saucy::saucy(system.file("extdata", "graphfile2", package="saucy"))
graph2
str(graph2)
```
### Shatter
```{r}
s1 <- saucy::shatter(system.file("extdata", "battleship.cnf", package="saucy"))
s1
str(s1)
```