added parallel strategy in apriori

This commit is contained in:
IGI-111
2015-04-07 15:32:23 +00:00
parent 38fed1fd2f
commit ae5b95c69d
2 changed files with 4 additions and 2 deletions

View File

@@ -5,6 +5,7 @@ import DataModel
import qualified Data.Set as Set import qualified Data.Set as Set
import Debug.Trace (trace) import Debug.Trace (trace)
import qualified Data.List as List import qualified Data.List as List
import Control.Parallel.Strategies(parMap, rpar)
semiUnion :: ItemSet -> ItemSet -> ItemSet semiUnion :: ItemSet -> ItemSet -> ItemSet
semiUnion (ItemSet set1) (ItemSet set2) = ItemSet $ semiUnion (ItemSet set1) (ItemSet set2) = ItemSet $
@@ -24,8 +25,8 @@ semiUnion (ItemSet set1) (ItemSet set2) = ItemSet $
generateNextLevel :: [ItemSet] -> [ItemSet] generateNextLevel :: [ItemSet] -> [ItemSet]
generateNextLevel level = trace ("Computing level " ++ show (isSize (head level))) $ generateNextLevel level = trace ("Computing level " ++ show (isSize (head level))) $
foldr (\value old -> generate value ++ old) [] level where foldr (\value old -> generate value ++ old) [] level where
generate value = takeWhile (/= empty) generate value = takeWhile (/= empty) $
(foldr (\x old -> semiUnion value x : old) [] (tail $ List.dropWhile (/= value) level)) parMap rpar (semiUnion value) (tail $ List.dropWhile (/= value) level) -- FIXME: this could be a better strategy
isSize (ItemSet set) = Set.size set isSize (ItemSet set) = Set.size set
singletons :: [ItemSet] -> [Item] singletons :: [ItemSet] -> [Item]

View File

@@ -27,3 +27,4 @@ main = do
table = map (ItemSet. Set.fromList .map Item) tableFileContent table = map (ItemSet. Set.fromList .map Item) tableFileContent
rules = extractRules threshold table freqPats rules = extractRules threshold table freqPats
output = init $ foldr (\x old -> old++x++"\n") "" $ map show rules output = init $ foldr (\x old -> old++x++"\n") "" $ map show rules