Tartalomjegyzék 1. Ember-gép kölcsönhatás (Ingo Althöfer és Stefan Schwarz)1.1. Több választási lehetőséget kínáló rendszerek1.1.1. Példák több választási lehetőséget kínáló rendszerre1.2. Több lehetséges megoldás előállítása1.2.1. Lehetséges megoldások előállítása heurisztikák és ismételt heurisztikák segítségévelEgyetlen heurisztika ismétlődő futtatásaA lehetséges megoldások összegyűjtése különböző heurisztikák alkalmazásával1.2.2. Büntető módszer egzakt algoritmusokkal1.2.3. Példák 1.2.4. A büntető módszer absztrakt megfogalmazása Büntetés melletti megoldások keresése az összes ɛ0Az ɛA büntetéses megoldások monotonitási tulajdonságaiTöbb alternatív megoldás létrehozása ugyanarra az ɛ1.2.5. Lineáris programozás – büntető módszerA legrövidebb útvonal probléma lineáris programként megfogalmazvaEgy lineáris programozási feladat, amelyik két alternatív útvonalat ad meg st1.2.6. Büntető módszer heurisztikák alkalmazásával1.3. További interaktív problémamegoldó algoritmusok 1.3.1. Tetszőleges futási idejű algoritmusok1.3.2. Interaktív evolúció és generatív tervezés1.3.3. Egymást követő rögzítések1.3.4. Interaktív több feltételes döntéshozatal1.3.5. Különböző további témákIrodalomjegyzékTárgymutatóNévmutató 1. Ember-gép kölcsönhatás Az interneten a következő definíciót találjuk a témával kapcsolatban:,,Az ember és számítógép közötti együttműködéssel foglalkozó tudományág az emberi használatra szánt interaktív számítógépes rendszerek tervezésével, megvalósításával és értékelésével, valamint e téma körül felmerülő jelenségek tanulmányozásával foglalkozik.... E terület legfontosabb vonatkozásai a következők: Az emberek és gépek által elvégzett feladatok közös teljesítménye. Az ember és gép közötti kommunikáció szerkezete. A gépek használatára vonatkozó emberi képességek (például az interfészek tanulhatósága). Az interfész programozása és algoritmusai. Az interfészek tervezésekor és kialakításakor felmerülő technikai kérdések. Az interfészek specifikálásának, tervezésének és megvalósításának folyamata. ... Az ember és számítógép közötti együttműködésnek a fentiek alapján vannak tudományos, technikai és tervezési kérdései.” A fenti témák közül jó néhány csak távolról érinti a klasszikus értelemben vett algoritmusok témakörét. Ezért ebben a fejezetben elsősorban olyan esetekre koncentrálunk majd, ahol a gépeknek nagy mennyiségű számítást kell elvégezniük, az emberek pedig egyfajta intelligens ellenőrző és irányító szerepet töltenek be. 1.1. Több választási lehetőséget kínáló rendszerek Az emberek képesek gondolkodni, érezni és érzékelni, és gyorsan tudnak alkalmazkodni egy új szituációhoz. Számolni is tudunk, de abban már nem vagyunk olyan jók. A számítógépek ezzel szemben kiválók a számolásban, csak úgy falják a biteket és bájtokat. Ők azonban a számoláson kívül nem nagyon értenek máshoz, például meglehetősen rugalmatlanok. Ha az embernek és a számítógépnek a képességeit és erősségeit megfelelő módon kombináljuk, az nagyon hatásos teljesítményhez vezethet. Az ilyenfajta csapatmunkának az egyik lehetséges megközelítése az úgynevezett több választási lehetőséges optimalizálás . Egy ilyen több választási lehetőséget kínáló rendszer esetén a számítógép néhány, könnyen áttekinthető alternatívát kínál föl, mondjuk kettőt, hármat, vagy esetleg négyet, de semmiképpen sem sokkal többet. A végső döntést egy szakértő hozza meg a felkínált lehetőségek közül választva. Ennek a megközelítésnek egyik legfőbb előnye, hogy az ember nincs hatalmas mennyiségű adattal elárasztva. A több választási lehetőséget kínáló rendszerek különösen hasznosak lehetnek azoknál a valós idejű problémáknál , amikor alapjában véve elegendő idő áll rendelkezésre a teljes megoldás kiszámolására, de a feladat bizonyos paraméterei ismeretlenek vagy fuzzy jellegűek. Ezek konkrét értékét csak egy meglehetősen kései időpontban tudjuk meg, amikor már nincs elegendő idő bonyolult számításokra. Képzeljük el, hogy a döntéshozó valamilyen több választási lehetőséget adó algoritmus segítségével előre létrehozott néhány megengedett megoldást . Majd amikor a tényleges adatok birtokába jut, valós időben kiválaszt ezek közül egyet. Nézzünk egy példát, amelyben egy útvonalat kell megkeresnünk. Tegyük fel, hogy egy kamionsofőrnek az A pontból a Z-be kell eljutnia. Az út megkezdése előtt egy PC szoftver segítségével megkeres kéthárom megfelelő utat, és kinyomtatja őket. Út közben a rádió információkat ad az aktuális forgalmi dugókról, illetve az időjárási problémákról. Ezekben a helyzetekben a kinyomtatott alternatívák segítenek a sofőrnek, hogy valós időben egy másik útvonalat válasszon. A megfelelő alternatív megoldási lehetőségek megtalálása azonban nem is olyan egyszerű a számítógép segítségével. A legtermészetesebb megoldási módnak az tűnhetne, ha valamilyen k -legjobb algoritmust alkalmaznánk. Ez azt jelenti, hogy adva van egy diszkrét optimalizálási probléma valamilyen célfüggvénnyel, és a k darab legjobb megoldást kell kiszámolni egy előre adott k -ra. Az ilyen k -legjobb megoldások azonban általában egymás minimális változtatásaiként jelennek meg, ahelyett, hogy valódi alternatívák lennének. A 1.1. ábra egy tipikus példát mutat erre. Egy 100×100 méretű diagramon az volt a célunk, hogy rövid útvonalakat találjunk a bal alsó sarokból a jobb felsőbe. Az élhosszak véletlen számok, amelyeket nem jelöltünk az ábrán. Az 1000 (!) legrövidebb utat számoltuk ki, és az ábra ezek unióját mutatja. A hasonlóság az egyes utak között feltűnő. Ha az ábrát egy kicsit nagyobb távolságból nézzük, akkor az a benyomásunk támad, mintha azon csak egyetlen útvonal lenne, amit egy ecsettel rajzoltak. (A 1.2. pontban majd szintén a rövid alternatív útvonalak kiszámítása lesz az egyik legjobb példa.) 1.1. ábra.1000 legrövidebb út egy 100×100 -as rács-gráfban, egymásra nyomtatott megjelenítésben. Gyakran előfordul, hogy a,,több választási lehetőség” fogalmát egy másik értelemben használják, mégpedig a,,több választási lehetőséges teszt” értelemben. Ez a dolog teljesen mást jelent. A két fogalom közötti különbség a lehetséges megoldások típusában és számában van: A több választási lehetőséges teszt esetén a válaszok közül legalább egy mindig,,helyes”, a többi pedig lehet helyes vagy helytelen. A teszt készítője (egy külső szakértő) előre megadja a kérdést, a lehetséges válaszokat, valamint azt, hogy mely válaszok helyesek. Az optimalizálási környezetben semmi nem világos előre. Elképzelhető, hogy a lehetséges megoldások valamennyien megfelelőek, de az is előfordulhat, hogy mindannyian rosszak. És általában nincs olyan külső szakértő, aki megmondja az embernek, hogy a választása jó-e vagy sem. Emiatt a bizonytalanság miatt a legtöbb embernek szüksége van valamennyi kezdeti időre, hogy a több választást kínáló rendszeren belül a saját szerepét megismerje és elfogadja. 1.1.1. Példák több választási lehetőséget kínáló rendszerre 1. Rövid útvonalak. Az 1990-es évek elejétől egyre népszerűbbek lettek az útvonalválasztásra megoldást kínáló PC-s programok. 1997-ben a holland AND nevű cég volt az első, amelyik olyan programot árult, amelyik nem csak kiszámolta a,,legjobb” (=legrövidebb vagy leggyorsabb) útvonalat, hanem egy vagy két alternatívát is megadott. A felhasználónak lehetősége volt arra, hogy ezeket az alternatívákat egyszerre, illetve egyiket a másik után lássa. A felhasználó további paramétereket is megadhatott, amelyek az útvonalak vizuális tulajdonságait befolyásolták. Ilyen volt például az első, második, illetve harmadik legjobb útvonal színe, vastagsága stb. Az ezzel kapcsolatos munkák F. Berger nevéhez fűződnek. Ő fejlesztett ki egy módszert, amelynek segítségével lineáris struktúrák (pl. utak, vasutak, folyók,... ) azonosíthatók szürkeárnyalatos műholdas felvételeken. Általában a lehetséges jelöltek nem egyediek, és Berger algoritmusa néhány további alternatív javaslatot is tartalmaz. Berger módszere a rövid alternatív útvonalakat generáló algoritmusokon alapul. 2. Utazóügynök probléma és lyukak fúrása nyomtatott áramköri lapokba. Az utazóügynök probléma esetén adva van N pont, és ismertek a pontok egymástól mért távolságai. A feladat egy minden pontot érintő, legrövidebb kör megtalálása. Erről a problémáról ismert, hogy NP-teljes. Ennek a feladatnak az egyik fontos alkalmazása az elektronikai iparban a lyukak fúrása nyomtatott áramköri lapokba. Ez esetben a pontoknak azok a helyek felelnek meg, ahová a lyukakat fúrni kell, és a cél a fúrófej mozgásának a minimalizálása. A gyakorlat azt mutatja, hogy ebben a feladatban nem csak a fúrófej mozgási útvonalának hossza az egyetlen feltétele a sikernek. Az útvonaltól függően kisebb-nagyobb feszültségek alakulhatnak ki a nyomtatott áramköri lapkában. A különböző útvonalak különböző feszültségszinteket okoznak, amelyeket előre nem nagyon lehet kiszámítani. Ezért célszerűnek tűnik néhány alternatív, kellően rövid útvonal meghatározása, amelyekből ki tudjuk választani azt, amelyik a feszültség minimalizálása szempontjából a legjobb. 3. Internetes keresőmotorok. A legtöbb esetben az internetes keresőmotorok rengeteg találattal térnek vissza, amelyeket egy átlagos felhasználó nem tud, és nem is akar végignézni. Ezért az ilyen keresőmotorok tervezői számára kulcsfontosságú feladat a megfelelő kivonatok készítése. Első számú szabálynak tekinthető, hogy a kapott eredménybeli első tíz találat legyen a leginkább a tárgyhoz tartozó, és legyen kellően szétszórva az eredményhalmazon belül. Ezen a területen, és az e-kereskedelem területén a több választási lehetőséget kínáló rendszereket szokás tanácsadó rendszereknek is nevezni. 4. Bolygóközi űrutak röppályái. A távoli bolygókra, kis bolygókra, és üstökösökre való űrutazás a,,high-tech” kalandok körébe tartozik. Ezeknél a feladatoknál két kulcsfontosságú tényezőre kell tekintettel lenni. Az egyiket a költségvetési korlátok jelentik, a másik pedig az, hogy az űrszondákat különlegesen nagy sebességre kell felgyorsítani, hogy időben elérjék a céljukat. A rakéták felgyorsításában a gravitáció is segíthet, oly módon, hogy a közbeeső bolygókhoz egészen közel megy el a röppályájuk. Ezzel időt és üzemanyagot is meg lehet takarítani. Az utóbbi években ezek a gravitáció által segített röppályák egyre bonyolultabbak lettek, és néha több bolygó-közeli elrepülést is tartalmaztak. A legjelentősebb példák a következők: a Cassini küldetése a Szaturnuszra a Vénusz-Vénusz-Föld-Jupiter sorozatot tartalmazta, a Rosetta küldetése a,,67P/Hurjumov-Geraszimenko” üstökösre a Föld-MarsFöld-Föld sorozatot, a Messenger küldetése a Merkúrra pedig a Föld-VénuszVénusz-Merkúr-Merkúr sorozatot. A röppályák kiszámításának tudománya jelenleg abban tud segíteni, hogy egy korábban meghatározott útvonalat finomítson. Ehhez azonban a mérnököknek megfelelő fantázia és kreativitás segítségével ilyen elsődleges, finomítható útvonalakat kell tervezniük. Ezeknek az elsődleges útvonalaknak a számítógéppel történő generálása még meglehetősen gyerekcipőben jár. 5. Számítógéppel támogatott sakk. Az 1970-es évek végétől kezdtek elterjedni a piacon kapható sakkozó számítógépek. Ezeknek a gépeknek a játékereje fokozatosan növekszik, és ma már a legjobb PC-s programok egy szinten vannak a legjobb sakkozókkal. Az olyan csapatok azonban, amelyekben emberek és számítógépek is részt vesznek, erősebbek a csak emberekből, illetve csak gépekből álló csapatoknál is. E fejezet egyik szerzője (Althöfer) több kísérletet végzett több választási lehetőséget kínáló rendszerekkel. Az egyik ilyen összeállításban, amelyet 3-agynak nevezünk, két különböző sakkprogram fut két független PC-n. Mindkét program javasol egy lépést, amelyek közül egy (emberi) sakkjátékos választ, vagyis ő hozza meg a végső döntést . Néhány kísérlet folyamán a 3-agy kitűnő teljesítményt ért el. A legfontosabb ezek közül egy 1997-es mérkőzés volt, amelyben két, egyenként 2550 Élő pont alatti játékerejű program, és egy amatőr sakkjátékos (1900-as Élővel) 5-3-ra legyőzte az első számú német sakkjátékost, Juszupov nagymestert , akinek Élő pontja 2640 volt. Ezzel a 3-agy átlagos teljesítménye 2700 Élő-pont felettinek felelt meg. Ez után az esemény után a legjobb sakkjátékosok már valahogy nem nagyon akartak a 3-agy csapatok ellen küzdeni. A 3-agy erőssége nagyrészt abban rejlik, hogy két különböző sakkbeli tudás kombinálására ad lehetőséget. A számítógépek leginkább a taktikailag helyes lépések megtalálásában jeleskednek, míg az ember erőssége a hosszú távú tervek kiválasztása. Manapság az összes profi sakkjátékos számítógépes programok segítségével készül a versenyekre, a megnyitásoknak és a partiknak valamilyen több választási lehetőséget kínáló elemzését felhasználva. Még kirívóbb a helyzet a levelezési sakkban, ahol a játékosok hivatalosan is felhasználhatják a számítógép segítségét a játszmáikban. 6. Nyaralási és utazási információk. Amikor valaki a nyaralását tervezi, általában összehasonlít néhány ajánlatot. Mindezt megteheti egy vasútállomáson, egy utazási irodában, vagy otthon az internetet böngészve. A vevők ilyenkor nem vizsgálnak meg több ezer ajánlatot, hanem csak maximum tízet-húszat. Az életben számtalan (elfogadható és kevésbé elfogadható) stratégiával találkozhatunk, amelyekkel a cégek, szállodák és légitársaságok megpróbálják a termékeiket a legjobb ajánlatok közé pozicionálni. Egy gyakori példa erre, hogy néhány légitársaság hihetetlenül rövid utazási idővel teszi közzé az ajánlatát. Ennek az az egyetlen célja, hogy azokban a szoftverekben, amelyek az A pontból a B pontba történő utazásokat menetidő szerint csökkenő sorrendben listázzák, az ajánlat a legelsők között szerepeljen. Sok esetben nem is egyszerű a vevő számára, hogy észrevegye az ilyen trükköket, amelyeknek a célja a kivonatoló eljárásokban való minél sikeresebbnek tűnő mutatkozás. 7. RNS molekulák másodlagos térszerkezetének meghatározása. Az RNS molekulák másodlagos térszerkezetének meghatározása az egyik központi téma a számítógépes biológia területén. Az erre vonatkozó legjelentősebb algoritmusok a dinamikus programozáson alapulnak. Léteznek on-line adatbázisok, ahonnan valós időben lehetséges megoldások kérhetők le. Gyakorlatok 1.1–1. Szerezzünk gyakorlatot a több választási lehetőséget kínáló rendszerekben a FreeCell nevű türelemjáték segítségével. Töltsük le a BigBlackCell (BBC) nevű segédprogramot a http://www.minet.uni-jena.de/ BigBlackCell/ címről és ismerkedjünk meg a programmal. Némi gyakorlás után egy átlagos felhasználónak a BBC segítségével óránként legalább 60 FreeCell előfordulást kell megoldania. 1.2. Több lehetséges megoldás előállítása 1.2.1. Lehetséges megoldások előállítása heurisztikák és ismételt heurisztikák segítségével Nagyon sok optimalizálási probléma valóban nehéznek mondható, ilyenek például az NP-teljes problémák. A pontos, de lassú eljárások , illetve a megbízhatatlan, de gyors heurisztikák két lehetséges megközelítését adják annak, ahogyan pontos vagy közelítő megoldásokat találhatunk. Ha az a feladatunk, hogy néhány alternatív megoldást hozzunk létre, akkor a szükségből erényt kovácsolhatunk. Általában sokkal több jónak mondható megoldás van, mint ahány tökéletes, és a különböző heurisztikák – főleg a véletlen elemeket is tartalmazók – nem mindig ugyanazt a megoldást szolgáltatják. Ezért egy egyszerű stratégia lehet az, hogy egy vagy több heurisztikát többször alkalmazunk ugyanarra a problémára, és a kapott megoldásokat feljegyezzük. Létrehozhatunk pontosan annyi megoldást, amennyire szükségünk van, de létrehozhatunk többet is, amelyekből néhányat aztán majd egy megfelelő kivonatoló módszerrel javítunk. A kivonatok készítésénél alapvető szempont a minőség, és a megoldások megfelelő szóródása. Ami a szóródást illeti, ehhez célszerű a lehetséges megoldások között valamilyen távolsági mértéket bevezetni, valamint megfelelő klaszterező algoritmusokat használni. Egyetlen heurisztika ismétlődő futtatása A legtöbb esetben a heurisztika tartalmaz valamilyen mértékű véletlent. Ez esetben nincs más teendőnk, mint, hogy a heurisztikát egymástól függetlenül többször lefuttassuk, amíg kellő számú különböző megoldást kapunk. Az alábbiakban az utazóügynök problémán fogjuk bemutatni ezt a megközelítést. Adunk egy példát a cserélő heurisztikára és a beszúró heurisztikára, és mindkét esetben rámutatunk a véletlen elemek szerepére. Amennyiben a pontok közötti d(i,j) távolság szimmetrikus, akkor a lokális keresés kettős cserével egy jól ismert cserélő heurisztika. Az alábbi pszeudokódban T(p) jelöli a T vektor p -edik komponensét. Ebben a heurisztikában a véletlen elemeket a kezdeti útvonal kiválasztása, valamint az a sorrend jelenti, ahogyan az élpárokat megvizsgáljuk a 2. lépésben. Különböző beállítások különböző lokális minimumhoz vezetnek. Nagy méretű problémák esetén, például 1000 véletlen pontot véve az egység oldalú négyzetben, az Euklideszi távolságot figyelembe véve, teljesen normálisnak tekinthető, ha 100 független futtatás majdnem 100 különböző lokális minimumhoz vezet. Az alábbi pszeudokód egy szabványos beszúró heurisztikát mutat be. Így eljárva az elemeket egyesével szúrjuk be oly módon, hogy a beszúrás után a lehető legkisebb legyen az új útvonalhossz. Itt a véletlen elem az N pont permutációja. Hasonlóan, mint a kettős cserénél, a különböző beállítások különböző lokális minimumhoz vezetnek. További véletlen elemet jelenthet, ha valamelyik lépésben az optimális beszúrás helye nem egyértelmű. Néhány modern heurisztika a természettel való hasonlóságon alapul. Ilyen esetekben a felhasználónak még több lehetősége van. A szimulált hőkezelés esetén néhány köztes megoldást kaphatunk az egyes futtatásokból. Vagy egy genetikus algoritmus egyes futásaiból is kaphatunk néhány megoldást, amelyek akár különböző generációkat reprezentálhatnak, akár egy kiválasztott generáció többszörös megoldásait. A cserélő heurisztikák ismételt futtatására egy speciális technikát jelent a lokális optimumok perturbálása. Először lefuttatjuk az eljárást egy lokális optimum megtalálására . Ezután ezen az optimumon véletlenszerű lokális változtatásokat végzünk. Az így kapott megoldásból kiindulva újra elindítunk egy lokális keresést, ami egy második lokális optimumhoz vezet. Ezen ismét véletlenszerű változtatásokat végzünk, és így tovább. A véletlenszerű változtatások mértéke azt fogja befolyásolni, hogy a lokális optimumok sorozata mennyire lesz különböző egymástól. Még a determinisztikus heurisztikák alkalmazása esetén is vannak esetek, amikor több lehetséges megoldást kaphatunk. A holtversenyes esetekben például a választástól függően más-más eredményre jutunk, vagy a számolás pontossága (a kerekítési szabályok) is okozóhat ilyesmit. A 1.2.6. pontban tárgyaljuk azokat a büntető módszereket , amelyekben a paramétereket mesterségesen megváltoztatjuk (pl. növeljük az élhosszakat) az ismétlődő futtatások során. Az úgynevezett tetszőleges futási idejű algoritmusokban , mint például a keresési fa iteratív mélyítése, a köztes megoldások használhatók fel alternatív jelöltekként. A lehetséges megoldások összegyűjtése különböző heurisztikák alkalmazásával Ha ugyanarra a problémára több heurisztika is ismeretes, akkor mindegyikük szolgáltathat egy vagy több megoldásjelöltet. A 1.1.1. pont 5. részében ismertetett 3-agy összeállítás egy jó példája a több választást kínáló rendszereknek, amelyek több program futását használják fel. Az ott említett két program független egymástól, és különböző gépeken is futnak. (A versenysakkot szigorú időkorlátok keretei között játsszák, ahol 3 perc jut egy lépésre. Ha a két programot egy gépen futtatnánk multitaszk üzemmódban, azzal számítási erőforrásokat veszítenénk, és ez Heinz szerint körülbelül 60-80 Élő-pontba kerülne.) A 3-agy konfigurációnál használt sakkprogramok normális, megvásárolható programok, nem olyanok, amiket speciálisan a több választást kínáló rendszer számára terveztek. Minden program tartalmazhat hibákat. A független programokat használó, több választási lehetőséget kínáló rendszerek egy nyilvánvaló előnnyel rendelkeznek a katasztrofális hibák tekintetében. Ha két független programot futtatunk, amelyek mindegyikénél p a katasztrofális hiba bekövetkezésének a valószínűsége, akkor az együttes bekövetkezés valószínűsége p2 -re csökken. Egy ellenőrző szerepet betöltő ember általában észre fogja venni, amikor a megoldásjelöltek katasztrofális hibát tartalmaznak. Ezért az az eset, amikor az egyik megoldás normális, a másik pedig katasztrofális (ennek valószínűsége egyébként 2p(p1) nem fog hibához vezetni. Egy további előnyt jelent még, hogy ilyenkor a programoknak nem kell valamiféle k -legjobb vagy k -választást megvalósító módszert tartalmazniuk. A gépek által kínált egybevágó javaslatokat lehet úgy tekinteni, mint annak a jelét, hogy az adott megoldás éppen megfelelő. A független programokat használó, több választási lehetőséget kínáló rendszereknek azonban vannak gyenge pontjai is: Ha a programok között jelentős tudásbeli különbség van, akkor a döntést hozó személy nehezen fogja rászánni magát, hogy a gyengébb gép megoldását válassza. Több lépéses műveletek esetén a különböző programok javaslatai egymással inkompatibilisek lehetnek. Gyakran előfordul, hogy az operációs rendszertől és a futtatott programoktól függően, egy PC nem elég stabilan működik multitaszk üzemmódban. És természetesen az sem mindig biztosított, hogy a programok valóban függetlenek egymástól. Az 1990-es évek végén például Németországban számos közúti útvonaltervező program volt kapható különböző nevekkel és interfészekkel. Valójában azonban mindegyik négy független program kernel és adatbázis valamelyikén alapult. 1.2.2. Büntető módszer egzakt algoritmusokkal Valamivel jobban kézben tartott módot ad a szóba jövő megoldások megtalálására az úgynevezett büntető módszer . Ennek a módszernek az alapötletét az útvonaltervező példán keresztül illusztráljuk. Induljunk ki egy R1 optimális (vagy megfelelő) útvonalból és keressünk egy R2 alternatív megoldást, amelyik a lehető legjobban kielégíti az alábbi két feltételt.(i) R2 -nek megfelelőnek kell lennie a célfüggvény szempontjából. Ellenkező esetben nincs értelme, hogy R2-t válasszuk. A példánknál maradva, most az útvonal hossza az elsődleges cél. (ii) R2 -nek nem szabad nagyon hasonlítania az eredeti megoldásra. Ellenkező esetben nem beszélhetünk valódi alternatíváról. Az úgynevezett mikro mutációk esetén nagy az esélye annak, hogy az összes egymáshoz hasonló megoldásjelölt ugyanazzal a gyenge ponttal rendelkezik. A példánkban a,,hasonlóság mérésére” alkalmas lehet az R1 -ben és R2 -ben is megtalálható közös részek hossza. Ez azt jelenti, hogy R2 -nek rövidnek kell lennie, de emellett R1 -gyel kevés közös részének kell lennie. E cél elérése érdekében két célfüggvény kombinációját fogjuk használni. Az egyik az útvonal hossza, a másik a közös részek hossza. Ezt úgy fogjuk elérni, hogy az R1 -beli szakaszokat büntetni fogjuk, és ennek a módosított legrövidebb útvonal problémának keressük az R2 megoldását. A büntetés mértékének változtatásával különbözőképpen súlyozhatjuk az (i) és (ii) feltételeket. Az egyik legegyszerűbb megközelítés az, amikor egy relatív büntető tényezőt használunk. Ez azt jelenti, hogy az R1 -hez tartozó szakaszok hosszát megszorozzuk 1+ɛ -nal. Tekintsük az alábbi példát. 1.1. példa. Adott egy G=(V,E) gráf súlyozott élhosszakkal. A 1.2. ábrán az élek hosszát a melléjük írt számok jelzik. Az S -ből T -be vezető legrövidebb út PD, amelynek hossza 23, és a következő csúcsokat érinti: SACDFT. Ha a PD éleinek hosszát megszorozzuk 1.1-del, és megoldjuk a kapott legrövidebb út problémát, akkor a PB útvonalat kapjuk, amelynek módosított hossza 25, eredeti hossza 23.7, és a következő csúcsokat érinti: SABFT.PB és PD közös részei az SA és FT szakaszok, amelyeknek összhossza 13. 1.2. ábra. A1.1. , 1.2. és 1.6. példákhoz tartozó gráf.ɛ méretét mindig a körülményeknek megfelelően kell megválasztani. Az AND cég piacon kapható útvonaltervező programjában a legrövidebb útvonal minden szakaszát 1.2-del szorozták meg, vagyis ɛ=0.2. Az alternatív útvonal ezek alapján kerül kiszámításra. Berger munkájában a műholdas felvételeken szereplő lineáris struktúrák (utcák, folyók, reptéri kifutópályák) felismerése szintén a legrövidebb útvonal módszerrel történik. Itt ɛ=1.0 bizonyult megfelelő választásnak, ami érdekes alternatív megoldásokat adott. A relatív büntető tényező helyett használhatunk additív büntető tagot is. Ez azt jelenti, hogy minden olyan élhez, amelyet büntetni szeretnénk, hozzáadunk egy konstans ɛ-t. A fenti algoritmusban ekkor csupán a 4. lépést kell megváltoztatnunk az alábbira. 1.2. példa. Adott a 1.1. példából már ismert G=(V,E) gráf (lásd a 1.2. ábrán). Az S -ből T -be vezető legrövidebb út most is PD , amelynek hossza 23 , és amely a következő csúcsokat érinti: SACDFT. Ha a PD éleihez hozzáadunk 0.1 -et és megoldjuk a kapott legrövidebb út problémát, akkor a PE útvonalat kapjuk, amelynek módosított hossza 23.4, eredeti hossza 23.1, és a következő csúcsokat érinti: SACEFT.PD -nek és PE -nek három közös éle van. Alapjában véve az additív büntető tag nem rosszabb a relatívnál. Az utóbbinak, a multiplikatívnak azonban megvan az az előnye, hogy nem érzékeny az élek mesterséges kettévágására. A büntető módszerek általánosításához hasznos a következő definíció. 1.1. definíció (összeg típusú optimalizálási probléma). Legyen E egy tetszőleges véges halmaz, S pedig egy E részhalmazaiból álló halmaz. E-t alaphalmaznak nevezzük, S elemeit pedig E megengedett részhalmazainak. Legyen w:ER egy valós értékű súlyfüggvény az E -n. Minden BS -re legyen w(B)=eBw(e). A minBSw(B) optimalizálási problémát összeg típusú optimalizálási problémának, vagy röviden csak -típusú problémának nevezzük. Megjegyzések. 1. A BS elemeket szokás megengedett megoldásoknak is nevezni. 2. Minden maximalizálási probléma átalakítható minimalizálási problémává ha w-t w -vel helyettesítjük. Ezért a maximalizálási problémákat is típusú problémának fogjuk nevezni. 1.2.3. Példák -típusú problémákra Legrövidebb út probléma Hozzárendelési probléma Utazóügynök probléma Hátizsák probléma Sorozat csoportosítási probléma 1.3. példa. Tekintsük a hátizsák problémát. Adott egy I={I1,I2,...,In} elemhalmaz, egy w:IR+ súlyfüggvény, egy v:IR+ értékfüggvény és a hátizsák kapacitása C. A feladat az, hogy határozzuk meg azt a legértékesebb elemhalmazt, amelyek összsúlya nem haladja meg a hátizsák kapacitását. Ha I-t tekintjük alaphalmaznak, S pedig azon részhalmazok összessége, amelyek összsúlya kisebb vagy egyenlő, mint C, akkor egy -típusú problémához jutunk. Maximalizálnunk kell v(B)-t BS -re. 1.2.4. A büntető módszer absztrakt megfogalmazása típusú problémákra 1.2. definíció (büntető módszer). Legyen E egy tetszőleges halmaz, S pedig álljon E megengedett részhalmazaiból. Legyen w:ER egy valós értékű, p:ER0 pedig egy nem negatív valós értékű függvény az E -n. Minden ɛ>0 -ra legyen Bɛ egy optimális megoldása a minBSfɛ(B), problémának, ahol fɛ(B):=w(B)+ɛp(B). Egy olyan algoritmussal, amelyik képes a büntetés nélküli minBSw(B) problémát megoldani, megtalálhatjuk Bɛ megoldásait is. Ehhez csak a w függvényt kell módosítanunk, oly módon, hogy minden eE -re w(e)-t helyettesítjük w(e)+ɛp(e)-vel. Bɛ-t ɛ -büntetés melletti megoldásnak vagy ɛ alternatívának nevezzük. Definiáljuk ezen kívül B-t, mint a következő probléma megoldását: amely a minimális p(B) értékkel rendelkezik, és az ilyen megoldások között minimális w(B) értékkel. Megjegyzés. Amennyiben w és p is pozitív, valós értékű függvények, ekkor egyfajta szimmetria áll fenn az optimális megoldások körében: B* pontosan akkor lesz ɛ -büntetés melletti megoldás ( 0<ɛ< ) a (w,p) függvénypárra nézve, ha B*(1/ɛ) büntetés melletti megoldás a (p,w) függvénypárra nézve. A szimmetria megőrzése miatt van értelme definiálni B0-t, ami optimális megoldása a következő problémának: lex minBS(w(B),p(B)). Ez azt jelenti, hogy B0 nem csak optimális megoldás a w célfüggvényre nézve, hanem az ilyen megoldások között a minimális p értékkel rendelkezik. 1.4. példa. Adjuk meg a formális definícióját a 1.1. példának ebben az absztrakt -típusú megfogalmazásban. Ismerjük az S -ből T -be vezető PD legrövidebb utat, és keresünk egy alternatív, jó megoldást. A p büntető függvényt a következőképpen definiáljuk: Büntetés melletti megoldások keresése az összes ɛ0 paraméterre Gyakran előre nem látható, hogy mely ɛ paraméter mellett kapunk használható alternatív megoldásokat. Egy,,oszd meg és uralkodj” jellegű algoritmussal megtalálhatjuk az összes olyan megoldást, amelyik valamelyɛ -ra előállna. Véges S halmazokra megadunk egy hatékony algoritmust, amelyik egy viszonylag kicsi BS megoldásokból álló, a következő tulajdonságokkal rendelkező halmazt állít elő: minden BB elemre létezik olyan ɛR+{} , hogy B optimális megoldás az ɛ büntető paraméter mellett; minden ɛR+{} -re létezik olyan BB elem, hogy B optimális megoldás az ɛ büntető paraméter mellett; B a fenti két tulajdonsággal rendelkező összes halmazrendszer közül a minimális elemszámmal rendelkezik. Egy olyan B megoldást, amelyik legalább egy büntető paraméter mellett optimális, büntetés-optimálisnak nevezünk. A következő algoritmus büntetés-optimális megoldásoknak egy olyan halmazát keresi meg, amelyek minden ɛR+{}-t lefednek. Az egyszerűbb azonosíthatóság kedvéért a B halmaz elemeit rögzített sorrendben adjuk meg (Bɛ(1),Bɛ(2),...,Bɛ(k)), ahol 0=ɛ(1)<ɛ(2)<...<ɛ(k)=. Az algoritmusnak ellenőriznie kell, hogy ɛ(i)<ɛ(i+1) esetén ne létezzen olyan köztes ɛ,ɛ(i)<ɛ<ɛ(i+1), hogy erre a büntető paraméterre sem Bɛ(i) sem Bɛ(i+1) nem optimális. Ellenkező esetben az algoritmusnak azonosítania kell legalább egy ilyen ɛ-t, és keresnie kell egy ɛ -büntetés melletti Bɛ megoldást. Az alábbi pszeudokód 11. lépésében a Border [i] változót akkor állítjuk 1 -re, ha kiderül, hogy nem létezik ilyen köztes ɛ. Az alábbiakban látható a pszeudokód, amelyhez néhány megjegyzést is fűztünk. Algoritmus büntetés-optimális megoldások olyan B sorozatának megtalálására, amelyek minden ɛ0 -ra lefedik a következő problémát: minBSfɛ(B) ahol fɛ(B)=w(B)+ɛp(B). Az algoritmus végén B különböző büntetés-optimális megoldások sorozata lesz, az E vektor pedig egymás utáni epszilonokat fog tartalmazni. A fenti algoritmus a következő tulajdonságokon alapul: 1. Ha B egy ɛ -optimális megoldás, akkor létezik olyan IB=[ɛl,ɛh] intervallum ( ɛl,ɛhR{} ), hogy B optimális minden ɛIB paraméterre, más paraméterre viszont nem optimális. 2. Két különböző B és B megoldásra, és a hozzájuk tartozó nem üres IB és IB intervallumokra csak a következő három eset valamelyike fordulhat elő. IB=IB . Ez pontosan akkor igaz ha w(B)=w(B) és p(B)=p(B). IB és IB diszjunktak. IBIB={ɛ¯} , vagyis a metszet egyetlen epszilont tartalmaz. Ez az eset akkor áll fenn, ha IB és IB szomszédos intervallumok. Az E halmaz végessége miatt csak véges sok BS megengedett megoldás létezik. Ezért csak véges sok optimalitási intervallum lehet. Így (1)-ből és (2)-ből következik, hogy a [0,] intervallumot fel tudjuk osztani intervallumoknak a következő halmazára: {[0=ɛ1,ɛ2],[ɛ2,ɛ3],...,[ɛk,ɛk+1=]} . Minden intervallumra vonatkozóan különböző B megoldásokat kapunk, amelyek optimálisak az intervallumbeli összes ɛ -ra. Az ilyen megoldást az intervallum reprezentánsának nevezzük. 3. Az algoritmus célja, hogy ezeknek az optimalitási intervallumoknak a határait megtalálja, és minden intervallumra találjon egy reprezentáns megoldást. Az iteráció minden lépésében vagy egy új intervallum reprezentánsát, vagy két intervallum között egy új határt találunk meg (7-13. lépések). Ha k darab optimalitási intervallumunk van, ahol k2, akkor elegendő 2k1 darab minBSw(B)+ɛp(B) típusú problémát megoldani, hogy valamennyit megvizsgáljuk, és megtaláljuk a reprezentáns megoldásokat. Az ɛ -alternatívák unimodalitási tulajdonsága Amennyiben csak egy ɛ -alternatívát számolunk ki, felmerül a kérdés, hogy milyen büntető paramétert használjunk, hogy a,,lehető legjobb” alternatív megoldáshoz jussunk. Ha a büntető paraméter túl kicsi, az optimális és az alternatív megoldás túlságosan hasonló egymáshoz, és ez nem ad valódi választási lehetőséget. Ha a paraméter túl nagy, az alternatív megoldás túlságosan gyenge lesz. A legjobb választásnak az tűnik, ha,,közepes” ɛ-t választunk. Ezt fogjuk illusztrálni a következő, útvonaltervező példában. 1.5. példa. Tegyük fel, hogy egy adott kezdő és végpont közötti útvonalat kell megterveznünk. Ismerjük az átlagos utazási időket minden szakaszra vonatkozóan, és két útvonalat tervezhetünk. Az utolsó pillanatban ismerjük meg a tényleges utazási időket, és ekkor választhatjuk ki a gyorsabbat a két jelöltünk közül. Legyen az első útvonal az, amelyik az átlagos utazási idők alapján a leggyorsabb, a második pedig egy olyan, amit a büntető módszer szerint találtunk. A kérdés az, hogy milyen büntető paramétert használjunk, hogy a gyorsabb út tényleges utazási idejét minimalizálni tudjuk Konkrétan, vegyünk véletlenszerűen generált példákat a legrövidebb útvonal problémára egy 25×25 -ös méretű súlyozott, irányított, rácsos G=(V,E,w) gráfban. Az élek súlyainak eloszlása legyen egyenletes a [0,1] intervallumban. Kiszámoljuk a bal alsó sarokból a jobb felsőbe vezető, minimális súlyú P0 útvonalat. Ezután oly módon büntetjük a P0 éleit, hogy megszorozzuk azokat 1+ɛ -nal, és kiszámolunk egy sor ɛ büntetés melletti megoldást Pɛ1 -et, Pɛ2 -őt,..., Pɛ30 -et, ɛ=0.025,0.050,...,0.750 re. Így 30 megoldás párt kapunk, {S0,Sɛ1},{S0,Sɛ2},...,{S0,Sɛ30} -at, ezeket tudjuk összehasonlítani. Az élek w(e) súlya a késedelem nélküli, átlagos utazási időt jelöli , vagyis azt a minimális időt, amire forgalmi dugó nélkül az adott útszakaszon szükség van. Az élre vonatkozó w^(e)tényleges utazási idő ettől a következőképpen térhet el: egymástól függetlenül minden élre. Itt a λc(e) számok egymástól független véletlen számok, amelyek egyenletesen oszlanak el az [1,c] intervallumban. A 0p1 paramétert hiba valószínűségnek , a c1 paramétert pedig hiba szélességnek nevezzük. Minden {S0,Sɛi} párra kiszámoljuk a w^(S0) és w^(Sɛi) függvények minimumát. Azért, hogy jobban érzékeljük annak előnyét, hogy két választási lehetőségünk van egy helyett, képezzük az előbbi értéknek az S0 optimális megoldás értékével vett hányadosát. φɛi=min{w^(S0),w^(Sɛi)}w^(S0)(i=1,...,30). Kiszámoltuk a φɛi értékeket 100,000 véletlenszerűen generált 25×25 -ös rácsos gráfra, ahol a hiba valószínűség p=0.1 volt, a hibaszélesség pedig c=8 . A 1.3. ábrán a φ¯ɛi átlagos értékeit láthatjuk ɛ1=0.025,ɛ2=0.050,...,ɛ30=0.750 -re. 1.3. ábra.φ¯ɛi értékei ɛ1=0.025,ɛ2=0.050,...,ɛ30=0.750 -re 25×25 -ös rácson. Amint az a 1.3. ábrán is látható, a megoldás párok φɛ várható minősége unimodális ɛ -ra nézve. Ez azt jelenti, hogy φɛ először csökken, majd növekszik növekvő ɛ -ra. Ebben a példában ɛ*0.175 az optimális büntető paraméter. További kísérletek azt is kimutatták, hogy az optimális paraméter ɛ* a probléma méretének növekedésével csökken. (Például ɛ*0.6 volt 5×5 -ös rácsokra, ɛ*0.17525×25 -ös rácsokra, és ɛ*0.065100×100 -as rács gráfokra.) A büntetéses megoldások monotonitási tulajdonságai Függetlenül attól, hogy egyszerre az összes ɛ -büntetés melletti megoldást generáljuke, vagy csak egyetlen egyet, a következő strukturális tulajdonságok bizonyíthatók: Az ɛ büntető tényező fokozatos növekedésével olyan Bɛ megoldásokat kapunk, amelyekre a célfüggvény p büntető része monoton módon egyre jobban illeszkedik (a megoldás egyre kevesebb büntetett részt tartalmaz), az eredeti w célfüggvény monoton módon egyre rosszabbá válik, ami kompenzálja a büntető részben bekövetkező javulást. A fenti állításokat a következő tétel mondja ki pontosan. 1.3. tétel. Legyen w:ER egy valós értékű függvény, p:ER+ pedig egy pozitív valós értékű függvény az E -n. Legyen Bɛ a 1.2. definíciónak megfelelően definiálva minden ɛR+ -ra. Ekkor a következő négy állítás igaz.1. p(Bɛ) gyengén monoton csökkenő ɛ -ra nézve. 2. w(Bɛ) gyengén monoton növekvő ɛ -ra nézve. 3. A w(Bɛ)p(Bɛ) különbség gyengén monoton növekvő ɛ -ra nézve. 4. w(Bɛ)+ɛp(Bɛ) gyengén monoton növekvő ɛ -ra nézve. Bizonyítás. Legyen δ és ɛ két tetszőleges nem negatív valós szám, amelyekre 0δ<ɛ.Bδ és Bɛ definíciójából adódóan a következő egyenlőtlenségek teljesülnek. egyenlőtlenséget kapjuk. Több alternatív megoldás létrehozása ugyanarra az ɛ büntető paraméterre Ha adva van egy S0 megoldás és további alternatív megoldásokra van szükségünk, akkor alkalmazhatjuk a büntető módszert többször egymás után, különböző ɛ1<...<ɛm paraméterekkel büntetve az S0-t. Az így kapott megoldások rendre Sɛ1,Sɛ2,...,Sɛm . Ennek a módszernek az a nagy hátránya, hogy csak az eredeti S0 megoldásnak és az egyes alternatív megoldásoknak a közös részére van hatása az ɛi értékeknek, de két különböző alternatív megoldás közös részére nincsen hatása. Ezért az Sɛi és Sɛj nagyon hasonló is lehet különböző i -re és j -re (ij). Ezt elkerülhetjük, ha a büntető módszert iteratívan alkalmazzuk ugyanarra az ɛ -ra. Az 5. lépést a következő változattal is helyettesíthetjük: Az első esetben (5) a j számú S0,S1,...Sj1 megoldás közül r -hez tartozó megoldásrészt rɛ tényezővel bünteti. A második esetben ( 5* ) az S0,S1,... or Sj1 megoldások közül legalább egyhez tartozó megoldásrészt egyszeres multiplicitással bünteti. A teljesítménybeli különbség a két eset között jelentős lehet. A legrövidebb útvonal problémára azonban három ( S0,S1 és S2 ) megoldás esetén az (5) változat valamivel jobb eredményt adott. 1.6. példa. Vegyük ismét a 1.2. ábrán látható G=(V,E) gráfot. Az ɛ=0.1 büntető paraméterre vonatkozóan keressünk három megoldást. Az S -ből T -be vezető legrövidebb út PD , amelynek hossza 23 , és a következő csúcsokat érinti: SACDFT. Ha a PD éleinek hosszát megszorozzuk 1.1-del, és megoldjuk a kapott legrövidebb út problémát, akkor a PB útvonalat kapjuk, amely a következő csúcsokon megy keresztül: SABFT. Ha az (5) lépésben megadott módszert követjük, akkor az (A,C),(C,D),(D,F),(A,B) és (B,F) élek hosszait kell 1.1 büntető tényezővel megszoroznunk. Az (S,A) és (F,T) éleket 1.2-del kell megszoroznunk (dupla büntetés). Az ily módon kapott optimális megoldás PH lesz, ami az SGHT csúcsokon megy keresztül. 1.2.5. Lineáris programozás – büntető módszer Jól ismert tény, hogy a legrövidebb útvonal probléma , hasonlóan sok más áramlási problémához , lineáris programozással is megoldható. A lineáris programozás segítségével alternatív megoldások is létrehozhatók. Először az eredeti legrövidebb útvonal problémára mutatjuk be a lineáris programozást. A legrövidebb útvonal probléma lineáris programként megfogalmazva Vegyünk egy G=(V,E) irányított gráfot, és egy w:ER+ függvényt, amelyik a gráf minden éléhez egy hosszúságot rendel. Legyen s és t a gráf két megkülönböztetett pontja. Melyik a legrövidebb egyszerű útvonal s -ből t -be? Minden e=(i,j)E élre bevezetünk egy xe változót. xe -nek 1 értéket kell kapnia ha az e él része a legrövidebb útvonalnak, egyébként pedig 0-t. Jelöljük S(i)={jV:(i,j)E}V -vel az i csúcsra rákövetkező csúcsok halmazát, P(i)={jV:(j,i)E}V -vel pedig az i csúcsot megelőző csúcsok halmazát. Az LP legrövidebb-út lineáris program a következőképpen formalizálható: A kezdő és végpontra vonatkozó feltételek miatt s egy forrás, t pedig egy nyelő. A Kirchhoff-feltételek miatt nincs több forrás, sem pedig nyelő. Ezért kell, hogy legyen egy s -ből t -be vezető,,kapcsolat”. Nem nyilvánvaló, hogy ez a kapcsolat egy egyszerű út. Az xe változóknak lehetne nem egész értéke is, vagy körök is előfordulhatnának bárhol. Van azonban egy alapvető áramlástani tétel, amelyik azt mondja ki, hogy az LP legrövidebb-út lineáris programnak van olyan optimális megoldása, amelyre minden xe>0 értéke egyenlő 1-gyel. Az xe=1 -nek megfelelő élek egy egyszerű útvonalat adnak s -ből t -be. 1.7. példa. Vegyük a 1.4. ábrán látható gráfot. A legrövidebb útvonal problémához tartozó lineáris programozási feladat most hat egyenlőség feltételt tartalmaz (minden csomópontra egyet), és hét egyenlőtlenség párt (minden élre egy párt). Az optimális megoldásra xSB=xBC=xCT=1. Egy lineáris programozási feladat, amelyik két alternatív útvonalat ad meg s -ből t -be Az alábbiakban megadjuk annak a feladatnak a lineáris programozásbeli reprezentációját, amelyik két alternatív útvonalat keres meg s -ből t -be. 1.4. ábra. Példa gráf az LP-büntető módszerhez. Minden e=(i,j)E élre bevezetünk két változót, xe-t és ye-t. Ha az e él mindkét útvonalnak része, akkor xe és ye is 1 értéket fog kapni. Ha az e él csak egy útvonalnak része, akkor xe értéke 1 lesz, ye értéke pedig 0. Egyébként mind xe, mind ye0 értéket kap. ɛ>0 egy büntető paraméter, amellyel a mindkét útvonalban szereplő éleket büntetjük. A fentiek figyelembe vételével a következőképpen formalizálhatjuk az LP 2-rövid-út lineáris programozási feladatot: 1.8. példa. Tekintsük ismét a 1.4. ábrán szereplő gráfot. A két alternatív útvonal problémához tartozó lineáris programozási feladat most hat egyenlőség feltételt tartalmaz (minden csúcspontra egyet), és 27=14 egyenlőtlenség párt: A lineáris programozási feladatot úgy értelmezhetjük, mint egy minimális költségű áramlási problémát. De hol van vajon a kapcsolat a lineáris programozási feladat, és a között a probléma között, hogy keresnünk kell két útvonalat s -ből t -be? 1.4. tétel. Ha az LP 2-rövid-út lineáris programozási feladatnak van optimális megoldása, akkor van olyan (x,y) optimális megoldása is, amelyik a következő tulajdonságokkal rendelkezik. Léteznek olyan E1,E2,E3E diszjunkt halmazok, amelyekre 1. E1E2= , E1E3= és E2E3=, 2. xe=1 , ye=0 minden eE1E2, 3. xe=1 , ye=1 minden eE3, 4. xe=0 , ye=0 minden eE1E2E3. 5. E1E3 egy P 1s -ből t -be vezető utat reprezentál, E2E3 egy P 2s -ből t -be vezető utat ábrázol. E3 pedig azon élek halmaza, amelyek mindkét útvonalban szerepelnek. 6. Nem létezik olyan (Q1,Q2) ) útvonal pár, amelyik jobb lenne (P1,P2) -nél, azaz w(P1)+w(P2)+ɛw(P1P2)w(Q1)+w(Q2)+ɛw(Q1Q2), minden (Q1,Q2) párra . Ez éppen azt jelenti, hogy a P1 és P2 -beli élhosszak összege plusz a kétszer használt élekre vonatkozó büntetés minimális. A fentiekhez még az alábbi megjegyzéseket fűzhetjük. Minden élhez két változó tartozik, xe és ye. Ezt értelmezhetjük úgy is, mint egy olyan utcát, amelyiken van egy normális sáv, és egy további extra sáv. Az extra sáv használata drágább, mint a normális sávé. Ha egy megoldás egy élt csak egyszer használ, akkor az olcsóbb, normális sávot használja. Ha azonban a megoldás kétszer használja az élt, akkor a normális sávot és az extra sávot is használja. Az (x,y) megoldásnak a kezdő csúcspontból a végső csúcspontba vezető útvonalának a felbontása a legtöbb esetben nem egyértelmű. A 1.5. ábrán S -ből T -be két útvonal párt is előállíthatunk, (aceg,bdfh)-t és (acfh,bdeg)-t. Mindkét pár egyformán optimális a 1.4. tétel értelmében. Így a felhasználónak kell választania közülük más, további szempontok alapján. 1.5. ábra. Példa két útvonal nem egyértelmű dekompozíciójára. A büntető módszer és az LP-büntető módszer általában különböző megoldásokhoz vezet. A büntető módszer kiszámolja az egyetlen legjobb megoldást, és egy megfelelő alternatívát. Az LP-büntető módszer két jónak mondható megoldást számol ki, amelyek között kicsi az átfedés. A 1.4. ábrán láthatjuk, hogy ez a pár nem feltétlenül tartalmazza a legjobb megoldást. Az ábrán az S -ből T -be vezető legrövidebb útvonal P1=SBCT, amelynek hossza 3. Minden ɛ>0.1 -re az ɛ büntetés melletti megoldás P2=SACT. A (P1,P2) útvonal pár összhossza 6.1, a közös szakaszok hossza 1.0. ɛ>0.2 -re azonban az LP-büntető módszer a (P2,P3) = (SACT,SBDT) útvonalakat állítja elő, amelyek összhossza 6.3, a közös szakaszaik hossza pedig 0. Lehetséges lenne k darab megoldásjelölt útvonal megkeresése is valamely k>2 -re, ha bevezetünk k darab xe0,xe1,...,xek1 változót minden e élre, és beállítjuk s kínálatát és t keresletét k -ra. Célfüggvényként használhatjuk például a következőt: Az LP büntető módszer nem csak a legrövidebb útvonal problémára működik. Általánosíthatjuk azt bármilyen, lineáris programozással megoldható problémára. Egy hasonló módszert, az egész értékű lineáris programozásos büntető módszert alkalmazhatunk egész értékű lineáris programozási feladatokra. 1.2.6. Büntető módszer heurisztikák alkalmazásával A 1.2.2. pontban a büntető módszernek egzakt algoritmusokkal együtt való alkalmazását tárgyaltuk. Ilyen volt például a Dijkstra-algoritmus, vagy a dinamikus programozás a legrövidebb útvonal problémára. A büntető módszert azonban (egzakt megoldások helyett) heurisztikák esetén is alkalmazhatjuk több megoldás jelölt megkeresésére. 1.9. példa. Egy jól ismert heurisztika az utazóügynök problémára a lokális keresés kettős cserével (lásd a 1.2.1.1. pontot). Kérdés: Milyen ɛ0 paramétert használjunk, hogy a leggyorsabb útvonal utazási idejét minimalizálni tudjuk? A 1.5. példában már ismertetetthez hasonló kísérletet végeztek el az utazóügynök problémára 25 véletlenül kiválasztott ponttal az egységnégyzetben. A 1.6. ábra az arányosított átlagokat mutatja az ɛ0=0.000,ɛ1=0.025,...,ɛ30=0.750 értékekre. A megoldás párok φɛ várható minősége (most is) unimodális az ɛ büntetési tényezőre nézve. Ez azt jelenti, hogy φɛ először csökken, majd növekszik növekvő ɛ -ra. Ebben a példában ɛ*0.175 az optimális büntető paraméter. További kísérletek azt is kimutatták, hogy az ɛ* optimális paraméter a probléma méretének növekedésével csökken. 1.6. ábra.φ¯ɛi az ɛ0=0,ɛ1=0.025,...,ɛ30=0.750 értékekre 25×25 -ös rácson. Gyakorlatok 1.2–1. A következő, utazóügynök problémára vonatkozó programozási gyakorlat segít abban, hogy jobban átérezzük a lokális optimumok nagy változatosságát. Generáljunk véletlenszerűen 200 pontot a 2-dimenziós egységnégyzetben. Számoljuk ki a távolságokat az Euklideszi metrika szerint. Futtassuk le százszor a lokális keresést kettős cserével, véletlenül választott kezdő útvonalból kiindulva. Számoljuk meg, hogy hány különböző lokális minimumot találtunk. 1.2–2. Adjuk meg ugyanazokat a kulcsszavakat különböző internetes keresőmotoroknak. Hasonlítsuk össze a találati listákat, és azok változatosságát. 1.2–3. Formalizáljuk az utazóügynök problémát egy -típusú problémaként. 1.2–4. Bizonyítsuk be a . oldalon található megjegyzésben foglalt állítást. 1.2–5. Hogyan néz ki a p(e) büntető függvény additív büntetés esetén, mint például a 1.2. példában? 1.2–6. Bizonyítsuk be a . oldalon levő (1) és (2) tulajdonságokat. 1.2–7. Alkalmazzuk az oszd meg és fedd le algoritmust a 1.2ábrán látható legrövidebb útvonal problémára S kezdőponttal és T végponttal. Legyen w(e) az él hossza minden e -re, p(e) pedig legyen azokra az élekre, amelyek hozzátartoznak PD hez ( SACDFT útvonal) az él hossza, a többi élre pedig p(e)=0. Vagyis egy útvonalra vonatkozó büntetés értéke egyenlő lesz azon szakaszainak hosszával, amelyek közösek PD -vel. 1.2–8. Keressünk olyan ɛ>0 büntető paramétert a . oldalon levő 1.6. példában, hogy k=3 -ra az ott leírt első módszer (a pszeudokód 5. sora) három különböző útvonalat hozzon létre, a második módszer (a pszeudokód 5* sora) viszont csak kettőt. 1.3. További interaktív problémamegoldó algoritmusok Van néhány további terület, ahol egy embernek kell a számítógép által generált megoldásjelöltek közül választania. Ebben a szakaszban négy fontos esetet mutatunk be ezek közül, majd különböző vegyes témákkal zárjuk e fejezetet. 1.3.1. Tetszőleges futási idejű algoritmusok Egy ilyen tetszőleges futási idejű algoritmusban a számítógép elkezd dolgozni egy problémán, és szinte az első pillanattól kezdve folyamatosan jelennek meg a megoldásjelöltek (mindig az addig talált legjobbak) a képernyőn. Természetesen egy ilyen folyamat során a kezdeti outputok gyakran csak előzetes, vagy közelítő megoldások, amelyeknek az optimalitása nem garantált, és ezek még messze vannak a tökéletes megoldástól. Nézzünk egy példát. Az iteratív mélyítés többszörös, mélységében korlátozott keresést végez, és minden lépésben fokozatosan növeli a keresés mélységi korlátját. Tegyük fel, hogy a feladatunk jó megoldások keresése egy nagyméretű T=(V,E) fában. Legyen f:VR a maximalizálandó függvény, Vd pedig a fa azon csúcspontjainak halmaza, amelyek d távolságra vannak a gyökértől. Minden időpillanatban az éppen aktuális legjobb megoldás (Opt) jelenik meg a monitoron. Az operátor bármelyik pillanatban megállíthatja a folyamatot. Az iteratív mélyítés nem csak a számítógép és ember kölcsönhatásával foglalkozó terület számára érdekes, hanem van számos alkalmazása a teljesen automatizált számításokban is. Jó példa erre a különböző játékok fájában való keresés. A versenysakkban a programnak rögzített idő áll rendelkezésére 40 lépés megtételére. Itt az iteratív mélyítés kulcsfontosságú eszköz abban, hogy megtaláljuk az egyensúlyt az időfelhasználás és az alfa-béta keresés között. Egy másik gyakori példa tetszőleges futási idejű algoritmusokra egy heurisztika ismételt alkalmazása. Legyen f:AR valamilyen bonyolult függvény, és keressük a nagy függvényértékkel rendelkező elemeket. Legyen H egy valószínűség alapú heurisztika, amely egy megoldásjelöltet ad meg erre az (A,f) maximalizálási problémára. H lehet például valamilyen lokális keresés , vagy más gradiens módszeren alapuló eljárás. H-t alkalmazhatjuk újra és újra, egymástól független menetekben, és mindig az eddig talált legjobb megoldást kínáljuk fel kimenetként. A tetszőleges futási idejű algoritmusok harmadik alkalmazási területe a Monte Carlo szimulációk, például a Monte Carlo integráció . Egy statikus megközelítés előre meghatározott számú (pl. 1000) véletlen pont alapján működne, és ezek alapján adná meg az átlagot az outputban. Azonban már a menet közbeni átlag értékek (1, 2, 3 pont után, vagy minden 10es, 50-es blokk után) adhatnának előrejelzést arra vonatkozóan, hogy melyik régióban várható a végső eredmény, illetve, hogy van-e értelme az összes lépés végrehajtásának. A varianciáknak és a kilógó értékek gyakoriságának a megjelenítése további információt szolgáltat arra vonatkozóan, hogy mikor a leginkább érdemes megállítani a Monte Carlo eljárás futását. Az ember és számítógép együttműködését feltételező rendszerekben a tetszőleges futási idejű algoritmusok még egy további előnnyel rendelkeznek, mégpedig azzal, hogy a számítások ideje alatt az ember már értékelheti és összehasonlíthatja az előzetes megoldásjelölteket. 1.3.2. Interaktív evolúció és generatív tervezés A genetikus algoritmusok olyan kereső algoritmusok, amelyek a természetes kiválasztódáson és a természetes genetikán alapulnak. Egyetlen megoldás helyett megoldások egész populációjával foglalkoznak. A genetikus algoritmusokat gyakran alkalmazzák olyan nagy és bonyolult problémákra, amelyeknél a hagyományos optimalizálás csődöt mond. Az interaktív evolúció olyan evolúciós algoritmus, amely emberi közreműködést igényel. Az interaktív evolúció során a felhasználó választ ki egy vagy több egyedet az aktuális populációból, amelyek túlélve és önmagukat (mutációval) reprodukálva az új generációt fogják alkotni. Így az interaktív evolúcióban a felhasználó játssza a célfüggvény szerepét, és ezért meglehetősen aktív szerepe van a kereső folyamatban. Az olyan területeken mint a művészet, építészet, fényképfeldolgozás (beleértve a fantomképek tervezését), az interaktív evolúciónak egy speciális formáját, az úgynevezett generatív tervezést használják. A generatív tervezés során az aktuális generáció összes megoldását egyidejűleg láthatjuk a képernyőn. Itt az,,összes” alatt általában egy 4 és 20 közötti számra kell gondolni. Gondoljunk a fényképfeldolgozás példára, ahol a felhasználó kiválaszthatja a módosított kontrasztot, fényerőt, szín intenzitást és élességet. A felhasználó megvizsgálja az aktuális jelölteket, és egyetlen egérkattintással bejelöli azt, amelyik a legjobban tetszik neki. Az összes többi megoldás törölve lesz, és a megjelöltnek N darab újabb mutánsa generálódik. A folyamat addig folytatható amíg a felhasználó meg lesz elégedve az eredménnyel. A generatív tervezésben járatlan ember számára talán hihetetlenül hangzik, de gyakran még egy gyenge minőségű kiinduló megoldásból is néhány iteráció alatt elfogadható eredmények születnek. 1.3.3. Egymást követő rögzítések Számos probléma sokdimenziós, és így sok paraméter beállítását igényli. Ha egy ilyen probléma esetén jó megoldásoknak egy halmazát állítjuk elő heurisztikák ismételt alkalmazásával, akkor a következő többlépéses, interaktív folyamatot használhatjuk. Először néhány heurisztikus megoldást generálunk, amiket egy szakértő ember megvizsgál. A szakértő elsősorban,,tipikus” mintákat keres a megoldásokban és rögzíti ezeket. Ezután további heurisztikus megoldásokat generálunk azzal a mellékfeltétellel, hogy valamennyien tartalmazzák a korábban rögzített részeket. A szakértő ismét megvizsgálja a megoldásokat, és újabb részeket rögzít. A folyamat addig folytatódik, amíg minden rész rögzített lesz, és így egyetlen (és remélhetőleg jó) megoldást kapunk. 1.3.4. Interaktív több feltételes döntéshozatal A több feltételes döntéshozatal esetén nem egy, hanem kettő vagy több célfüggvényünk van. A feladat olyan elfogadható megoldások keresése, amelyek az összes célfüggvényt figyelembe véve a lehető legjobbak. Általában a célfüggvények többé-kevésbé ellentmondanak egymásnak, és így kizárják az egyértelmű optimum létezését. Hasznos lehet ilyenkor a,,hatékony megoldás” fogalma, amit a következőképpen definiálhatunk: egy hatékony megoldás esetén nem létezik olyan másik megoldás, amelyik legalább egy célfüggvény szempontjából jobb nála, az összes többi szempontjából pedig nem rosszabb. A több feltételes döntéshozatalnál az szokott az első lépés lenni, hogy kiszámoljuk a hatékony megoldásokat. A két feltételes esetben a,,hatékony” határt vizuálisan is megjeleníthetjük egy kétdimenziós diagramon, ami az emberi döntéshozónak jó áttekintést ad a lehetőségekről. 1.3.5. Különböző további témák Számítógépes megoldások grafikus megjelenítése. Az még nem elegendő, hogy a számítógép megfelelő megoldásjelölteket generál, az eredményeket megfelelő módon meg is kell jeleníteni. Egyetlen megoldás esetén a fontos részeket és tulajdonságokat kell kiemelni, míg több, egymással versengő megoldás esetén a különbségeket és a specialitásokat kell hangsúlyozni. Folyamatos számítógépes futás rövid emberi közbeavatkozásokkal. Ezt a módszert szokás,,1 + 23 óra mód”-nak is nevezni a következő hasonlat miatt. Az ember minden nap 1 órát ül a számítógép előtt. Ez alatt az idő alatt megnézi az elmúlt 23 órában a számítógép által előállított eredményeket, különböző interakciókat végez a géppel, valamint megmondja neki, hogy mit csináljon a következő 23 órában. Így az ember az idejének csak egy kis részét fekteti be a munkába, a gép viszont folyamatosan fut. Egy jó példa a fentiekre a levelezési sakk, ahol a számítógép segítségének igénybevétele hivatalosan is megengedett. A vezető játékosok legtöbbje egy vagy több számítógépet futtat egész nap, amelyek a kritikus állásokat és folytatásokat elemzik. A sakkozók csupán összegyűjtik ezeket az eredményeket, és naponta csak egy rövid időt töltenek az elemzésükkel. Váratlan hibák és numerikus instabilitások. ,,Minden programban van hiba!” ezt az alapszabályt gyakran elfelejtik. Az emberek túlságosan gyakran minden kritika nélkül elhiszik, amit a monitoron látnak, vagy amit a szoftvertermék leírásában olvasnak. Mégis meglepően gyakran előfordul, hogy ugyanarra a feladatra (aminek egyetlen optimális megoldása van) több független programot futtatva különböző eredményeket kapunk. A numerikus stabilitás sincs ingyen. Ugyanarra a problémára különböző programok különböző eredményt adhatnak a kerekítési hibák miatt. Ezeket a hibalehetőségeket úgy fedezhetjük fel, ha egymástól független programokat futtatunk. Természetesen a hardverben is lehetnek hibák, főleg a folyamatos miniatürizálás korában. Ezért kritikus helyzetekben az lehet a jó stratégia, ha ugyanazt a programot teljesen független gépeken futtatjuk le, lehetőleg egymástól független operátor személyzet segítségével. Gyakorlatok 1.3–1. Tekintsük az utazóügynök problémát 200 véletlenszerű (xi,yi) ponttal a [0,1]×[0,1] egységnégyzetben, az Euklideszi távolsággal. Generáljunk 100 lokálisan optimális megoldást (a kettős cserével, lásd a 1.2.1.1. pontban) és számoljuk össze, hogy melyik él hányszor fordul elő ebben a száz megoldásban. Definiáljunk egy K küszöböt (például K=30 ) és rögzítsük azokat az éleket, amelyek legalább K megoldásban előfordulnak. Generáljunk újabb 100 megoldást, úgy, hogy a rögzített élek cseréjét ne engedjük meg. Ezt ismételjük addig, amíg a folyamat nem konvergál, majd hasonlítsuk össze a végeredményt az első sorozatok jellemző lokális optimumaival. Megjegyzések a fejezethez Az,,ember-gép kapcsolat” bevezetésben idézett definíciójának forrása a,,HCI Bibliography” [13]. Sameith [16] technikai jelentésében számos kísérletet, leírást és elemzést találunk a büntető módszerre, különböző összeg típusú problémák, dimenziók és hibaszélességek esetére. A 1.3. tétel bizonyítása először [5]-ben jelent meg. Az e-kereskedelemben a több választási lehetőséget kínáló rendszereket gyakran tanácsadó rendszereknek nevezik – mint például Resnick és Varian cikkében [15] – szem előtt tartva a vevőket, akik számára az őket érdeklő termékeket ki kell listázni. Érthető okokból a kereskedelmi keresőmotorok és az e-cégek titokban tartják a kivonatoló algoritmusaikat. A 1.2.5.1. pontban említett áramlástani tétel megtalálható Ahuja, Magnanti és Orlin könyvében [1]. Egy útvonaltervező programot forgalmaz az AND cég [18]. Műholdas felvételeken alapuló útvonaltervezéssel foglalkozik Berger [8] diplomamunkája. A BigBlackCell nevű szoftver Grosse és Schwarz munkája [11]. A genetikus algoritmusokról például Goldberg [10] tekinthető jó tankönyvnek. Az interaktív evolúciót és a generatív tervezést Banzhaf [7] tárgyalja. A több feltételes döntéshozatallal több cikk is részletesen foglalkozik, az egyik alapmű Gal, Stewart és Hanne könyve [9]. Althöfer könyvében [2] a 3-agy történeti hátteréről és a versenysakkban elért sikereiről olvashatunk. A 3-agy és Juszupov nagymester közötti mérkőzésről [3] számol be. [4] általános tájékoztatást ad arról az esetről, amikor több számítógép javaslatát használva javítjuk a játékerőt. [6] néhány k -legjobb megvalósítást mutat be játékok fájában való keresésre iteratív mélyítéssel. Ezen megvalósítások képernyőmentéseit a következő web címen tekinthetjük meg: http://www.minet.uni-jena.de/www/fakultaet/iam/personen/k-best.html. [12] a sakkprogramok és más bonyolultabb játékok technikai hátterét mutatja be. M. Zuker és D. H. Turner által írt programok értékes on-line gyűjteménye található a http://www.bioinfo.rpi.edu/applications/mfold címen. A felhasználó bevihet például RNS-láncokat, és a rendszer valós időben előállítja ezen láncok lehetséges másodlagos térszerkezetét. Többek között olyan paraméterek adhatók meg, mint a,,kiszámított gyűrődések száma” (alapértelmezés = 50), vagy például az optimálistól való,,százalékos eltérés mértéke” (alapértelmezés = 5 %). A genetikai algoritmusokkal magyarul foglalkozik Álmos Attila, Győri Sándor, Horváth Gábor és Várkonyiné Kóczy Annamária könyve [17], a kapcsolódó biológiai fogalmak megismeréséhez pedig Podani János könyvét [14] ajánljuk. Irodalomjegyzék [1] R. K. Ahuja, T. L. Magnanti, és J. B. Orlin. Network Flows: Theory, Algorithms, and Applications . Prentice Hall, 1993. [2] I. Althöfer. 13 Jahre 3-Hirn . A szerző kiadása, 1998. [3] I. Althöfer. List-3-Hirn vs. Grandmaster Yussupov – report on a very experimental match . ICCA Journal, 21:52–60 and 131–134, 1998. [4] I. Althöfer. Improved game play by multiple computer hints . Theoretical Computer Science, 313:315–324, 2004. [5] I. Althöfer, F. Berger, és S. Schwarz. Generating True Alternatives with a Penalty Method . http://www.minet.uni-jena.de/Math-Net/reports/shadows/02-04report.html, 2002. [6] I. Althöfer, J. de Koning, J. Lieberum, S. Meyer-Kahlen, T. Rolle, és J. Sameith. Five visualisations of the k -best mode . ICCA Journal, 26:182–189, 2003. [7] W. Banzhaf. Interactive Evolution . In T. Back, D. B. Fogel, Z. Michalewicz, és T. Baeck Baeck, editors, Handbook of Evolutionary Computation. IOP Press, Oxford, 1997. [8] F. Berger. k alternatives instead of k shortest paths . Master’s thesis, Friedrich Schiller Egyetem, Jéna, Matematikai és Informatikai Kar, 2000. Diplomamunka. [9] T. Gal, T. Stewart, és T. Hanne, editors. Multicriteria Decision Making . Kluwer Academic Publisher, Boston, 1999. [10] D. E. Goldberg. Genetic Algorithms in Search, Optimization, and Machine Learning . Addison -Wesley, Reading, 1989. [11] A. Grosse és S. Schwarz. BigBlackCell . http://www.minet.uni-jena.de/ BigBlackCell/. [12] E. A. Heinz. Algorithmic Enhancements and Experiments at High Search Depths . Vieweg Verlag, Series on Computational Intelligence, 2000. [13] G. Perlman. hci bibliography , 2004. [14] J. Podani. Bevezetés a többváltozós biológiai adatfeltárás rejtelmeibe . Scientia, 1997. [15] P. Resnick és H. R. Varian. Recommender Systems . Communications of the ACM, 40(3):56–58, 1997. [16] J. Sameith. On the Generation of Alternative Solutions for Discrete Optimization Problems with Uncertain Data – An Experimental Analysis of the Penalty Method . http://www.minet.uni-jena.de/Math-Net/reports/shadows/04-01report.html, 2004. [17] A. Álmos, S. Győri, G. Horváth, és A. Várkonyiné Kóczy. Genetikus algoritmusok (Genetic Algorithms) . Typotex, 2002. [18] AND Software GmbH. Car routing program ”Route Germany” , 1997. Tárgymutató A, Áalaphalmaz alternatívák, valódi alternatív megoldások áramlási problémához áttekinthető alternatívák BBESZÚRÁS-AZ-UTAZÓÜGYNÖK-PROBLÉMÁRA BÜNTETÉS-AZ-UTAZÓÜGYNÖK-PROBLÉMÁRA-KETTŐS-CSERÉVEL büntetés-optimális büntető módszer , * , * büntető módszer, iteratív BÜNTETŐ-MÓDSZE-RELATÍV-BÜNTETŐ-TÉNYEZŐKKEL büntető paraméter, optimális , * Ddinamikus programozás döntéshozó E, Éegészértékű lineáris programozás egymást követő rögzítések e-kereskedelem ember-gép kölcsönhatás -alternatívák , * , * FFÁBAN-VALÓ-KERESÉS-ITERATÍV-MÉLYÍTÉSSEL Ggeneratív tervezés genetikus algoritmus , * grafikus megjelenítés gravitációs segítség H3-agy hatékony megoldás hátizsák probléma heurisztika , * , * , * heurisztikák holtversenyes esetek hozzárendelési probléma I, Íinteraktív evolúció interaktív több feltételes döntéshozatal ITERATÍV-BÜNTETŐ-MÓDSZER iteratív mélyítés , * Kkettős csere kivonatok , * klaszterező algoritmus -legjobb algoritmus Llegrövidebb kör legrövidebb út probléma , * , * lehetséges megoldások , * , * lineáris programozás lokális keresés lokális optimum megtalálása Mmegengedett megoldás , * megengedett részhalmaz mikro mutációk minimális változtatás Monte Carlo integráció NNP-teljes NP-teljes probléma numerikus instabilitások O, Óoszd-meg-és-uralkodj algoritmus Ö, Őösszeg típusú optimalizálási probléma , * Ppontos, de lassú eljárások RRNS-térszerkezet Ssakk , * sorozat csoportosítási probléma SZszámítógépes biológia szimulált hőkezelés Ttanácsadó rendszerek tetszőleges futási idejű algoritmusok , * több választási lehetőséges optimalizálás , * több választási lehetőséges teszt több választási lehetőséget adó algoritmus több választási lehetőséget kínáló rendszer , * több választást kínáló rendszer U, Úutazóügynök probléma utazóügynök probléma (TSP) , * , * , * útvonal keresése útvonaltervező , * , * , * Vvalós idejű problémák végső döntés , * Névmutató A, ÁAhuja, Ravindra K. Álmos Attila Althöfer, Ingo , * , * BBanzhaf, Wolfgang Berger, Franziska , * GGoldberg, David E. GYGyőri Sándor HHeinz, Ernst A. Horváth Gábor MMagnanti, Thomas L. O, ÓOrlin, James B. RResnick, Paul SSameith, Jörg Schwarz, Stefan TTurner, Douglas H. VVarian, Hal R. Várkonyiné Kóczy Annamária YYussupov, Arthur , * ZZuker, Michael