4 package net
.kezvh
.collections
.graphs
.directed
;
6 import java
.util
.Collections
;
7 import java
.util
.HashMap
;
11 import net
.kezvh
.collections
.IntegerRange
;
12 import net
.kezvh
.collections
.DualMap
.DualMap
;
13 import net
.kezvh
.collections
.DualMap
.HashDualMap
;
14 import net
.kezvh
.collections
.views
.MapAsView
;
15 import net
.kezvh
.functional
.Operations
;
16 import net
.kezvh
.functional
.lambda
.L1
;
22 public enum GraphWithValuesTemplate
{
26 EMPTY_GRAPH(new HashMap
<Integer
, Integer
>(), new HashDualMap
<Integer
, Integer
, Integer
>()),
30 DISCONECTED_GRAPH(new IntegerRange(0, 16), new HashDualMap
<Integer
, Integer
, Integer
>() {
32 for (int i
= 0; i
< 8; i
++)
33 for (int j
= 0; j
< 8; j
++)
36 for (int i
= 8; i
< 16; i
++)
37 for (int j
= 8; j
< 16; j
++)
44 COMPLETE_GRAPH(new IntegerRange(0, 16), new HashDualMap
<Integer
, Integer
, Integer
>() {
46 for (int i
= 0; i
< 16; i
++)
47 for (int j
= 0; j
< 16; j
++)
54 CIRCULAR_GRAPH(new IntegerRange(0, 100), new HashDualMap
<Integer
, Integer
, Integer
>() {
56 for (int i
= 0; i
< 100; i
++)
57 this.put(i
, (i
+ 1) % 100, 1);
63 LINEAR_GRAPH(new IntegerRange(0, 100), new HashDualMap
<Integer
, Integer
, Integer
>() {
65 for (int i
= 0; i
< 99; i
++)
66 this.put(i
, i
+ 1, 1);
72 SIMPLE_GRAPH(new IntegerRange(1, 2), new HashDualMap
<Integer
, Integer
, Integer
>() {
80 TRIVIAL_GRAPH(Collections
.singleton(1), new HashDualMap
<Integer
, Integer
, Integer
>()), ;
81 private final Map
<Integer
, Integer
> nodes
;
82 private final HashDualMap
<Integer
, Integer
, Integer
> edges
;
83 private final L1
<Integer
, Integer
> identityOpOnIntegers
= Operations
.identity();
85 GraphWithValuesTemplate(final Set
<Integer
> numbers
, final HashDualMap
<Integer
, Integer
, Integer
> edges
) {
86 this.nodes
= new MapAsView
<Integer
, Integer
>(numbers
, this.identityOpOnIntegers
, this.identityOpOnIntegers
);
90 GraphWithValuesTemplate(final Map
<Integer
, Integer
> nodes
, final HashDualMap
<Integer
, Integer
, Integer
> edges
) {
95 Map
<Integer
, Integer
> getNodes() {
99 DualMap
<Integer
, Integer
, Integer
> getEdges() {