|
FRODO Version 2.19.1
An open-source framework for Distributed Constraint Optimization (DCOP)
|
The IntArrayWrapper is used as a key for (partial) assignments. More...

Public Member Functions | |
| IntArrayWrapper (int[] array) | |
| Constructor. | |
| IntArrayWrapper (int[] array, byte[] byteArray) | |
| Constructor. | |
| IntArrayWrapper (int size) | |
Constructor Constructs a new array of size size. | |
| void | setValue (int index, int value) |
| Sets the value in the array. | |
| int | getValue (int index) |
| String | toString () |
| void | extendArray (int newSize) |
| Given a new set of variables and values, this array is to be extended. | |
| IntArrayWrapper | addValues (int[] newValues, boolean[] changable, int newSize) |
| Given a set of new values, a new IntArrayWrapper is created. | |
| IntArrayWrapper | getPartialAssignment (boolean[] neededVariables, int size) |
Returns the partial assignment of the assignment stored in array. | |
| boolean | equals (Object o) |
| int | hashCode () |
| Uses the superFastHash() function to compute the hash. | |
| byte[] | intArrayToByteArray (int[] intArray) |
| Transforms an array of int into an array of byte. | |
| int | get16bits (byte[] d, int index) |
| Returns 16 bits stored in an int. | |
Protected Attributes | |
| int[] | array |
| the array representing the variable assignment | |
| byte[] | byteArray |
| the byte representation of array | |
| final boolean | change |
true when the array is to be changed, false otherwise | |
Private Member Functions | |
| int | superFastHash (byte[] data, int len) |
| Implementation of the Hsieh hash function, based on the following c-code by Paul Hsieh. | |
The IntArrayWrapper is used as a key for (partial) assignments.
The hash function used is a java implementation of the Hsieh hash function
| frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.IntArrayWrapper | ( | int[] | array | ) |
Constructor.
| array | the array to be stored. This array should be immutable |
Reimplemented in frodo2.algorithms.odpop.goodsTree.InnerNodeTree.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.
References array, change, and intArrayToByteArray().
Referenced by addValues(), equals(), and getPartialAssignment().

| frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.IntArrayWrapper | ( | int[] | array, |
| byte[] | byteArray ) |
Constructor.
| array | the array to be stored. This array should be immutable |
| byteArray | the byte representation of array |
Reimplemented in frodo2.algorithms.odpop.goodsTree.InnerNodeTree.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.
| frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.IntArrayWrapper | ( | int | size | ) |
Constructor Constructs a new array of size size.
| size | the size of the new array |
Reimplemented in frodo2.algorithms.odpop.goodsTree.InnerNodeTree.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.
References change.
| IntArrayWrapper frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.addValues | ( | int[] | newValues, |
| boolean[] | changable, | ||
| int | newSize ) |
Given a set of new values, a new IntArrayWrapper is created.
Note that there can be less new values than there are positions in the original array
| newValues | an array of new values |
| changable | array that stores which values can be changed |
| newSize | the size of the required array |
Reimplemented in frodo2.algorithms.odpop.goodsTree.InnerNodeTree.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.
References array, byteArray, and IntArrayWrapper().

| boolean frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.equals | ( | Object | o | ) |
References array, and IntArrayWrapper().

| void frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.extendArray | ( | int | newSize | ) |
| int frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.get16bits | ( | byte[] | d, |
| int | index ) |
Returns 16 bits stored in an int.
| d | the data |
| index | the index from which 16 bits must be got |
d starting at index Referenced by superFastHash().
| IntArrayWrapper frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.getPartialAssignment | ( | boolean[] | neededVariables, |
| int | size ) |
Returns the partial assignment of the assignment stored in array.
Only the positions that are true in neededVariables are used
| neededVariables | the variables in the partial assignment |
| size | the number of variables in the partial assignment |
Reimplemented in frodo2.algorithms.odpop.goodsTree.InnerNodeTree.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.
References array, byteArray, IntArrayWrapper(), and frodo2.algorithms.odpop.goodsTree.GoodsTree< Val extends Addable< Val >, U extends Addable< U >, L extends Node< U > >.numberOfVariables.
Referenced by frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.add(), frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.checkLeaf(), frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.createLeaf(), frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.createLeaf(), and frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.hasSupport().

| int frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.getValue | ( | int | index | ) |
| index | the position in the array whose value we want to know |
index References array.
| int frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.hashCode | ( | ) |
Uses the superFastHash() function to compute the hash.
References byteArray, and superFastHash().

| byte[] frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.intArrayToByteArray | ( | int[] | intArray | ) |
Transforms an array of int into an array of byte.
| intArray | the array of int |
References byteArray.
Referenced by IntArrayWrapper().
| void frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.setValue | ( | int | index, |
| int | value ) |
Sets the value in the array.
| index | the position in the array |
| value | the value to be placed |
References array, byteArray, and change.
Referenced by frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.addVariableToTree(), frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.createPathNoUB(), and frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.createPathWithUB().
|
private |
Implementation of the Hsieh hash function, based on the following c-code by Paul Hsieh.
unsigned int get16bits (unsigned char *d) {
return ((unsigned int) d[1] @iliteral < @endiliteral @iliteral < @endiliteral 8) + ((unsigned int) d[0]);
}
unsigned int SuperFastHash (char * data, int len) {
unsigned int hash = len, tmp;
int rem;
if (len @iliteral < @endiliteral = 0 || data == NULL) return 0;
rem = len @iliteral & @endiliteral 3;
len @iliteral > @endiliteral @iliteral > @endiliteral = 2;
// Main loop
for (;len @iliteral > @endiliteral 0; len--) {
hash += get16bits (data);
tmp = (get16bits (data+2) @iliteral < @endiliteral @iliteral < @endiliteral 11) ^ hash;
hash = (hash @iliteral < @endiliteral @iliteral < @endiliteral 16) ^ tmp;
data += 2*2;
hash += hash @iliteral > @endiliteral @iliteral > @endiliteral 11;
}
// Handle end cases
switch (rem) {
case 3: hash += get16bits (data);
hash ^= hash @iliteral < @endiliteral @iliteral < @endiliteral 16;
hash ^= data[2] @iliteral < @endiliteral @iliteral < @endiliteral 18;
hash += hash @iliteral > @endiliteral @iliteral > @endiliteral 11;
break;
case 2: hash += get16bits (data);
hash ^= hash @iliteral < @endiliteral @iliteral < @endiliteral 11;
hash += hash @iliteral > @endiliteral @iliteral > @endiliteral 17;
break;
case 1: hash += *data;
hash ^= hash @iliteral < @endiliteral @iliteral < @endiliteral 10;
hash += hash @iliteral > @endiliteral @iliteral > @endiliteral 1;
}
// Force "avalanching" of final 127 bits
hash ^= hash @iliteral < @endiliteral @iliteral < @endiliteral 3;
hash += hash @iliteral > @endiliteral @iliteral > @endiliteral 5;
hash ^= hash @iliteral < @endiliteral @iliteral < @endiliteral 4;
hash += hash @iliteral > @endiliteral @iliteral > @endiliteral 17;
hash ^= hash @iliteral < @endiliteral @iliteral < @endiliteral 25;
hash += hash @iliteral > @endiliteral @iliteral > @endiliteral 6;
return hash;
}
| data | the data to be hashed |
| len | the length of the array |
data References get16bits().
Referenced by hashCode().

| String frodo2.algorithms.odpop.goodsTree.InnerNodeTreeFullDomain.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.toString | ( | ) |
References array.
|
protected |
the array representing the variable assignment
Referenced by frodo2.algorithms.odpop.goodsTree.InnerNodeTree.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.addValues(), addValues(), equals(), extendArray(), frodo2.algorithms.odpop.goodsTree.InnerNodeTree.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.getPartialAssignment(), getPartialAssignment(), getValue(), frodo2.algorithms.odpop.goodsTree.InnerNodeTree.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.IntArrayWrapper(), frodo2.algorithms.odpop.goodsTree.InnerNodeTree.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.IntArrayWrapper(), IntArrayWrapper(), IntArrayWrapper(), setValue(), and toString().
|
protected |
the byte representation of array
Referenced by frodo2.algorithms.odpop.goodsTree.InnerNodeTree.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.addValues(), addValues(), extendArray(), frodo2.algorithms.odpop.goodsTree.InnerNodeTree.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.getPartialAssignment(), getPartialAssignment(), hashCode(), intArrayToByteArray(), frodo2.algorithms.odpop.goodsTree.InnerNodeTree.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.IntArrayWrapper(), IntArrayWrapper(), and setValue().
|
protected |
true when the array is to be changed, false otherwise
Referenced by IntArrayWrapper(), IntArrayWrapper(), IntArrayWrapper(), frodo2.algorithms.odpop.goodsTree.InnerNodeTree.InnerNodeTree< Val extends Addable< Val >, U extends Addable< U >, L extends LeafNode< U > >.IntArrayWrapper.setValue(), and setValue().