Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

Az A. 893. feladat (2024. december)

A. 893. Egy szövegszerkesztő programban kezdetben egy lábnyom jel (L) szerepel, amelyet szeretnénk megsokszorozni. Sajnos hekkertámadás áldozata lett a gépünk, és csak két funkció működik: a Másolás és a Beillesztés, ráadásul mindkettő \(\displaystyle 1\) Dürer dollárba kerül használatonként. A Másolás funkció használatakor kijelölhetünk egy vagy több egymás utáni jelet a meglévők közül, és a gép megjegyzi azok darabszámát. A Beillesztés funkció használatakor annyi új lábnyom jelet tesz hozzá a gép a jelsorozathoz, amennyit a legutóbbi Másolásnál kijelöltünk. Ha még nem Másoltunk, nem használhatjuk a Beillesztést. Jelölje \(\displaystyle D(n)\) azt, hogy legkevesebb hány Dürer dollár kell ahhoz, hogy pontosan \(\displaystyle n\) darab lábnyom jelet kapjunk. Bizonyítsuk be, hogy bármilyen pozitív egész \(\displaystyle k\)-ra létezik olyan \(\displaystyle N\) pozitív egész szám, amelyre

$$\begin{gather*} D(N)=D(N+1)+1=D(N+2)=D(N+3)+1=D(N+4)=\ldots\\ \ldots=D(N+2k-1)+1=D(N+2k). \end{gather*}$$

Dürer Verseny feladat alapján

(7 pont)

A beküldési határidő 2025. január 10-én LEJÁRT.


Osszuk a lépéseket blokkokra: egy blokk induljon Másolással és záruljon a következő Másolás előtt közvetlenül, azaz minden blokkban pontosan egyszer Másolunk, a blokk első lépéseként. Először megmutatjuk, hogy tetszőleges \(\displaystyle n\) esetén el lehet érni \(\displaystyle n\) lábnyomot \(\displaystyle D(n)\) lépéssel úgy, hogy minden blokk legfeljebb 3 méretű. Indirekten tegyük fel, hogy ez nem igaz, és létezik egy \(\displaystyle n\) szám, melyre akármelyik \(\displaystyle D(n)\) költségű, \(\displaystyle n\) lábnyomot elérő sorozat esetén van legalább 4 méretű blokk. Tekintsünk egy olyan lépéssorozatot, ami \(\displaystyle D(n)\) lépés alatt csinál \(\displaystyle n\) lábnyomot, és a leghosszabb blokk hossza minimális, ahol ez a minimum \(\displaystyle k \geq 4\). Tekintsünk egy \(\displaystyle k\) hosszú blokkot, ami tehát egy Másolásból, és \(\displaystyle k-1\) Beillesztésből áll. Ehelyett csináljuk azt, hogy a Másolást ugyanúgy megcsináljuk, majd csak \(\displaystyle k-3\) Beillesztést csinálunk (ahol \(\displaystyle k-3 \geq 1\)), majd Másolunk kétszer annyi karaktert, mint amennyit a blokk elején Másoltunk, és ezt egyszer Beillesztjük. Így ugyanannyi lépést használtunk, és végül ugyanannyi lábnyomot kaptunk, azonban a blokkot két rövidebb blokkra osztottuk. Ezt elvégezve az összes \(\displaystyle k\) hosszú blokkra rövidítettük a leghosszabb blokk hosszát, így ellentmondásra jutottunk. Ezzel beláttuk, hogy mostantól mindig feltehetjük, hogy minden blokk legfeljebb 3 hosszú.

Ezek alapján megmutatjuk, hogy \(\displaystyle D(n)\)-re teljesül az alábbi rekurzió ha \(\displaystyle n \geq 2\).

\(\displaystyle D(n)=\min\left(2+\min_{n/2 \leq k <n} D(k), \ \ 3+\min_{\substack{n/3 \leq k <n \\ 2 \mid n-k}} D(k)\right).\)

Ez azért teljesül, mert ha \(\displaystyle n\)-et felírjuk \(\displaystyle D(n)\) költséggel legfeljebb 3-hosszú blokkokkal, akkor az utolsó blokk vagy 2, vagy 3 hosszú. Előbbi esetben az utolsó blokk előttig elő kellett állítani legalább \(\displaystyle n/2\) lábnyomot, majd plusz két dollárért elő tudjuk állítani az utolsó blokkal a kimaradó lábnyomokat. Utóbbi esetben akkor tudjuk egy három hosszú utolsó blokkal elérni, hogy összesen \(\displaystyle n\) lábnyom legyen, ha addig van legalább \(\displaystyle k \geq n/3\), illetve ha kétszer ugyanannyit Beillesztve pont \(\displaystyle n\)-et tudunk kapni, ami a \(\displaystyle 2 \mid n-k\) feltételt adja.

Kis esetek vizsgálatával meg lehet sejteni az általános képletet \(\displaystyle D(n)\)-re, ami a következőképpen írható le, ha \(\displaystyle n \geq 4\). Legyen \(\displaystyle k\) az egyértelmű pozitív egész szám, melyre \(\displaystyle 3^k+1 \leq n \leq 3^{k+1}\). Majd osszuk még tovább ezt az intervallumot:

  • Ha \(\displaystyle 3^k+1 \leq n \leq 3^k+3^{k-1}\), akkor \(\displaystyle D(n)=3k+1\),
  • Ha \(\displaystyle 3^k+3^{k-1}+1 \leq n \leq 2 \cdot 3^k\), akkor \(\displaystyle D(n)=3k+2\),
  • Ha \(\displaystyle 2 \cdot 3^k+1 \leq n \leq 2 \cdot 3^k+2 \cdot 3^{k-1}\), akkor \(\displaystyle D(n)=3k+3\),
  • És ha \(\displaystyle 2 \cdot 3^k+2 \cdot 3^{k-1}+1 \leq n \leq 3^{k+1}\), akkor \(\displaystyle D(n)=3k+3\), ha \(\displaystyle 2 \nmid n\), és \(\displaystyle D(n)=3k+4\), ha \(\displaystyle 2 \mid n\).

Látható, hogy az utolsó esetben felváltva szerepel a \(\displaystyle 3k+3\) és a \(\displaystyle 3k+4\) érték, így amennyiben bizonyítjuk, hogy tényleg ez a képlet \(\displaystyle D(n)\)-re, a feladat állításával is készen vagyunk.

A rekurzív képletet használva már kevés nehézség van a képlet \(\displaystyle k\) szerinti indukcióval történő bizonyításában, csak végig kell nézni az eseteket. A kezdőlépéshez ellenőrizzük, hogy \(\displaystyle D(1)=0\), \(\displaystyle D(2)=2\), \(\displaystyle D(3)=3\), \(\displaystyle D(4)=4\), \(\displaystyle D(5)=D(6)=5\), \(\displaystyle D(7)=D(8)=D(9)=6\), így \(\displaystyle k=1\) esetén, azaz ha \(\displaystyle 3^1+1 \leq n \leq 3^{2}\) tényleg teljesül az állítás.

Most tegyük fel, hogy már minden \(\displaystyle n \leq 3^k\) számra bizonyítottuk a képletet, és most igazoljuk \(\displaystyle 3^k+1 \leq n \leq 3^{k+1}\) esetén is.

  • Ha \(\displaystyle 3^k+1 \leq n \leq 3^k+3^{k-1}\), akkor \(\displaystyle 3^{k-1}+3^{k-2} < n/2 \leq 2 \cdot 3^{k-1}\), amiből látható, hogy ha olyan konstrukciót akarunk, amiben kettő hosszú az utolsó blokk, akkor \(\displaystyle 3k+1\) a legjobb, amit el tudunk érni. Továbbá \(\displaystyle 3^{k-1} < n/3 \leq 3^{k-1}+3^{k-2}\), így hármas utolsó blokkal sem tudunk \(\displaystyle (3k+1)\)-nél jobbat elérni, azaz ebben az esetben tényleg \(\displaystyle D(n)=3k+1\).
  • Ha \(\displaystyle 3^k+3^{k-1}+1 \leq n \leq 2 \cdot 3^k\), akkor \(\displaystyle 2 \cdot 3^{k-1}<n/2 \leq 3^{k}\), amiből következik, hogy ha kettő hosszú az utolsó blokk, akkor nem tudunk \(\displaystyle (3k+2)\)-nél jobbat elérni, és ennyit pedig el is lehet érni, ha először \(\displaystyle 3k\) lépésből csinálunk \(\displaystyle 3^k\) lábnyomot, majd egy Másolás-Beillesztéssel a további szükséges mennyiséget megcsináljuk. Továbbá ekkor \(\displaystyle 3^{k-1}+3^{k-2} < n \leq 2 \cdot 3^{k-1}\), így hármas utolsó blokkal sem lehet \(\displaystyle (3k+2)\)-nél jobbat elérni, azaz \(\displaystyle D(n)=3k+2\).
  • Ha \(\displaystyle 2 \cdot 3^k+1 \leq n \leq 2 \cdot 3^k+2 \cdot 3^{k-1}\), akkor \(\displaystyle 3^k < n/2 \leq 3^k+ 3^{k-1}\), valamint \(\displaystyle 2 \cdot 3^{k-1} < n/3 \leq 2 \cdot 3^{k-1}+2 \cdot 3^{k-2}\), így az előző esetekhez hasonlóan, se kettes se hármas utolsó blokkal nem lehet \(\displaystyle (3k+3)\)-nál kevesebbet elérni, de kettes utolsó blokkal ez elérhető.
  • Végül ha \(\displaystyle 2 \cdot 3^k+2 \cdot 3^{k-1}+1 \leq n \leq 3^{k+1}\), akkor \(\displaystyle 3^k+ 3^{k-1} < n/2 \leq 2 \cdot 3^{k}\), így kettes utolsó blokkal \(\displaystyle 3k+4\) a legjobb, ami elérhető. Továbbá \(\displaystyle 2 \cdot 3^{k-1}+2 \cdot 3^{k-2} < n/3 \leq 3^{k}\), így ha \(\displaystyle 2 \nmid n\), akkor \(\displaystyle 3k\) dollárral csinálva \(\displaystyle 3^k\) lábnyomot, majd egy további megfelelő hármas blokkal el lehet érni összesen \(\displaystyle 3k+3\) dollárért a kívánt mennyiségű lábnyomot. Ha pedig \(\displaystyle 2 \mid n\), akkor hármas utolsó blokk esetén is kell \(\displaystyle 3k+4\), mivel minden páros számhoz, ami legalább \(\displaystyle n/3\) szükséges \(\displaystyle 3k+1\) dollár. Ezzel ebben az esetben is igazoltuk a kívánt képletet, ami befejezi a bizonyítást.

Statisztika:

Az A. 893. feladat értékelése még nem fejeződött be.


A KöMaL 2024. decemberi matematika feladatai