I need some help if possible with the following problem.....The WalkSat 
algorithm takes a formula, a probability 0 =< p =< 1, and a 
boundary of maximum flips maxflips

and returns a model that satisfies the formula or failure. The algorithm begins 
by assigning truth values to

the atoms randomly, ie. generating a random model. Then it proceeds to flip the 
value of an atom from one

of the unsatisfied clauses until it is able to find a model that satisfies the 
formula or reaches the maximum

number of flips.

In order to select which atom from the currently selected clause to flip, it 
follows two strategies:

1. Either flip any atom randomly.

2. Or flip the atom that maximizes the number of satisfied clauses in the 
formula.

The choice to flip randomly is followed with probability p.

1.atomsClause :: Clause ! [Atom] This function must take a Clause and return 
the set of Atoms of

that Clause. Note that the set should not contain any duplicates.

2. atoms :: Formula![Atom] This function must take a Formula return the set of 
Atoms of a Formula.

Note that the set should not contain any duplicates.

3. isLiteral :: Literal ! Clause ! Bool This function returns True if the given 
Literal can be found

within the Clause.

4. flipSymbol :: Model ! Atom ! Model This function must take a Model and an 
Atom and flip the

truth value of the atom in the model.


Now I've done the first 3 I need some help with the last one, Here is the code:

module Algorithm where


import System.Random

import Data.Maybe

import Data.List


type Atom = String

type Literal = (Bool,Atom)

type Clause = [Literal]

type Formula = [Clause]

type Model = [(Atom, Bool)]

type Node = (Formula, ([Atom], Model))


atomsClause :: Clause -> [Atom]

atomsClause = nub . map snd


atoms :: Formula -> [Atom]

atoms =atomsClause . concat


isLiteral :: Literal -> Clause -> Bool

isLiteral (b,a) cs = or[x==b && y==a|(x,y)<-cs]


flipSymbol :: Model -> Atom -> Model

flipSymbol = undefined
---the last one
Thank you.
                
                
        
                                        


      
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to