4 package net
.kezvh
.collections
.graphs
.directed
;
6 import java
.util
.ArrayList
;
7 import java
.util
.Arrays
;
8 import java
.util
.Collections
;
11 import net
.kezvh
.collections
.CollectionsUtilities
;
12 import net
.kezvh
.collections
.DualMap
.DualMap
;
13 import net
.kezvh
.collections
.DualMap
.HashDualMap
;
14 import net
.kezvh
.functional
.Operations
;
19 public enum GraphWithEdgeValuesTemplate
{
24 EMPTY(new ArrayList
<Integer
>(), new HashDualMap
<Integer
, Integer
, Integer
>()),
27 * edges: all on [0..7], all on [8..15] (weight 1)
29 DISCONECTED(CollectionsUtilities
.range(0, 16, Operations
.INTEGER_INCREMENTER
), new HashDualMap
<Integer
, Integer
, Integer
>() {
31 for (int i
= 0; i
< 8; i
++)
32 for (int j
= 0; j
< 8; j
++)
35 for (int i
= 8; i
< 16; i
++)
36 for (int j
= 8; j
< 16; j
++)
42 * edges: all (weight 1)
44 COMPLETE(CollectionsUtilities
.range(0, 16, Operations
.INTEGER_INCREMENTER
), new HashDualMap
<Integer
, Integer
, Integer
>() {
46 for (int i
= 0; i
< 16; i
++)
47 for (int j
= 0; j
< 16; j
++)
54 * edges: [i => (i + 1) % 100] (weight 1)
56 CIRCULAR(CollectionsUtilities
.range(0, 100, Operations
.INTEGER_INCREMENTER
), new HashDualMap
<Integer
, Integer
, Integer
>() {
58 for (int i
= 0; i
< 100; i
++)
59 this.put(i
, (i
+ 1) % 100, 1);
64 * edges: [i => i + 1] (weight 1)
66 LINEAR(CollectionsUtilities
.range(0, 100, Operations
.INTEGER_INCREMENTER
), new HashDualMap
<Integer
, Integer
, Integer
>() {
68 for (int i
= 0; i
< 99; i
++)
69 this.put(i
, i
+ 1, 1);
74 * edges: [1 => 2] (weight 1)
76 SIMPLE(Arrays
.asList(1, 2), new HashDualMap
<Integer
, Integer
, Integer
>() {
85 TRIVIAL(Collections
.singletonList(1), new HashDualMap
<Integer
, Integer
, Integer
>()), ;
86 private final List
<Integer
> nodes
;
87 private final HashDualMap
<Integer
, Integer
, Integer
> edges
;
89 GraphWithEdgeValuesTemplate(final List
<Integer
> nodes
, final HashDualMap
<Integer
, Integer
, Integer
> edges
) {
94 List
<Integer
> getNodes() {
98 DualMap
<Integer
, Integer
, Integer
> getEdges() {