set-cover-0.1.1: Solve exact set cover problems like Sudoku, 8 Queens, Soma Cube, Tetris Cube

Safe HaskellNone

Math.SetCover.Exact.Priority

Description

This implementation uses priority queues and avoids full scans through available sets. It can be faster than Math.SetCover.Exact if there is a huge number of sets.

Synopsis

Documentation

data Assign label set Source

Assign allows to associate a set with a label. If a particular set is chosen for a set cover, then its label is included in the output of partitions.

I have decided to separate sets and labels this way, since it is the easiest way to assign a meaning to a set. If you really want to know the sets in a partition, then you can fill the label field with the set.

Instances

Functor (Assign label) 

label :: Assign label set -> labelSource

labeledSet :: Assign label set -> setSource

assign :: label -> set -> Assign label setSource

Construction of a labeled set.

partitions :: Methods queue set -> [Assign label set] -> [[label]]Source

search :: Methods queue set -> State queue label set -> [[label]]Source

step :: Methods queue set -> State queue label set -> [State queue label set]Source

data State queue label set Source

Constructors

State 

Fields

availableSubsets :: EnumMap SetId (Assign label set)
 
queue :: queue
 
usedSubsets :: [label]
 

initState :: Methods queue set -> [Assign label set] -> State queue label setSource

updateState :: Methods queue set -> Assign label set -> State queue label set -> State queue label setSource

data Tree label set Source

Constructors

Leaf 
Branch set [(label, Tree label set)] 

Instances

(Eq label, Eq set) => Eq (Tree label set) 

decisionTree :: Methods queue set -> [Assign label set] -> Tree label setSource

completeTree :: Methods queue set -> State queue label set -> Tree label setSource

data SetId Source

Instances

queueMap :: Ord a => Methods queue set -> Methods a queue setSource

queueSet :: Ord a => Methods aSource

queueBit :: C bits => Methods bitsSource

queueBitPQ :: C bits => Methods bitsSource

queueIntSet :: MethodsIntSetSource