-
Notifications
You must be signed in to change notification settings - Fork 0
/
ProblemState.hs
35 lines (28 loc) · 1 KB
/
ProblemState.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-}
module ProblemState where
{-
Expune funcțiile necesare construirii spațiului stărilor, pentru o problemă
oarecare.
`s` și `a` reprezintă tipurile stărilor, respectiv acțiunilor
care transformă o stare în alta.
Sintaxa `s -> a` din antetul clasei semnifică faptul că `s` îl determină
în mod unic pe `a`.
-}
class ProblemState s a | s -> a where
{-
Pentru starea curentă, furnizează lista perechilor
(acțiune, stare următoare).
-}
successors :: s -> [(a, s)]
{-
Întoarce `True` dacă starea curentă este finală.
-}
isGoal :: s -> Bool
{-
Valabilă doar pentru BONUS.
Întoarce o distanță estimată a stării curente față de starea finală.
Cu cât distanța este mai mică, cu atât starea este mai preferabilă.
-}
heuristic :: s -> Int
heuristic = const 0