Ifi6057w3: erinevus redaktsioonide vahel
Mine navigeerimisribale
Mine otsikasti
| (ei näidata sama kasutaja üht vahepealset redaktsiooni) | |||
| 8. rida: | 8. rida: | ||
== Harjutustund == | == Harjutustund == | ||
Lahenda 4x4 sudoku kasutades <code>search.Problem</code> klassi ja <code>search</code> mooduli otsingualgoritme. | |||
Olek tuleb kodeerida 16-kohaliseks tupleks järgmiselt: | |||
[[Image:Ifi6057_sudoku1.png|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 | |||
<!-- | |||
def test(initial, searchfunc): | def test(initial, searchfunc): | ||
p = EightPuzzle(initial, GOAL) | p = search.EightPuzzle(initial, GOAL) | ||
ip = search.InstrumentedProblem(p) | ip = search.InstrumentedProblem(p) | ||
n=searchfunc(ip) | n=searchfunc(ip) | ||
# expanded/goal tests/leaves/(solution) | # expanded/goal tests/leaves/(solution) | ||
print (ip) | print (ip) | ||
if hasattr(n, " | if hasattr(n, "solution"): | ||
print (n. | print (n.solution()) | ||
else: | else: | ||
print (n) | print (n) | ||
--> | |||
<!--2016 [[Ifi6057strategies|Otsingustrateegiad harjutustunniks]]--> | <!--2016 [[Ifi6057strategies|Otsingustrateegiad harjutustunniks]]--> | ||
Viimane redaktsioon: 20. september 2017, kell 11:51
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:
(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
