Ülesanne täielikult lahendatud
-
Konfiguratsioonid, mida palindroomiprogramm läbib sisendil 1 0 1 0 1 5 sammu
Palindroomiprogramm alustab lindil 1 0 1 0 1, pea lahtril 0, olekus
q0. Loenda reeglitabeli alusel — ilma programmi samm-sammult käitamata — iga konfiguratsioon, mille see enne peatumist läbib, ning ötle seejärel, mida see loendus teeb sisendi pikenemisel.-
Loe tabelit voorudena, mitte käikude loendina. Ainult üks reegel saab vooru alustada:
q0kustutab vasakpoolseima sümboli ja hargneb vastavalt hiljuti kustutatule olekusseq1sümboli 1 korral ja olekusseq2sümboli 0 korral. See hargnemine ongi kogu võrdlusmehhanism. Masin ei salvesta sümbolit kunagi lindile; see salvestab selle olekusse, milles see viibib, mistõttu hilisem teise otsa kontrollimine selle suhtes ei nõua lisakäike. -
Arvuta ühe vooru kulu m sümboli pikkusel plokil. Vasaku otsa kustutamine on 1 käik. Pea läbib seejärel m − 1 allesolevat sümbolit ja kulutab 1 lisakäigu nendest tagapool asuval tühikul, et ümber pöörata. Parema otsa kustutamine on 1 käik, tagasiliikumine üle m − 2 ülejäänu on m − 2 käiku ning 1 viimane käik vasaku otsa tühikul suunab masina taas paremale olekus
q0. -
Meie lint annab 5-sümbolise ploki, seejärel 3-sümbolise ning siis üheainsa sümboli — ja üksik sümbol ei moodusta vooru.
q0kustutab selle,q1liigub paremast otsast välja ja pöörab ümber ningq1cleiab tühiku sealt, kus peaks olema paariline. Paaritu pikkusega palindroomil on paariliseta keskoht ja selle tühiku leidmine viibki vastuvõtmiseni. -
Liida need kolm kokku ja pea silmas aiapostiviga. 21 on käikude arv; üleminek loendab konfiguratsioone ning 21 käiku külastavad neist 22, kui lisada see, millest alustati.
-
Üldista mis tahes paaritule pikkusele n. Plokid on pikkusega n, n − 2 ja nii edasi kuni 3-ni, igaüks kulukusega 2m + 1, kusjuures keskoht maksab 3. Selle loendi summeerimine annab ruutsõltuvuse n suhtes, mitte lineaarse.
Vastus
22 konfiguratsiooni — 21 käiku. Ruutsõltuvus on see osa, mida tasub meeles pidada. 21-sümboliline palindroom nõuab 253 käiku: 12 korda rohkem tööd 4,2 korda pikema sisendi korral. Põhjus on pigem geomeetriline kui nutikas — kaks võrreldavat sümbolit asuvad alati ülejäänud osa vastasotstes ning lugemispeasid on vaid üks, seega maksab iga paar ülejäänud lindi ühe täieliku läbimise. Anna masinale teine lint ja sama töö muutub lineaarseks: kopeeri sisend lugemise käigus teisele lindile, käita seejärel kahte pead vastassuundades ning võrdle ühe läbimisega, umbes 3n käiguga. Ühe lindiga pole seda koopiat kuhugi panna ning edasi-tagasi liikumine on paratamatu.
-
Allikad (3)
- The single-tape quadratic lower bound for palindromes: F. C. Hennie, "One-tape, off-line Turing machine computations." Information and Control 8(6), 553–578, 1965.
- Where multi-tape time complexity classes were set out: J. Hartmanis and R. E. Stearns, "On the computational complexity of algorithms." Transactions of the American Mathematical Society 117, 285–306, 1965.
- The machine itself: A. M. Turing, "On Computable Numbers, with an Application to the Entscheidungsproblem." Proceedings of the London Mathematical Society s2-42(1), 230–265, 1937.