Előadó: Dr. Várterész Magdolna
2. Problémareprezentációs technikák, megoldáskereső módszerek
A problémát ahhoz, hogy kezelni tudjuk, valamilyen módon meg kell adni, le kell írni. Milyen problémákkal fogunk foglalkozni? Olyanokkal, amelyek megoldásához nincs ismert megoldó-algoritmus, képlet. Tapasztalat, tudás segítségével oldjuk meg a problémát.
Ezen problémák számítógépes megoldásához keresünk algoritmusokat.
Első feladatunk a probléma leírása, reprezentálása. Háromféle reprezentációs eszköz:
Legyen adott egy p probléma. A probléma állapottér-reprezentációjának elkészítéséhez meg kell vizsgálni, hogy melyek p világában azok a tulajdonságok, jellemzők, amelyek fontosak számunkra. Tegyük fel, hogy n ³1 ilyen jellemzőt találtunk. Minden egyes jellemző p világát különböző értékekkel jellemzi (pl.: életkor: 20; szín: fekete; stb.). Ha a világ n különböző jellemzőjét rendre a h1,...,hn értékek jellemzik, akkor azt mondjuk, hogy a (h1,...,hn) érték n-essel azonosított állapotban van p világa.
Jelölje az i. jellemző által felvehető értékek halmazát Hi (i = 1,...,n). Ekkor p világának állapotai elemei a H1´...´Hn halmaznak. Az állapotok halmazát állapottérnek nevezzük, és A-val jelöljük.
AÍH1´...´Hn | Lehet, hogy a világunkban a jellemzőkhöz tartozó |
bizonyos értékek egyszerre nem léphetnek fel, tehát az állapottér az értékhalmazok Descartes-szorzatának csupán valamely részhalmaza. |
Kényszerfeltétel: | az a feltétel, ami az állapotteret kijelöli az értékhalmazok Descartes- |
szorzatából | |
jelölése: kf(a) ,mely igaz, ha a állapot, egyébként hamis |
A = { a | aÎH1´...´Hn és kf(a) }
Problémafelvetés:
Megadása kétféleképpen történhet:
1. explicit módon, felsorolással. Egy- vagy többféle állapot is lehet. Több
állapot esetén ez nehézkes lehet. Ilyenkor:
2. implicit módon, célfeltételek megadásával: C = { a |
aÎA, cf(a) }
o Î O | o: A ® A |
állapottérből állapottérbe képező
függvény. Az állapot megváltoztatásáért felelős. o: operátor O: operátorok halmaza |
Természetesen nem minden operátor alkalmazható minden esetben. Meg kell
adni a pontos értelmezési tartományt: operátor-alkalmazási előfeltételek.
(minden egyes operátorhoz hozzátartoznak)
dom(o) = { a | aÎA, efo(a) } | , ahol efo(a) azon előfeltétel, mely megmondja, |
hogy az adott állapoton értelmezhető-e | |
a kérdéses operátor efo(a) esetén o(a) = a' ÎA |
Definíció: A p problémát leírtuk állapottér-reprezentációval, ha megadtuk a p = <A,k,C,O> négyest, ahol
- A: a probléma állapottere, ezt meg kell adni
- k: kitüntetett kezdőállapot
- O: a probléma operátorainak halmaza, minden egyes operátornál előfeltételek
- C: a probléma célállapotainak halmaza
p = <A,k,C,O> | ilyenkor megadtuk a p probléma állapottér-reprezentációját |
Több reprezentáció is megadható ugyanarra a feladatra. |
Mit jelent ennek az implementálása?
Boolean függvények: a formális paraméterben vár egy érték n-est, s egy logikai értéket ad vissza (igaz v. hamis)
Kezdőállapotból mikor, melyik operátor alkalmazásával tudunk eljutni a célállapotba?
Az aÎA -ból az a'ÎA közvetlenül elérhető, ha van olyan oÎO: efo(a) és o(a) = a'
Az aÎA -ból az a'ÎA
elérhető, ha van olyan a1,...,anÎA
(állapotsorozat), hogy a=a1, a'=an és ai-ből
ai+1 közvetlenül elérhető.
(a a kezdőállapot, a' a célállapot, i=1,...,n-1).
Ilyenkor van egy operátorsorozat, ami ezt az elérést lehetővé teszi: o1,o2,...,on-1
Egy állapottér-reprezentált probléma megoldható, ha a kezdőállapotból elérhető valamelyik célállapot.
Mi a megoldása? Az az operátorsorozat, amely ezt az elérést lehetővé tette. (De lehet több megoldása is függetlenül attól, hogy hány célállapot van).
A feladat lehet egy vagy több megoldás előállítása. Célunk: minősítés alapján jó megoldás keresése, azaz a megoldások között különbséget teszünk, pl.: költség.
Költség: | az operátorok alkalmazása költségbe kerülhet. |
(egy operátor használata egy állapotra ® ennek van költsége) ez lehet mindig azonos, vagy függhet attól, hogy melyik állapotra alkalmazzuk r(o,a) r(o,a) -ban o az operátor, a pedig,
hogy milyen állapotban alkalmazható |
Az operátoroknál meg kell adni az operátorok költségét (függvénnyel, eljárással megadható).
Mi a megoldás költsége?
Az operátorsorozat operátorainak költségösszege:
A
különböző megoldásokat így össze lehet hasonlítani!
Optimális költség: (olcsó), legolcsóbb megoldás keresése.
Feladat: megoldást kell előállítani. Nem tudom megmondani, hogy mikor melyik operátort alkalmazzuk. A megoldást keresni kell.
Legyen a p probléma az <A,k,C,O> állapottér-reprezentációval
megadva. Szemléltessük egy gráffal ezt a probléma-leírást a következőképpen:
az állapottér állapotait csúcsokkal szemléltetjük, különböző állapotokat különböző
csúcsokkal.
A kitüntetett állapotokat, mint a kezdő- és célállapotokat a csúcsok között
is kitüntetjük, a kezdőállapotot szemléltető csúcsot startcsúcsnak, a célállapotokat
szemléltető csúcsokat terminális csúcsoknak nevezzük.
Minden aÎA -t szemléltető n csúcsból irányított élt húzunk az a'ÎA -t szemléltető n' csúcsba, ha a-ból közvetlenül elérhető a'.
Így egy <N,s,T,E> gráfot kapunk, ahol | |
N
|
a csúcsok halmaza |
s
|
a start csúcs |
T
|
a terminális csúcsok halmaza |
E
|
az élek halmaza |
Ezt a gráfot a p probléma <A,k,C,O> állapottér-reprezentációjához
tartozó állapottér-gráfjának vagy reprezentációs gráfjának nevezzük.
Fogalmak:
irányított utak: | Pontosan akkor vezet az állapottérgráfban az n csúcsból | |
az n' csúcsba irányított út, ha az n által szemléltetett állapotból az n' által szemléltetett állapot elérhető. | ||
megoldható: | van a start csúcsból valamelyik
terminálisba vezető irányított út |
|
megoldás: | pontosan ez (![]() |
|
költség: |
r(o,a)
|
Az irányított élekhez rendelhetők költségek, hiszen azok |
az operátorok alkalmazását szemléltetik | ||
irányított út költsége: | a benne szereplő élek költségösszege | |
r(n,n') ![]() |
||
Egy probléma megoldásának keresése: |
a probléma-reprezentációs gráfban fogunk utat keresni a start csúcsból a terminálisba |
Egy gráfban annál könnyebb keresni, minél egyszerűbb annak a felépítése, ill. minél kisebb. Ez többféleképpen is elérhető:
1. | csúcsok számának csökkentése |
ü
|
|
(állapotok számának csökkentése) |
ç
|
||
2. | egy (1) csúcsból kiinduló élek számának csökkentése |
ý
|
állapottér-reprezentációval van kapcsolatban |
ç
|
|||
(operátorok ügyes, alkalmas megválasztása) |
þ
|
||
3. | fává egyenesítés | ||
A reprezentációs gráfban lehet hurok: | ![]() |
||
illetve kör: | ![]() |
||
ezeket kell kiegyenesíteni! |
Hurok kiegyenesítése:
![]() |
®
|
![]() |
Ugyanazt az állapotot két különböző csúccsal reprezentáljuk! Gond: nő a fa terjedelme! |
Kör kiegyenesítése:
![]() |
®
|
![]() |
Gond: a kör kiegyenesítése végtelen szerkezettel jár együtt. Mérlegelni kell, hogy a fává egyenesítés megéri-e. |
Példák (néhány probléma gráfreprezentációja):
1.) 8-as játék:
Minden él mellett van egy párhuzamos visszairányuló él. Ilyenkor használhatunk egy irányítás nélküli élet is.
![]() |
||||||
![]() |
![]() |
|||||
![]() |
![]() |
|||||
![]() |
![]() |
|||||
![]() |
![]() |
|||||
![]() |
![]() |
![]() |
||||
![]() |
![]() |
![]() |
||||
![]() |
![]() |
|||||
![]() |
||||||
Megoldás!!!
|
Ez egy olyan probléma, ahol a fává egyenesítéssel érdemes élni.
2.) Utazó ügynök probléma
Ez egy fa-gráf, s minden egyes útjának végén (a levél) terminális csúcs. Az utak közül az optimálisat kellene kiválasztani.
![]() ![]() ![]() |