Commit Graph

171 Commits

Author SHA1 Message Date
J. Holmes
cb2511e4c8 encoding/dot: support edge ports on Unmarshal/decode 2018-04-16 14:31:32 +09:30
J. Holmes
b2e9df857d encoding/dot: fix ports on undirected graphs 2018-04-16 10:43:11 +09:30
Dan Kortschak
6b03bc22e1 graph: use int64 for node retrieval 2018-03-24 09:21:44 +10:30
Dan Kortschak
c0eb081727 mat: fix Exp function behaviour for large norms 2018-03-23 06:22:08 +10:30
Dan Kortschak
8d2aaa4a38 graph: fix undirected to directed copy behaviour 2018-02-22 20:03:33 +10:30
Dan Kortschak
4be2818757 gen: add multigraph power-law generators 2018-01-24 07:04:00 +10:30
kortschak
34369ddb26 multi: new package implementing multigraph API 2018-01-19 21:59:01 +10:30
kortschak
07dfa0c90e graph/simple: fix documentation 2018-01-19 21:59:01 +10:30
kortschak
9806de04c7 graph: factor id handling out to internal package uid 2018-01-19 21:59:01 +10:30
kortschak
87056319dc simple: fix nil edge returns
Also clean up code formatting for consistency.
2018-01-02 20:13:10 +10:30
kortschak
b52122b771 graph: remove out-of-date documentation 2017-12-22 18:31:36 +10:30
kortschak
5e16688f6d graph: address PR comments 2017-12-14 21:03:19 +10:30
kortschak
806337db32 graph: address PR comments and fix return type 2017-12-14 21:03:19 +10:30
kortschak
664132a63e graph: define multigraph API 2017-12-14 21:03:19 +10:30
kortschak
299547a6f4 Revert "graph: change Edge interface to include ID method"
This reverts commit 1a83fdba7a.

Further design discussion leads to a better approach with an additional
edge-type interface.
2017-12-14 08:24:55 +10:30
kortschak
1a83fdba7a graph: change Edge interface to include ID method
This is to allow future handling of multigraphs.
2017-12-11 08:06:56 +10:30
kortschak
de75875b14 graph/topo: add 2-sat example 2017-11-28 06:46:55 +10:30
Dan Kortschak
0777e22537 graph/network: add heat diffusion propagation functions 2017-11-25 06:48:06 +10:30
kortschak
54a5f6f081 all: fix build and make tests pass with new streams 2017-11-17 12:38:53 +10:30
kortschak
fa0c5aa7bc all: use golang.org/x/exp/rand instead of math/rand 2017-11-17 11:52:34 +10:30
kortschak
805531d142 all: change capitalization of gonum in license header 2017-11-02 06:54:08 +10:30
kortschak
21d5891471 all: remove go1.7 build constraints 2017-10-27 13:48:47 +10:30
Robin Eklind
f786e6cd3c graph/encoding/dot: store graph DOT ID if present (#237)
Add round trip test case for graph DOT ID.
2017-09-28 10:02:53 +02:00
kortschak
db6d01ed81 graph/topo: rename VertexOrdering => DegeneracyOrdering 2017-09-20 07:32:35 +09:30
kortschak
f818f8f7a9 graph/path: allow Shortest to traverse negative cycles
Also add checks for cases where negative cycles exist but are not marked
to protect against future shortest path function additions.
2017-09-15 08:17:25 +09:30
kortschak
e6a5ea56fd graph/topo: use degeneracyOrdering instead of VertexOrdering for BronKerbosch 2017-09-15 07:05:29 +09:30
kortschak
c86b60857a graph/topo: fix error reporting for VertexOrdering test 2017-09-15 07:05:29 +09:30
kortschak
8b33e669be graph/topo: add function to find k-core of undirected graph 2017-09-15 07:05:29 +09:30
kortschak
a18d79f600 graph/{internal,path,topo}: factor reverse function out into internal 2017-09-15 07:05:29 +09:30
kortschak
1b3b29f16b graph/path: implement sophisticated algorithm
Both algorithms are included since the LTA appears to beat the SLTA for
all normal uses, but the SLTA beats the LTA for very large dense graphs.

Leave tools in the benchmark code to allow users to determine which one
they want to use for their data.
2017-09-12 09:50:52 +09:30
kortschak
9baf9959f7 graph/path: add benchmarks for Dominators
The initial test cases are from Robin Eklind's decomp project, the DOT
files were generated using his instructions:

    git clone https://github.com/decomp/testdata
    go get github.com/decomp/decomp/cmd/ll2dot
    cd testdata/pathological/testdata
    ll2dot *.ll
2017-09-12 09:50:52 +09:30
kortschak
c2e0c99d23 graph/path: replace map and slice index chasing with pointer chasing 2017-09-12 09:50:52 +09:30
kortschak
fbd569ccc4 Revert "graph/path: replace recursive dfs with iterative implementation"
This reverts commit 4c195282fab50c627add36d97e58caded3e85742.

The iterative dfs looks like it will be more convoluted when the arrays
are removed into a Lengauer & Tarjan node holding each graph.Node's
details.

Leaving the change in the tree to help figure out an iterative
implementation later if needed.
2017-09-12 09:50:52 +09:30
kortschak
bff6fc28f1 graph/path: add dominator tree API 2017-09-12 09:50:52 +09:30
kortschak
4cdef9a92e graph/path: replace recursive dfs with iterative implementation 2017-09-12 09:50:52 +09:30
kortschak
5817a3ce4a graph/path: replace Dominators with naive Lengauer and Tarjan
Much of the sparse ID mapping can be condensed into slice storage, but
this provides a sane starting point.
2017-09-12 09:50:52 +09:30
kortschak
e066e3d02f graph/community: add k-clique community function 2017-09-09 07:35:47 +09:30
kortschak
573ca5d6ce graph/topo: add clique graph construction function 2017-09-09 07:35:47 +09:30
kortschak
acd06c4949 graph/path: revise spanning tree signatures and behaviours 2017-08-24 10:21:20 +09:30
kortschak
f739fbf133 graph/simple: separate weighted and unweighted edge implementations 2017-08-24 10:21:20 +09:30
kortschak
7ba61f0ead graph/...: remove Weight method from Edge 2017-08-24 10:21:15 +09:30
kortschak
ffa13e8edb graph,graph/{community,network,path}: rename WeightedGraph => Weighted 2017-08-24 10:21:15 +09:30
kortschak
715b695621 graph,graph/{network,path}: remove Weighter interface 2017-08-24 10:21:15 +09:30
kortschak
8508095a22 graph,graph/{community,path}: use weighted graph types 2017-08-24 10:21:15 +09:30
kortschak
a0c93557a5 graph,graph/simple: add weighted graph interfaces and implementations 2017-08-24 10:21:06 +09:30
kortschak
267e698edc graph/graphs/gen: use EdgeAdder for duplication graph 2017-08-21 08:42:15 +09:30
Robin Eklind
a6329c40df Merge pull request #200 from mewpull/new-edge
graph: move NewEdge method from encoding.Builder to graph.EdgeAdder
2017-08-20 23:41:36 +02:00
mewmew
0ebdd59ba5 graph: move NewEdge method from encoding.Builder to graph.EdgeAdder
Also rename graph.EdgeSetter to graph.EdgeAdder.

Fixes #56.
2017-08-18 03:51:30 +02:00
mewmew
7e53ef2fae all: use fixdocs tool to store package documentation in doc.go
Add copyright header to doc.go

Keep original comment style (e.g. line comments and block comments).

Fix doc comments containing multiple line comments.

Remove vanity imports from all files except doc.go.

Fixes #12.

The source code of fixdocs is located at:
https://play.golang.org/p/7RtYLzldsO
2017-08-16 14:26:00 +02:00
mewmew
ac48587c92 Revert "all: use fixdocs tool to store package documentation in doc.go"
This reverts commit b2982a3e50.
2017-08-16 14:21:05 +02:00