A mesterséges intelligencia alapjai Kényszerkielégítési probléma Készítette: Kovács Zita (DEIK, 2016/17/II.)
A feladat 1≤ x, y, z ≤ 8 z = y + 2 y + x < z + 1 y < 3x Add meg, hogy az egyes egész értékű változókra milyen követelményeket fogalmaznak meg az alábbi kényszerek! 1≤ x, y, z ≤ 8 z = y + 2 y + x < z + 1 y < 3x
1≤ x, y, z ≤ 8 z = y + 2 y + x < z + 1 y < 3x 4 5 6 7 8 x y - z Kezdhetjük a táblázattal, néhány értéket ki tudunk zárni a második (és az első) kényszer miatt. z = y + 2 –ből következik: mivel az y legalább 1, ezért a z nem lehet 1 vagy 2, tehát legalább 3 mivel a z maximum 8 lehet, ezért az y nem lehet 7 vagy 8, tehát legfeljebb 6
1≤ x, y, z ≤ 8 z = y + 2 y + x < z + 1 y < 3x 4 5 6 7 8 x - y z Ezután érdemes azzal a kényszerrel foglalkozni, amiben a legtöbb változó van és megpróbálni csökkenteni valamilyen behelyettesítéssel a változók számát. y + x < z + 1 –ben van a legtöbb változó. Helyettesítsük be a második kényszert, mondjuk z helyére. y + x < z + 1 y + x < y+2 + 1 y + x < y + 3 x < 3 Tehát az x az csak 1 vagy 2 lehet. Ezt összevethetjük a negyedik kényszerrel, ami megadja, hogy y mennyi lehet, x értékétől függően.
1≤ x, y, z ≤ 8 z = y + 2 y + x < z + 1 y < 3x 4 5 6 7 8 x - y z Az x csak 1 vagy 2 lehet. Ezt összevetjük a negyedik kényszerrel, ami megadja, hogy y mennyi lehet, x értékétől függően. Első eset: x = 1 y < 3*1 Tehát y 1 vagy 2 lehet. Második eset: x = 2 y < 3*2=6 Tehát y ∈ {1, 2, 3, 4, 5}. (A kettőt össze is vethetjük, ez azt jelenti, hogy az y nem lehet 6.)
1≤ x, y, z ≤ 8 z = y + 2 y + x < z + 1 y < 3x 4 5 6 7 8 x - y z Most már csak a megoldások felsorolása van hátra. Mivel az x értékeit szűkítettük le legjobban, abból indulunk ki. megoldás: x = 1, y = 1, z = 3 megoldás: x = 1, y = 2, z = 5 megoldás: x = 2, y = 1, z = 3 megoldás: x = 2, y = 2, z = 4 megoldás: x = 2, y = 3, z = 5 megoldás: x = 2, y = 4, z = 6 megoldás: x = 2, y = 5, z = 7