A korlátozás programozás alapjai



Hasonló dokumentumok
Méréselmélet: 5. előadás,

KOMBINATORIKA ELŐADÁS osztatlan matematika tanár hallgatók számára. Szita formula

d(f(x), f(y)) q d(x, y), ahol 0 q < 1.

Példák ekvivalencia relációra (TÉTELként kell tudni ezeket zárthelyin, vizsgán):

Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések

Általános algoritmustervezési módszerek

A bankközi jutalék (MIF) elő- és utóélete a bankkártyapiacon. A bankközi jutalék létező és nem létező versenyhatásai a Visa és a Mastercard ügyek

Relációk. Vázlat. Példák direkt szorzatra

Vázlat. Relációk. Példák direkt szorzatra

Műszaki folyamatok közgazdasági elemzése. Kevert stratégiák és evolúciós játékok

Fuzzy rendszerek. A fuzzy halmaz és a fuzzy logika

8. Programozási tételek felsoroló típusokra

Bevezetés a programozásba. 3. Előadás Algoritmusok, tételek

IDA ELŐADÁS I. Bolgár Bence október 17.

Darupályák ellenőrző mérése

LINEÁRIS PROGRAMOZÁSI FELADATOK MEGOLDÁSA SZIMPLEX MÓDSZERREL

Mesterséges Intelligencia MI

Mechanizmusok vegyes dinamikájának elemzése

FÜGGVÉNYEK TULAJDONSÁGAI, JELLEMZÉSI SZEMPONTJAI

Az elektromos kölcsönhatás

3. Évközi ellenőrzés módja: 2 zárhelyi dolgozat íratása. 4. A tárgy előírt külső szakmai gyakorlatai: -

Egy negyedrendű rekurzív sorozatcsaládról

4 2 lapultsági együttható =

Kvantum-tömörítés II.

Optikai elmozdulás érzékelő illesztése STMF4 mikrovezérlőhöz és robot helyzetérzékelése. Szakdolgozat

ORVOSI STATISZTIKA. Az orvosi statisztika helye. Egyéb példák. Példa: test hőmérséklet. Lehet kérdés? Statisztika. Élettan Anatómia Kémia. Kérdések!

Statisztikai próbák. Ugyanazon problémára sokszor megvan mindkét eljárás.

Gyakori elemhalmazok

Országos Középiskolai Tanulmányi Verseny 2009/2010 Matematika I. kategória (SZAKKÖZÉPISKOLA) 2. forduló feladatainak megoldása

Az entrópia statisztikus értelmezése

Dr. Ratkó István. Matematikai módszerek orvosi alkalmazásai Magyar Tudomány Napja. Gábor Dénes Főiskola

6. Függvények. Legyen függvény és nem üreshalmaz. A függvényt az f K-ra való kiterjesztésének

Hitelderivatívák árazása sztochasztikus volatilitás modellekkel

Frank András MATROIDELMÉLET május 20.

A Ga-Bi OLVADÉK TERMODINAMIKAI OPTIMALIZÁLÁSA

Philosophiae Doctores. A sorozatban megjelent kötetek listája a kötet végén található

A neurális hálózatok alapjai

Tiszta és kevert stratégiák

1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba

Mechanizmus-tervezés: szociális jóléti függvény nem kooperatív (versengő) ágensek. A megegyezés keresése és elérése: Tárgyalás (Negotiation)

ALGORITMUSOK, ALGORITMUS-LEÍRÓ ESZKÖZÖK

METROLÓGIA ÉS HIBASZÁMíTÁS

OPTIMÁLIS ERŐFORRÁS-TERVEZÉS

The original laser distance meter. The original laser distance meter

1/ gyakorlat. Lineáris Programozási feladatok megoldása szimplex módszerrel. Pécsi Tudományegyetem PTI

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex

Sorozatok I. Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma)

Elosztott rendszerek játékelméleti elemzése: tervezés és öszönzés. Toka László

Forgácsolási paraméterek mûvelet szintû optimalizálása

1. feladatsor: Vektorterek, lineáris kombináció, mátrixok, determináns (megoldás)

A multikritériumos elemzés célja, alkalmazási területe, adat-transzformációs eljárások, az osztályozási eljárások lényege

(eseményalgebra) (halmazalgebra) (kijelentéskalkulus)

Töréskép optimalizálás Elmélet, megvalósítás, alkalmazás

VEZÉRIGAZGATÓI UTASÍTÁS

Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

Szimuláció RICHARD M. KARP és AVI WIGDERSON. (Készítette: Domoszlai László)

1. A k-szerver probléma

/11 Változtatások joga fenntartva. Kezelési útmutató. UltraGas kondenzációs gázkazán. Az energia megőrzése környezetünk védelme

ALAKOS KÖRKÉS PONTOSSÁGI VIZSGÁLATA EXCEL ALAPÚ SZOFTVERREL OKTATÁSI SEGÉDLET. Összeállította: Dr. Szabó Sándor

Programozási módszertan. Mohó algoritmusok

IT jelű DC/DC kapcsolóüzemű tápegységcsalád

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Periodikus figyelésű készletezési modell megoldása általános feltételek mellett

Érdekes informatika feladatok

1.Tartalomjegyzék 1. 1.Tartalomjegyzék

Ellenőrző kérdések és lényegre törő válaszok az ütemezési feladatok osztályozása témakörből :

Exponenciális, logaritmikus függvények

AZ IONKONCENTRÁCIÓ POTENCIOMETRIÁS MEGHATÁROZÁSA IONSZELEKTÍV ELEKTRÓDOK ALKALMAZÁSÁVAL

11. előadás PIACI KERESLET (2)

II. Rákóczi Ferenc Kárpátaljai Magyar Fıiskola. Pataki Gábor. STATISZTIKA I. Jegyzet

Biostatisztika e-book Dr. Dinya Elek

Függvények növekedési korlátainak jellemzése

1/ gyakorlat. Lineáris Programozási feladatok megoldása szimplex módszerrel. Pécsi Tudományegyetem PTI

Az optimális megoldást adó algoritmusok

9. Visszavezetés egyedi felsorolókkal

Halmazelméleti alapfogalmak

Diszkrét matematika 2.C szakirány

OAF Gregorics Tibor: Minta dokumentáció a 4. házi feladathoz 1. Feladat. Megoldás

,...,q 3N és 3N impulzuskoordinátával: p 1,

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 12.

1.5.1 Büntető-függvényes módszerek: SUMT, belső, külső büntetőfüggvény

Balogh Edina Árapasztó tározók működésének kockázatalapú elemzése PhD értekezés Témavezető: Dr. Koncsos László egyetemi tanár

6. gyakorlat. Gelle Kitti. Csendes Tibor Somogyi Viktor. London András. jegyzetei alapján

RSA algoritmus. P(M) = M e mod n. S(C) = C d mod n. A helyesség igazoláshoz szükséges számelméleti háttér. a φ(n) = 1 mod n, a (a 1,a 2,...

A szimplex algoritmus

Statisztikai. Statisztika Sportszervező BSc képzés (levelező tagozat) Témakörök. Statisztikai alapfogalmak. Statisztika fogalma. Statisztika fogalma

minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének.

Reaktivitás on-line digitális mérhetősége virtuális méréstechnikával

Elemi szelekciós elmélet

Orosz Gyula: Markov-láncok. 4. Statisztikus golyójátékok

Diszkrét matematika 2. estis képzés

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma

Békefi Zoltán. Közlekedési létesítmények élettartamra vonatkozó hatékonyság vizsgálati módszereinek fejlesztése. PhD Disszertáció

Ellátási lánc optimalizálás P-gráf módszertan alkalmazásával mennyiségi és min ségi paraméterek gyelembevételével

DÖNTÉSTÁMOGATÓ MÓDSZEREK segédlet I. rész

10. Alakzatok és minták detektálása

NKFP6-BKOMSZ05. Célzott mérőhálózat létrehozása a globális klímaváltozás magyarországi hatásainak nagypontosságú nyomon követésére. II.

1. ábra ábra

Die Sensation in der Damenhygiene Hasznos információk a tamponokról

Leica DISTOTMD510. X310 The original laser distance meter. The original laser distance meter

Átírás:

A korlátozás programozás alapa Kovács András akovacs@mt.bme.hu Bevezetés Ez a segédlet a Mesterséges Intellgenca Labor c. tárgyat felvett hallgatókhoz szól, és feltételez a logka programozás elmélet alapanak, a fontosabb fa-kereso algortmusoknak és a Prolog nyelvnek az smeretét. Céla a laboron kadott feladatok elvégzéséhez szükséges smeretek bemutatása és az óra munka segítése néhány kódmnta által. A korlátozás programozás elméletének elsaátításához fgyelmetekbe aánluk Szered Péter Nagyhatékonyságú Logka Programozás c. tárgyát. Az tt leírt példaprogramok egy része s a tárgy egyzetébol lett adaptálva. Defnícók A korlátozás programozás (Constrant Programmng / Constrant Logc Programmng, CLP) egy deklaratív programozás paradgma kombnatorkus (optmalzálás) problémák megoldására. Hatékonyságának, rugalmasságának és az egyszeru formalzmusoknak köszönhetoen számos gyakorlat alkalmazással büszkélkedhet, pl. az ütemezés, órarendkészítés, grafka alkalmazások, stb. területén. Rövden, egy korlátozás-kelégítés probléma (Constrant Satsfacton Problem, CSP) a következokbol áll: változók egy halmaza: X = { 1,..., n }; mnden változóhoz egy D véges értékkészlet (doman); korlátozások (constrant) egy C halmaza, amely leíra, hogy a változók által felvett értékek közt mlyen összefüggéseknek kell fennállna; esetleg egy O (X ) célfüggvény. A CSP megoldása az X változók egy lekötése, melynek során mnden értéket, és kelégít a C korlátokat. Kereshetünk egy megoldásra; az összes megoldásra, vagy az O (X ) szernt mnmáls vagy mamáls megoldásra. D -bol vesz fel Nem szükségképpen, de általában a D értékkészletek a poztív egészek halmazának részhalmaza. A továbbakban m s éln fogunk ezzel a feltételezéssel.

Korlátok Egy c 1,...k változókra értelmezett korlát formáls defnícóa szernt egy k változós relácó a D 1... Dk drekt-szorzat felett, amely a változók megengedett kombnácóra áll fenn. Például: SICStus Prolog korlát A #> B Jelentése A > B A #\= B A B (A #= 3 #\/ B#> C-2) A = 3 vagy B > C 2 all_dfferent(l) Az L lsta eleme mnd különbözoek. A fent k tetszoleges értéket felvehet, de kemelünk két esetet: Unárs korlátok ( k = 1). Egy c u unárs korlát arra használható, hogy egy változó értékkészletébol eltávolítsuk a nemkívánatos értékeket. Pl. az 3 korlát esetén a 3 értéket eltávolíthatuk D -bol. Ettol a pllanattól kezdve a c u korlát bztosan k van elégítve, és akár el s távolítható C-bol. Bnárs korlátok ( k = 2). Ha egy CSP mnden korláta bnárs, akkor bnárs CSP-rol beszélhetünk. Egy bnárs CSP ábrázolható egy gráffal, melynek csúcsa a változók, éle a megfelelo változópárok közt fennálló korlátok. Elmélet elentosége van annak, hogy tetszoleges CSP átalakítható bnárs CSP-vé, bár ez ú változók bevezetését tehet szükségessé. Ma ezt a technkát már nem használák, hatékonyabb algortmusok smertek magasabb fokszámú korlátokat s tartalmazó CSP-k megoldására. Példa egy korlátozás programra Az n-krályno feladatban n db králynot kell elhelyezn úgy egy n*n-es sakktáblán, hogy semelyk ketto ne üsse egymást. Az elso megvalósítás SICStus Prologban: :- use_module(lbrary(clpfd)). % A Qs lsta N krályn?o bztonságos elhelyezését mutata % egy N*N-es sakktáblán: ha a lsta. eleme, akkor % az. krályn?ot az. sor. oszlopába kell helyezn. queens(n, Qs) :- length(qs, N), doman(qs, 1, N), safe(qs).

% safe(qs): A Qs krályn?o-lsta bztonságos. safe([]). safe([q Qs]):- no_attack(qs, Q, 1), safe(qs). % no_attack(qs, Q, I): A Qs lsta által leírt krályn?ok % egyke sem támada a Q által leírt krályn?ot, ahol % Qs a (, +1,...) sorbel krályn?oket íra le, % Q a. sorbel krályn?ot, és I = - > 0. no_attack([],_,_). no_attack([x Xs], Y, I):- no_threat(x, Y, I), I1 s I+1, no_attack(xs, Y, I1). % Az X és Y oszlopokban I sortávolságra lev?o % krályn?ok nem támadák egymást, azaz nncsenek % azonos oszlopban, / vagy \ átlóban no_threat(x, Y, I) :- Y #\= X, Y #\= X-I, Y #\= X+I. Propagácó, él-konzsztenca változók közt fennáll egy c bnárs korlát, akkor a fent gráf, ) éle él- Ha és konzsztens (arc consstent), ha mnden = v, = u változó lekötés kelégít a c korlátot. ( v D értékhez létezk egy u D, hogy az Mnden más v D érték, azaz amelyekhez nem létezk lyen u, eltávolítható D - bol, hszen nem képezhet részét konzsztens megoldásnak. Ezen értékek eltávolítása élkonzsztenssé tesz a gráf, ) élét. Ezt a muveletet nevezzük a c korlát ( propagálásának. Megegyezzük, hogy, ) él-konzsztencáából nem következk ( (, ) él-konzsztencáa. Ez a defnícó és elárás általánosítható magasabb fokszámú korlátok esetére s. Ha a CSP mnden éle él-konzsztens, akkor a magát CSP-t s él-konzsztensnek nevezzük. Egy CSP él-konzsztenssé tétele relatíve gyorsan végrehatható, ezért a CLP rendszerek a feladatot a teles megoldás folyamat során gyekszenek él-konzsztensen tartan. Ezt úgy érk el, hogy valahányszor egy változó értékkészlete változk, az összes -t tartalmazó korlátot propagálák. Ez természetesen tovább nkonzsztens értékeket távolíthat el más változók értékkészletébol, egy propagácó-lavnát ndítva ezzel. Ha

ennek során egy változó értékkészlete üressé válk, akkor magától értetodoen nncs megoldása a feladatnak. Sanos egy CSP él-konzsztencáa nem elent azt, hogy a feladatnak van megoldása. A következo példa egy lyen esetet mutat. A korlátok bármelyke telesülhet benne, a korlátok mndegyke egydeuleg azonban nem. (A feladat megoldhatatlan, mert három változónak kellene felvenne az { 1,2} kételemu halmazból páronként különbözo értéket.) D 4 1 2 3 D, (( 4 1 D D 2 3 = {1,2}, = {1,2}, = {1,2}, = {2,3,4}, ) ( )) Láthatuk tehát, hogy a propagácó holtpontra uthat anélkül, hogy megtalálná a feladat létezo megoldását vagy bebzonyítaná annak megoldhatatlanságát. Ilyenkor a CLP rendszer keresés technkákat hív segítségül. Keresés Míg a legegyszerubb feladatokat pusztán propagácóval meg lehet oldan, bonyolultabb feladatok esetén a propagácót egy fa-keresés sémába kell ágyazn, a következok szernt: 1. Incalzáluk keresésünket egy n 0 gyökér csomóponttal, amelyet úgy kaptunk, hogy a feladat leírásán lefuttattunk egy él-konzsztenca algortmust. 2. Vegyük egy él-konzsztens, de lekötetlen változókat s tartalmazó n csomópontot. Legyenek c 1,...,ck olyan korlátok, amelyekre ( c c = ) és = I, c = 1... k azaz közülük mnden változó lekötésben pontosan egy telesül. 3. Generáluk az n csomópont k db gyermekét rendre úgy, hogy lemásoluk az n-ben érvényes értékkészleteket és korlátokat, mad hozzávesszük a megfelelo c -t. Mnden gyermeken futtassunk le egy él-konzsztenca algortmust. o Ha valamely n gyermek csomópontban egy változó értékkészlete kürül, akkor n eldobható, mert belole konzsztens megoldás nem származtatható. o Ha valamely n gyermek csomópontban mnden változó értékkészlete egyetlen v elemet tartalmaz, akkor az = v ) változó lekötés egy ( konzsztens megoldás. Aduk vssza ezt a megoldást. Ha tovább megoldásokra már nncs szükség, záruk le a keresést. o Az összes több csomópont él-konzsztens, és (tovább) megoldások lehetoségét horda magában, ezért llesszük be azokat a keresés fába. 4. Folytassuk a keresést a 2. pontnál.

Könnyu belátn, hogy ez az algortmus teles, és az általa vsszaadott megoldások konzsztens megoldása a feladatnak. Az algortmus hatékonyságát az ada, hogy a propagátorok nagyban leszukítk a változók értéktartományát, így az épülo keresés fa mérete sokszor több nagyságrenddel ksebb lesz, mnt egyszeru vsszalépéses keresés esetén, amt pl. a standard Prolog alkalmaz. A gyakorlatban szokás a 2. pontban szereplo c -ket rendre q = v -nek választan, ahol q = v egy valamlyen heursztka szernt választott lekötetlen változó, a q = v -k pedg = v eleme. A Prologos nevezéktanban az lyen elágazás stratégát használó q keresést szokás címkézésnek, labelngnek nevezn. Míg ha a SICStusban egy korlátozás programot labelng nélkül ndítunk el, akkor csak az él-konzsztenca algortmust futtata le rata, labelnggel az elso konzsztens megoldásg keres. Tovább megoldásokat a ; el bebllentyuzésével kérhetünk. % Labelng nélkül elakad a megoldás megtalálása elott.?- queens(4, Qs). Qs = [_A,_B,_C,_D], _A n 1..4, _B n 1..4, _C n 1..4, _D n 1..4? yes?- % Labelnggel megtaláluk az összes helyes megoldást.?- queens(4, Qs), labelng([], Qs). Qs = [2,4,1,3]? ; Qs = [3,1,4,2]? ; no?- Érdemes megegyezn, hogy míg a korlátozás propagácós algortmusok általában n gyorsak (polnom doben lefutnak), a keresés során akár d méretu fa építésére lehet szükség, ahol d az értékkészletek méretét, n a változók számát elöl. Mvel komoly következménye lehetnek a számítás dore nézve, nagyméretu feladatok megoldása során érdemes mndent elkövetn a keresés fa méretének csökkentéséért, az alább módszerek valamelykével: Erosebb, az értékkészleteket obban szukíto korlátok felírása, ld. redundáns korlátok, globáls korlátok, felhasználó korlátok. A szukebb értékkészlet ksebb elágazás tényezot bztosít. A keresés döntések ügyes megválasztása, ld. változó és érték sorrendezés. Az, hogy a fent algortmus 2. pontában hogyan választuk az n csomópontot, meghatározza a keresés típusát. Noha számos feladat smert, melynek megoldására a CLP-be skerrel ágyaztak be valamlyen nformált, sot, lokáls kereso elárást, a CLP rendszerek legtöbbször egyszeru mélység keresést használnak. Ennek oka a következo. Mnden egyes keresés csomópontban mnden változó aktuáls értékkészletének eltárolása túlzottan memóragényes lenne. Ezért nkrementáls tárolást alkalmaznak, azaz a

keresés fa csomópontaban csak a szülo csomópontokhoz vszonyított értékkészletszukítéseket tarták nylván. Így két, a fában egymástól távol csomópont közt váltás csak a fa éle mentén történo lépegetéssel oldható meg, szerencsétlen esetben egészen a gyökérg tartó vsszagörgetés után. Ennek költségét csak kvételes esetben, nagyon ó heursztka mellett ellensúlyozza az nformált keresés csomópont-hatékonysága. Változó sorrendezés A labelng során az elágazás tárgyát képezo változó kválasztására szolgáló heursztkákat nevezzük változó sorrendezésnek (varable orderng). Gyakran hatékony az a heursztka, hogy a feladat nehéz magát, a legproblematkusabb részfeladatot olduk meg eloször. Ezt gyekszk megvalósítan az ún. frst-fal elárás: feltételezzük, hogy mnden érték lekötés azonos eséllyel vezet konzsztens megoldáshoz, így mnél több eleme van D -nek, annál valószínubb, hogy szükség esetén találunk -hez konzsztens értéket. Fordítva pedg, mnél kevesebb eleme van D -nek annál nehezebb -hez értéket választan, ezért érdemes az aktuálsan legksebb értékkészlettel rendelkezo változón elágazn. A SICStus Prologban a beépített frst-fal labelng elárás a következoképpen hívható:?- queens(4, Qs), labelng([ff], Qs). Érték sorrendezés (Value orderng) Mután meghatároztuk az változót, amelyen elágazunk, el kell döntenünk, hogy mlyen sorrendben próbáluk hozzárendeln annak lehetséges értéket, D elemet, azaz mlyen sorrendben áruk be a keresés fa ágat. Az érték sorrendezésnek akkor lehet elentosége, ha csak az elso megoldásra keresünk vagy egy branch-and-bound algortmussal optmáls megoldást keresünk. Ha mndenképpen be kell árnunk a teles keresés fát, pl. mert az összes megoldást elo akaruk állítan vagy mert nncs megoldás, akkor az érték sorrend választása rreleváns. Ha az érték sorrend számít, érdemes eloször azt D -bol azt az értéket -hez, amelyk legnagyobb eséllyel vezet egy helyes megoldáshoz ll. az hozzárendeln optmáls megoldáshoz. Az ennek az esélynek a mérésére smert heursztkák a CSP gráfában -hez éllel kapcsolt, még lekötetlen változók értékkészleteben számolák össze az = v hozzárendeléssel konzsztens értékeket. Néhány tpkus alkalmazásban, pl. ütemezésben, specfkus, a tapasztalat által gazolt érték sorrend heursztkák állnak rendelkezésre.

Alapértelmezett érték sorrendezés stratégaként az elteredt CLP rendszerek, ha a felhasználó másképp nem rendel, növekvo sorrendben véggpróbálák D összes v elemét. A fa építése általában nem az egyszerubbnek tuno 1.a., hanem az 1.b. ábra szernt történk. Itt ugyans az egyes ágakról történo esetleges skertelen vsszatérést követoen a tárhoz adódk az v + 1 korlát, melynek propagálásával szerencsés esetben tovább értékkészlet-szukítések mehetnek végbe. = v 1 v2 = = vm = v 1 v2 = v 2 v3 1.a. 1.b. = v m 1 = vm A SICStus Prolog úgy, mnt a legtöbb CLP rendszer, lehetoséget nyút saát változó ll. érték sorrendezés heursztkák írására s, errol az rodalomegyzékben szereplo muvek tartalmaznak részleteket. Redundáns korlátok Egy redundáns korlát eplct megfogalmazása egy olyan feltételnek, amt egy CSP mplct módon tartalmaz: a formalzálásakor nem vettük fel korlátként, mégs tudható, hogy CSP összes konzsztens megoldására telesül. A redundáns korlátok hozzávétele a CSP-hez nagyban gyorsíthata a megoldás folyamatot a keresés fa hatékonyabb nyesése által. Természetesen felesleges olyan redundáns korlátot hozzávenn a CSP-hez, amnek kelégítését a már meglévo korlátokon futó él-konzsztenca algortmusok s közvetlenül bztosítanak. Pl. ha a CSP-ben szerepelnek az a = b + c és c = d + e korlátok, akkor az a = b + d + e korlát hozzávétele tovább nyesést nem eredményez, sot, a megoldást ks mértékben lassíta a propagácós lépések deének növekedésével. Globáls korlátok Különbözo feladatokban gyakran elofordulnak bzonyos ellegzetes összefüggések a feladat változó, vagy a változók egy részhalmazának eleme közt. Pl. megkövetelhetük, hogy változók egy,..., ] lstáának eleme páronként különbözo értéket vegyenek [ 1 k

fel. Az lyen, sok, nem határozott számú változó közt, azaz globáls összefüggések leírására a CLP rendszerek gyakran mplementálnak hatékony propagáló algortmust, ún. globáls korlátot (global constrant). A fent mnd különbözo korlátot mplementála a SICStus-ban az all_dfferent/1 predkátum. Ugyanezt a korlátot természetesen deklarálhatnánk úgy s, hogy mnden,, változó-párra felíruk az artmetka korlátot, de az messze nem vezetne olyan hatékony propagácóhoz: 1 2 3 4 5 1 2 3 4 Tekntsük a fent példát. A 4 változó mndegykének értékkészletében azon értékek azon értékek szerepelnek, melyekhez éllel kötve van. Ekkor a korlátok egyke sem tud tüzeln, hszen bármely két változó lekötheto két különbözo értékre. Mégs, látható, hogy a feladat megoldhatatlan, mert az 1 és 2 értékekhez három változó s van, melyek csak a két érték valamelykét vehetk fel. Az all_ dfferent korlát ezt felsmer: a fent feladatot mnt párosítás problémát olda meg: a páros gráfban keresünk alulról teles párosítást. Általában elmondható, hogy a globáls korlátok számításgényesebbek, mnt az egyszeru korlátok, de ez boven kfzetodk a hatékonyabb propagácó által. Alább az n-krályno feladat egy alternatív, hatékonyabb megvalósítását látuk, globáls korlátok használatával. :- use_module(lbrary(clpfd)). % A Qs lsta N krályn?o bztonságos elhelyezését mutata % egy N*N-es sakktáblán: ha a lsta. eleme, akkor % az. krályn?ot az. sor. oszlopába kell helyezn. queens(n, Qs) :- length(qs, N), doman(qs, 1, N), safe(qs). % safe(qs): A Qs krályn?o-lsta bztonságos. safe(qs):- dag_rghtdown(qs, QsRD), dag_rghtup(qs, QsRU), all_dfferent(qs), all_dfferent(qsrd), all_dfferent(qsru). % Az oszlopok szernt számozából eloállítuk a % \ átlók szernt számozást. dag_rghtdown(qs, QsRD):-

dag_rghtdown0(qs, QsRD, 0). dag_rghtdown0([], [], _). dag_rghtdown0([l0 L], [LRD0 LRD], N):- LRD0 #= L0 - N, N1 s N+1, dag_rghtdown0(l, LRD, N1). % Az oszlopok szernt számozából eloállítuk a % / átlók szernt számozást. dag_rghtup(qs, QsRU):- dag_rghtup0(qs, QsRU, 0). dag_rghtup0([], [], _). dag_rghtup0([l0 L], [LRU0 LRU], N):- LRU0 #= L0 + N, N1 s N+1, dag_rghtup0(l, LRU, N1). Felhasználó korlátok Találkozhatunk olyan feladattal, amely nem írható le kézenfekvo módon a CLP rendszer beépített korlátaval, vagy a feladatra vonatkozó specáls smeretek brtokában a beépített korlátokénál hatékonyabb propagácót tudnánk megvalósítan. Ilyenkor lehetoség van saát felhasználó korlátok defnálására. Egy c ( 1,..., k ) korlát defnálásához meg kell adnunk, hogy amkor korlátban szereplo valamely változóról kderül, hogy nem vehet fel értékkészletének valamely v értékét, akkor a több változó értékkészletébol a c ( 1,..., k ) alapán mely értékekrol látható be, hogy nkonzsztensek. Errol az rodalomegyzékben szereplo muvek tartalmaznak részleteket., Szmmetratörések Sok feladatban elofordulnak ekvvalens megoldások. Pl. a 8-krályno problémában lényegleg azonosnak (szmmetrkusnak) teknthetük azokat, amelyek egymásból forgatással eloállíthatók. Egyrészt elofordulhat, hogy nem szeretnénk az összes szmmetrkus megoldást vszontlátn a megoldások közt. Másrészt, ha nagy számban fordulnak elo, lényegesen lassíthaták a megoldás folyamatot. A keresés fában ugyans a szmmetrkus megoldás- vagy részmegoldás-csoportok mnden taga külön ágként szerepel, így a keresés algortmus azok mndegykét külön-külön beára. Ez telesen

felesleges, hszen ha az egyk lyen ágon nncs megoldás, akkor a másk, szmmetrkus ágon sem lehet. Szmmetratörésnek nevezzük mndazon elárásokat, melyek a szmmetrkus megoldásosztályok tagaból egy reprezentánst meghagynak, a többt kzárák. Ez úabb korlátok hozzáadásával történhet. Pl. a 8-krályno probléma forgatás szmmetráát megtörhetük azáltal, hogy eloíruk, hogy az elso sorban a bal térfélen, az elso oszlopban pedg a felso térfélen van a krályno. A szmmetrák egy specáls esete, amkor az adatstruktúrák egyszerusítése (pl. négyzetes mátrok bevezetése) célából vagy egyéb megfontolásból dummy változókat veszünk fel, melyeknek értékkészlete egynél több elemet tartalmaz. Nylvánvalóan rreleváns, hogy ezen értékek közül melyket veszk fel. Ezért a dummy változókat a korlátozás programban egy-egy unárs korláttal le kell kötn. Optmalzálás feladatok A különbözo CLP eszközök azonos megközelítést használnak az optmalzálás feladatok kelégíthetoség problémára való vsszavezetésére. Tételezzük fel, hogy mnmalzálás problémáról van szó. Változóként felveszk a célfüggvény-értéket reprezentáló O -t, és a programhoz hozzáadák az O = O(X ) korlátot, mad eloállítanak egy kezdet megoldást. Ezután cklkusan elmentk az utolsó konzsztens megoldásból O értékét az opt változóba, és a CSP-hez hozzáadák az O opt 1 korlátot. Így eloállítanak egy úabb megoldást, és ezt smételgetk, míg létezk az ú korlátokat kelégíto megoldás. Nylvánvaló, hogy ekkor a megoldások célfüggvény-értéke szgorúan monoton csökken, továbbá, az utolsóként megtalált megoldás az (egyk) optmáls. Az algortmus a kezdet megoldás megtalálása után any-tme algortmusként vselkedk, azaz komple feladatok esetén, ha nncs lehetoség az optmáls megoldás ésszeru doben történo megtalálására, megszakítható, az aktuáls utolsó megoldás konzsztens lesz, mnosége pedg a keresésre szánt do növekedésével avul.

Felhasznált és aánlott rodalom: Smth, B. M.: A tutoral on constrant programmng. http://scom.hud.ac.uk/staff/scombms/papers/researchreports/95_14.ps Szered P.: Nagyhatékonyságú logka programozás. BME egyetem egyzet. http://www.nf.bme.hu/~szered/nlp/nlp03a.html Marrott, K. and Stuckey, P. J.: Programmng wth constrants: an ntroducton. The MIT Press, 1998. ILOG Solver 5.1. User s manual.

Ellenorzo kérdések Mutass egy mnél ksebb korlátozás programot, amelyet szernted nem oldana meg keresés nélkül a Prolog. Mlyen lehetoségeket smersz korlátozás programok hatékonyságának növelésére? Ad megoldást a 8-krályno problémában az átlókra való tengelyes tükrözés szmmetráának törésére.