Az I. 375. feladat (2015. április) |
I. 375. Készítsük el a közlekedési csomópont probléma mechanikai modelljének számítógépes változatát.
A probléma lényege: adott három város, egy közös közlekedési csomóponthoz szeretnének utat építeni úgy, hogy az összköltség minimális legyen. Az eredeti probléma mechanikai interpretációját Pólya György adta, amelynek lényege: helyezzünk el a három pontban egy-egy csigát, azokon vessünk át egy-egy kötelet, amelyet fogjunk össze egy közös pontban, a túlsó végükre pedig egy-egy azonos nagyságú súlyt erősítsünk. A rendszer egyensúlyi állapota - amikor a közös pontban ható erők kioltják egymást - adja meg a csomópont helyét. (Pólya György: Indukció és analógia, Gondolat, 1988, 165-171.)
A fenti rendszert általánosítsuk \(\displaystyle n\) pontra. A megjelenítést egyszerűsítsük azzal, hogy a csigákat a pontokat tartalmazó síkon egy adott helyen vágott lyukkal helyettesítjük. A fonalakat egy közös pontból a lyukakhoz vezetett szakaszokkal ábrázoljuk. (A közös pont a lyukon nem haladhat át.) A modell 3 pontra itt tekinthető meg: http://demonstrations.wolfram.com/PolyasMechanicalModelForTheFermatPoint/.
A számítógépes modell a következőképpen legyen használható:
\(\displaystyle \bullet\) \(\displaystyle n\) értékét a 3 és 8 között szabadon megadjuk;
\(\displaystyle \bullet\) a lyukak helyét a felületen megadhatjuk, de véletlenszerű elhelyezést is választhatunk;
\(\displaystyle \bullet\) a program az egyensúlyi helyzet felé lépésenként halad az alábbiak szerint:
\(\displaystyle a.\) a felületet felülnézetből látjuk;
\(\displaystyle b.\) a közös pontra ható erőket a belőle induló, fonálirányban mutató egységvektorokkal szemléltetjük;
\(\displaystyle c.\) léptetéskor az összeköttetési pontot a program a fenti egységvektorok eredőjének irányába mozdítja.
A megoldást bármely programozási eszközzel elkészíthetjük. Ügyeljünk a szép megjelenésre és a könnyű használhatóságra.
Beküldendő egy tömörített (i375.zip) állományban a megoldás leírása (i375.pdf), amely tartalmazza megoldás lényeges lépéseinek ismertetését; valamint a program forrásnyelvi változata és a fordításához és működéséhez szükséges fájlok.
(10 pont)
A beküldési határidő 2015. május 11-én LEJÁRT.
Meglepő volt, hogy a szabad szoftverválasztás ellenére egy kivétellel mindenki C#-ban oldotta meg a feladatot. Az egy kivételt Kovács Balázs Marcell jelentette, aki a Wolfram Matematica szoftvert használta. Megoldása tökéletesen megfelel a kívánalmaknak, ezért közöljük: i375KovacsBM.zip
Az értékelés szempontjai egy-egy pontért: n értéke beállítható; a lyukak helye megadható; a lyukak helyét véletlenszerűen is generálhatjuk; a közös pontra ható erők irányát megadja (a fonal kirajzolása is elég); az erők nagyságát is megadja (egyforma nagyságú erők hatnak); a pont az eredő irányába mozdul; beáll az egyensúlyi állapot (kis rezgés megengedett); szép megjelenítés; könnyű használhatóság; elfogadható dokumentáció.
Statisztika:
6 dolgozat érkezett. 10 pontot kapott: Kovács Balázs Marcell. 9 pontot kapott: Dombai Tamás, Fényes Balázs. 8 pontot kapott: 2 versenyző. 6 pontot kapott: 1 versenyző.
A KöMaL 2015. áprilisi informatika feladatai