packages feed

hgraph-1.2.0.0: benchmarks/VertexCover.hs

{-# LANGUAGE BangPatterns #-}
module Main where

import HGraph.Undirected.Generator
import HGraph.Undirected.AdjacencyMap
import HGraph.Undirected.Solvers.VertexCover
import Data.List

import System.Clock
    
runBench !(g,name) = do
  start <- getTime ProcessCPUTime
  let vc = minimumVertexCover g
      !nVerts = numVertices g
      !nEdges = numEdges g
      !vcSize = length vc
  end <- getTime ProcessCPUTime
  let delta = (toNanoSecs $ diffTimeSpec end start) `div` 10^6 
  return $ ( intercalate ","
              [ show name
              , show nVerts
              , show nEdges
              , show delta
              , show vcSize
              ] ,
            delta)

instances = 
  [ (grid emptyGraph w h, "grid-" ++ show w ++ "x" ++ show h) | w <- [1..8], h <- [w..8] ]

main = do
  results <- mapM runBench instances 
  let times = map snd results
  let totalTime = sum times
  putStrLn $ intercalate "\n" $ "instance, vertices, edges, time (ms), solution" : map fst results