Package net.sf.tweety.commons.util
Class RandomSubsetIterator<T>
- java.lang.Object
-
- net.sf.tweety.commons.util.SubsetIterator<T>
-
- net.sf.tweety.commons.util.RandomSubsetIterator<T>
-
- Type Parameters:
T- The element class which is iterated.
- All Implemented Interfaces:
java.util.Iterator<java.util.Set<T>>
public class RandomSubsetIterator<T> extends SubsetIterator<T>
Iterates over all subsets of a given sets in a random order.- Author:
- Matthias Thimm
-
-
Field Summary
Fields Modifier and Type Field Description private doubleallSubsetsOnly used when avoidDuplicats is set to true.private booleanavoidDuplicatesWhether to avoid duplicates in the iteration.private longgeneratedSubsetsOnly used when avoidDuplicats is set to true.private java.util.RandomrandomThe random number generator.private java.util.List<T>setThe set over which subsets are iterated.private booleanswitchedOnly used when avoidDuplicats is set to true.private java.util.Set<java.util.BitSet>tempOnly used when avoidDuplicats is set to true.
-
Constructor Summary
Constructors Constructor Description RandomSubsetIterator(java.util.Set<T> set, boolean avoidDuplicates)Creates a new subset iterator for the given set.
-
Method Summary
Modifier and Type Method Description private java.util.BitSetgenerate(int length, boolean checkForDuplicates)Generates a new bit set of the given length.private java.util.BitSetgenerateRandomly(int length)Generates a random bit set of the given length.booleanhasNext()private voidincrement(java.util.BitSet bitSet)Increments the given bit setjava.util.Set<T>next()-
Methods inherited from class net.sf.tweety.commons.util.SubsetIterator
getSet, remove
-
-
-
-
Field Detail
-
set
private java.util.List<T> set
The set over which subsets are iterated.
-
avoidDuplicates
private boolean avoidDuplicates
Whether to avoid duplicates in the iteration.
-
random
private java.util.Random random
The random number generator.
-
temp
private java.util.Set<java.util.BitSet> temp
Only used when avoidDuplicats is set to true. Then this set contains all (representations of) subsets already generated (if those are less than half the number of all subsets) or the subsets not generated yet (otherwise).
-
generatedSubsets
private long generatedSubsets
Only used when avoidDuplicats is set to true. The number of already generated subsets.
-
allSubsets
private double allSubsets
Only used when avoidDuplicats is set to true. The number of all subsets.
-
switched
private boolean switched
Only used when avoidDuplicats is set to true. Whether the mode of using this.temp has been switched.
-
-
Constructor Detail
-
RandomSubsetIterator
public RandomSubsetIterator(java.util.Set<T> set, boolean avoidDuplicates)
Creates a new subset iterator for the given set.- Parameters:
set- some set.avoidDuplicates- whether to avoid duplicates in the iteration. NOTE: setting this value to true might increase computation time and needed space drastically.
-
-
Method Detail
-
hasNext
public boolean hasNext()
- Specified by:
hasNextin interfacejava.util.Iterator<T>- Specified by:
hasNextin classSubsetIterator<T>
-
next
public java.util.Set<T> next()
- Specified by:
nextin interfacejava.util.Iterator<T>- Specified by:
nextin classSubsetIterator<T>
-
increment
private void increment(java.util.BitSet bitSet)
Increments the given bit set- Parameters:
bitSet- some bit set.
-
generate
private java.util.BitSet generate(int length, boolean checkForDuplicates)Generates a new bit set of the given length. If checkForDuplicates is true then the all bit sets in this.temp are regarded as already being generated and the new one will be different from all of those. Furthermore, the new bit set is added to this.temp. If checkForDuplicates is false, the new bit set will be chosen from this.temp and removed there.- Parameters:
length- the length of the bit set.checkForDuplicates- whether to check for duplicates (see above).- Returns:
- a bit set.
-
generateRandomly
private java.util.BitSet generateRandomly(int length)
Generates a random bit set of the given length.- Parameters:
length- some length.- Returns:
- a random bit set.
-
-