----------------------------------------------------------------------------- -- -- Module : DCB -- Copyright : -- License : AllRightsReserved -- -- Maintainer : -- Stability : -- Portability : -- -- | -- ----------------------------------------------------------------------------- module DCB where import Prelude hiding((++)) import qualified Prelude ((++)) import Control.Monad.Par import qualified Prelude ((++)) import Data.Array.Repa (Z(..),DIM1,DIM2,Array,(!),(++),(+^),(-^),(*^),(/^)) import qualified Data.Array.Repa as A import Data.Int type Vector r e = Array r DIM1 e type Matrix r e = Array r DIM2 e type Attr = Matrix A.U Double -- Adjecency-Matrix type Adj = Matrix A.U Int8 type Constraints = (Vector A.U Int, Matrix A.U Double) -- Graph consists of a Vector denoting which colums of the matrix represents wich originating -- column in the global adjencency-matrix, the reduces adjencency-matrix of the graph, a -- matrix of constraints and a scalar denoting the density type Density = Double -- Graph type Graph = (Vector A.U Int, Constraints, Density) expand :: Adj -> Attr -> [Graph] -> [Graph] expand adj attr g = undefined -- constraint gets a Graph and an Attribute-Matrix and yields true, if the Graph still fulfills -- all constraints defined via the Attribute-Matrix. constraint :: Adj -> Attr -> Graph -> Int -> Maybe Constraints constraint adj attr g newNode = undefined -- addPoint gets a graph and a tuple of an adjecancy-Vector with an int wich column of the -- Adjacency-Matrix the Vector should represent to generate further Graphs addPoint :: Adj -> Attr -> Density -> Graph -> Int -> Maybe Graph addPoint adj attr g c = undefined -- addablePoints yields all valid addititons to a Graph addablePoints :: Adj -> Graph -> Vector A.U Int addablePoints adj g = undefined