![]() |
Az A. 859. feladat (2023. szeptember) |
A. 859. Adott egy n csúcsú U útgráf, melynek az egyik csúcsában egy bekötött szemű játékos tartózkodik. Az út csúcsai meg vannak számozva 1-től n-ig a természetes számokkal, nem feltétlenül a szokásos sorrendben. Egy lépésben a játékvezető elárulja a bekötött szemű játékosnak, hogy 1- vagy 2-fokú csúcsban van. Ha 1-fokú csúcsban van, akkor csak az egyetlen szomszédjába léphet, 2-fokú csúcs esetén pedig a játékos eldöntheti, hogy a kisebb vagy nagyobb sorszámú szomszédba szeretne lépni. A játékos összes információja k lépés után a k darab fokszám, amit elárultak neki, és emlékszik a saját választásaira is. Van-e olyan stratégiája a játékosnak, amellyel biztosan meg tudja állapítani véges sok lépésen belül, hogy hány csúcsa van az útnak?
Javasolta: Németh Márton (Budapest)
(7 pont)
A beküldési határidő 2023. október 10-én LEJÁRT.
Van ilyen stratégia.
Azt nevezzük egy algoritmusnak, ami minden lépésben leírja, hogy kisebb vagy nagyobb szomszédba lépjünk, és minden lépésben megjósolja, hogy egy 1 fokszámú csúcsba lépünk-e azzal a lépéssel. Azt mondjuk, hogy egy algoritmus hibába ütközik, ha az előírt lépéseket követve úgy lépünk 1 fokú csúcsba, hogy az algoritmus nem jósolta arra a lépésre, vagy pedig nem lépünk 1 fokú csúcsba egy olyan lépésnél, amiről az algoritmus azt jósolta, hogy abba fogunk lépni.
Lemma: Egy n hosszú út minden sorszámozására létezik olyan véges hosszú alogritmus, ami ebben az útban követhető, de minden n-nél hosszabb úton futtatva hibába ütközik.
Ha a lemma igaz, könnyű belátni a feladat állítását. Minden k-ra véges sok sorszámozása létezik egy k hosszú útnak, ezek mindegyikének az algoritmusát lefuttatjuk, először k=1-re, aztán k=2-re, és így tovább. Ha valójában az út n hosszú, akkor a k<n hosszú utakhoz tartozó algoritmusok mind hibába ütköznek, így tudni fogjuk, hogy az út legalább n hosszú. Ezután az n hosszú út összes sorszámozásához is sorban futtatjuk a hozzájuk tartozó algoritmust. Mivel az út valójában n hosszú, a valódi sorszámozásához tartozó algoritmus nem ütközik hibába. Abból, hogy valamelyik algortimus nem ütközött hibába, tudhatjuk, hogy az út nem lehet n-nél hosszabb. Tehát ebből kiderül, hogy az út n hosszú. Mivel minden algortimus véges hosszú, és minden n-re véges sok algoritmust kell lefuttatni, amíg idáig eljutunk, ezért ez a stratégia véges sok lépésben megállapítja, hány csúcsa van az útnak.
Lemma bizonyítása:
Adott egy n-hosszú út sorszámozással együtt, ezt U-nak nevezzük. Ehhez készítünk algoritmust. Először feltesszük, hogy kezdetben az 1-es számú csúcsában állunk. Elvégezzük azt a lépéssorozatot, ami az U útban az 1-es csúcsból elvinne az egyik végpontba. Ha ennek a végén nem egy végpontban vagyunk, vagy már korábban egy végpontba léptünk, az azt jelenti, hogy nem az 1-es csúcsból indultunk. Ekkor feltesszük, hogy a 2-es csúcsból indultunk eredetileg. Ha az eddigi lépéssor eredménye nem konzisztens azzal, hogy a 2-esből indultunk, akkor ezt is elvetjük, és feltesszük, hogy a 3-asból indultunk. Ha konzisztens, akkor megnézzük, hova értünk volna el az U útban a 2-esből indulva az eddigi lépéssorozattal, majd elvégezzük azt a lépéssorozatot, ami onnan elvinne az egyik végpontba U-ban. Ha ez is hibába ütközik, akkor feltesszük, hogy eredetileg a 3-as csúcsból indultunk... és így tovább, amikor hiba van, feltesszük, hogy eggyel magasabb sorszámú csúcsból indultunk, egészen az n-es sorszámig. Ez egy véges hosszú algoritmus (legfeljebb n2 lépésből áll), és ha valóban az U útban vagyunk, akkor bárhonnan indultunk, ez az algoritmus idővel elvisz egy végpontba.
Az eddigi bolyongást el is felejtjük, és ezután csak az a célunk, hogy készítsünk egy véges hosszú algoritmust, ami egy végpontból indul, és U-ban futtatható, de minden n-nél hosszabb úton hibához vezet.
Az általánosság rovása nélkül mondhatjuk, hogy a bal végpontból indultunk. Az első menetben kilépünk a végpontból, ekkor biztosan balról a második csúcsban állunk.
k≤n+12-re a k-adik menet elején tudjuk, hogy balról a k-adik csúcsban állunk. Ezután elvégezzük azt a lépéssorozatot, ami U-ban balról a k-adik csúcsból bevinne a bal végpontba, és az algoritmus azt jósolja, hogy ekkor egy 1 fokú csúcsban vagyunk. U-ban ez működik, egy n-nél hosszabb útban pedig ez vagy hibához vezet, vagy ha nem, az csak úgy lehetséges, ha egyenesen visszamentünk a bal végpontba, ugyanis k≤n+12 miatt a balról a k-adik csúcsból nem juthattunk el k−1 lépésben a jobb végpontba, továbbá az útnak egyenesnek kellett lennie, különben k−1 lépés nem lett volna elég eljutni a bal végpontba se a k-adik csúcsból. Ekkor elvégezzük azt a lépéssorozatot, ami az előző menetben elvitt a bal végpontból a k-adik csúcsba. Ez most is biztosan odavisz. Majd megnézzük, hogy a mostani menet elején a k-adik csúcsból a kisebb vagy nagyobb szomszédba léptünk. Tudjuk, hogy ez vezet a bal végpont irányába, így most az ellenkező irányba lépünk. Így biztosan a balról k+1-edik csúcsban állunk a menet végén.
Ezt iteráljuk amíg k≤n+12.
Ha n páros, akkor tudjuk, hogy ezzel végül a balról n2+1-edik csúcsba érkezünk, ha n páratlan, akkor a balról n+32-ik csúcsba. Ekkor elvégezzük azt a lépéssorozatot, ami U-ban elvinne innen a jobb végpontba. Az algoritmus azt jósolja, hogy ezzel egy 1 fokszámú csúcsba érünk. Az U úton ez teljesül, egy n-nél hosszabb úton viszont ez túl kevés lépés ahhoz, hogy bármelyik végpontba elérjünk vele, így biztosan hibába ütközünk.
Összességében tehát ez egy olyan véges algoritmus, ami az U úton jól fut, de minden hosszabb úton hibába ütközik.
Statisztika:
19 dolgozat érkezett. 7 pontot kapott: Czanik Pál, Duchon Márton, Tarján Bernát, Varga Boldizsár, Wiener Anna. 6 pontot kapott: Farkas 005 Bendegúz, Holló Martin, Vigh 279 Zalán. 3 pontot kapott: 3 versenyző. 2 pontot kapott: 3 versenyző. 1 pontot kapott: 3 versenyző. 0 pontot kapott: 2 versenyző.
A KöMaL 2023. szeptemberi matematika feladatai
|