Ifi6057w3

Allikas: Lambda

3. Nädal

Ülesannete lahendamine otsinguga; AIMA chapter 3.3-3.4, TI 14-15.

Lühendatud slaidid PDF

Videoloeng: BFS ja DFS

Harjutustund

Lahenda 4x4 sudoku kasutades search.Problem klassi ja search mooduli otsingualgoritme.

Olek tuleb kodeerida 16-kohaliseks tupleks järgmiselt:

sudoku

 (2, 1, 0, 0,
  0, 3, 2, 0,
  0, 0, 0, 4,
  1, 0, 0, 0)

Ja üks tegevus (action) tuleb edasi anda tuplena (number, x-koordinaat, y-koordinaat), mis tähendab et number kirjutatakse antud koordinaatidega ruutu. Koordinaadid on 0-st 3-ni.

 (2, 3, 3)

Tähendab, et number "2" kirjutatakse alumisse ritta viimasesse veergu.

Veel algolekuid testimiseks:

 (1, 0, 3, 4, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1)
 (4, 2, 0, 0, 1, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 3)
 (0, 0, 0, 3, 4, 0, 0, 0, 0, 1, 3, 0, 3, 0, 2, 0)

Ülesande klassi toorik

 class MiniSudoku(search.Problem):
   def actions(self, state):
       act = []
       # ...
       return act
   def result(self, state, action):
       newstate = list(state)
       # ...
       return tuple(newstate)
   def goal_test(self, state):
       # blah asemel on lõppseisu tingimus
       if blah: return True
       return False