Egy matematikai módszer tutajos feladatok általános megoldására Scipiades Ármin 2010. szeptember 12. 1. Tutajos feladatok Létezik a logikai feladványoknak egy jól felismerhető típusa, melyben azt kell kitalálni, hogy lények bizonyos csoportja hogyan tud, adott korlátozó szabályokat betartva, egy kicsi tutajon átkelni egy folyón. Intuitívan nem különösebben nehéz megoldani ezeket a feladatokat; némi gyakorlattal, ha,,rááll az agyunk az efféle feladványokra, gyorsan rájöhetünk az adott feladat nyitjára. Az intuitív megközelítés gyorsan eredményre vezethet, mégis vannak hátrányai: az intuitív megoldás nem feltétlen minimális, vagy ha az is, minimálisságát nem bizonyítottuk matematikailag. csak egy megoldásunk lesz, nem tudjuk, van-e több, és ha van, mik? nem tudjuk bizonyítani, ha a feladványnak nincs megoldása. megoldásunk nem algoritmizálható: csak az adott feladatra érvényes, nem általános megoldás; módszerünket nem tudjuk másoknak megtanítani, és számítógépeket sem tudunk megtanítani rá. A kérdés tehát az, hogyan tudnánk matematikai alapokra helyezni ennek a típusfeladatnak a megoldását? 2. Egy nem-intuitív módszer A feladat intuitív megoldása során gondolatban fordulókra koncentrálunk: átviszünk néhány lényt a másik oldalra, megvizsgáljuk, szabályos-e a helyzet, majd visszaviszük a tutajt egy vagy több lénnyel ez egy forduló. A megoldás tehát áll helyzetekből, és az ezeket egymáshoz kapcsoló utakból ha ezt végiggondoljuk, könnyen adódik a felismerés, hogy a feladat összes megoldását felírhatjuk egy gráffal, amelyben a csomópontok a helyzetek, az élek pedig az utak. 1
A gráfot a következő lépésekkel írhatjuk fel: Írjuk fel az összes lehetséges helyzetet, vagyis a lények elhelyezkedésének összes permutációját. A helyzetek száma felülről becsülhető Vn 2ism = 2 n - nel (n a lények számát jelöli), hiszen egy lény vagy az egyik oldalra kerül, vagy a másikra. Húzzuk ki a szabálytalan helyzeteket, vagyis azokat, amelyek nem felelnek meg a kikötéseknek. Írjuk föl az éleket! Hasonlítsunk össze minden helyzetet minden más helyzettel, és írjuk föl, hogyan hozható létre az egyik helyzetből a másik. Ügyeljünk rá, hogy a gráfunk lehet irányított, és kaphatunk multigráfot is. A kapott gráf már matematikailag kezelhető: a feladat minimális megoldását például könnyen megkapjuk a Dijkstra-féle algoritmus használatával (keressük a legrövidebb utat a kezdőpont és a kívánt végpont között). Az így kapott megoldás bizonyítottan minimális megoldás lesz. A módszert, bár komplexitása magas, naiv megvalósítás esetén faktoriális nagyságrendű, különösebb gond nélkül le lehet programozni. 3. Kidolgozott példa Három ember, egy nagy majom és két kis majom szeretne átkelni a folyón. Hogyan csinálják? Evezni csak az emberek és a nagy majom tud. Egy helyen egyidőben nem lehet több majom, mint ember, mert akkor a majmok megeszik az embereket. A csónakba kettőnél többen nem férnek el. 3.1. Írjuk fel az összes lehetséges helyzetet és húzzuk ki a szabálytalan helyzeteket! A következő táblázatban E jelöli az embereket, M a nagy majmot és m a kismajmokat. Az érvénytelen sorokat pirossal, a szabályosakat zölddel színeztük. 1. E E E M m m E E M m m E 2. E E E M m m 3. E E E m m M E M m m E E 4. E E m m E M 2
5. E E M m E m 6. E E E m M m 7. E E E M m m 8. M m m E E E E M m E E m E m m E E M E E M E m m E E m E M m 9. E E E M M m E E E M m m 10. E M E E m m 11. E m E E M m 12. M m E E E m 13. m m E E E M E E E M m m 14. m E E E M m 15. M E E E m m 16. E E E M m m A huszonnégy permutációból tehát tizenhat bizonyult szabályosnak. A csomópontokhoz értéket rendelhetünk aszerint, mennyire állnak közel a kívánt helyzethez; egy helyzet értéke legyen egyenlő a célparton lévő lények számával. 3.2. Írjuk föl az éleket Fentebb azt mondtuk, hogy az élek felírásához minden helyzetet össze kell hasonlítani minden másik helyzettel: valójában egy helyzetet elég azokkal a helyzetekkel összehasonlítani, amelyek a csónak kapacitásától függően létrejöhetnek (a két helyzet eltérése kisebb a csónak kapacitásánál ne feledjük, hogy a csónakot vissza is kell vinni a kiindulási partra, kivéve az célba vezető élek esetében). Az alábbi táblázatban zölddel színeztük az alacsonyabb értékű csomópontból a magasabbik értékűbe vivő éleket, sárgával a visszafele vivő éleket, kékkel az egyenrangú csomópontok közöttieket, és fehérrel a célba vezető éleket. oda Köztes helyzet vissza 1 2 E m E E M m E m E 1 2 M m E E E m M m M 1 3 M E E E m m M E E 3
2 1 M E E E m M m M m 2 1 E E E M m E m E m 2 7 M m E E E M m m M 3 1 E E E m m M E M E 4 5 E m E m E E M m E M 4 6 E m E m E E M m E E 4 8 E E m m E E E M M 5 4 E M E m E E M m E m 5 6 E M E m E E M m E E 5 7 E m E M E E m m E E 6 4 E E E m E E M m E m 6 5 E E E m E E M m E M 7 5 E E E M E E m m E m 8 4 M m m E E E M E E 8 11 M m m E E E M m E 8 12 M m m E E E M m M 10 11 E M E E E M m m E m 10 12 E M E E E M m m M m 10 15 E M E E E M m m M 10 16 E M E E E M m m 11 10 E m E E E M m m E M 11 12 E m E E E M m m M m 11 15 E m E E E M m m M 11 16 E m E E E M m m 12 8 M m E E E M m M m 12 10 M m E E E M m m E M 12 11 M m E E E M m m E m 12 15 M m E E E M m m M 12 16 M m E E E M m m 15 10 M E E E M m m E M 15 11 M E E E M m m E m 15 12 M E E E M m m M m 15 16 M E E E M m m Ekkor már fel tudjuk rajzolni a gráfot, amelyről rögtön kitűnik, hogy van út a kezdő- és végpont között, tehát a feladatnak van megoldása. Megfigyelhető az is, hogy bizonyos helyzetek, bár a kikötéseknek megfelelnek, soha nem jöhetnek létre, ezeket a rajzon sárgával színeztük. 4
4 10 3 9 14 5 11 1 16 6 12 2 8 15 7 13 3.3. A megoldás Rendeljünk minden élhez ugyanakkora értéket, és alkalmazzuk a gráfra a Dijkstra-féle algoritmust! Négy minimális megoldás adódik (mert az 1. csomópontból a 2-ba két él vezet; illetve mert a 8. helyzetből a 11. és 12. csomóponton keresztül is célbaérhetünk). A megoldásokat a rajzon a piros élek jelzik. A négy minimális megoldásból egy önkényesen választottat közlünk: E E E M m m M m E E E m M m M E E E M m m M m E E E M m m M E E E M m m E E E M E E m m E m E E M m E m E M E m E E M m E m E E m m E M E E m m E E E M M M m m E E E M m m E E E M m E E m E E M m E m E E E M m m 5
4. Összegzés A mechanikus módszerek sosem helyettesítik a gondolkodást. A most tárgyalt módszer esetében is elmondható, hogy intuitív megközelítéssel ha úgy tetszik heurisztikusan gyorsabban és elegánsabban megoldhatóak a tutajos feladatok. Módszerünk akkor használandó, ha a feladat megoldásával végleg kátyúba jutottunk, vagy ha szeretnénk megbizonyosodni megoldásunk helyességéről illetve minimálisságáról, vagy ha szeretnénk mélyebben elemezni a feladatot. 6