Pelkistyvyys on laskennallisen kompleksisuusteorian peruskäsite, jolla on tärkeä rooli ratkaisemattomuuden todistamisessa. Se on tekniikka, jota käytetään ongelman ratkaisemattomuuden toteamiseen vähentämällä se tunnetuksi ratkaisemattomaksi ongelmaksi. Pohjimmiltaan pelkistettävyys antaa meille mahdollisuuden osoittaa, että jos meillä olisi algoritmi kyseisen ongelman ratkaisemiseksi, voisimme käyttää sitä ratkaisemaan tunnetun ratkaisemattoman ongelman, joka on ristiriita.
Vähennettävyyden ymmärtämiseksi määritellään ensin päätösongelman käsite. Päätösongelma on laskennallinen ongelma, joka vaatii kyllä/ei-vastauksen. Esimerkiksi ongelma sen määrittämisestä, onko tietty luku alkuluku vai yhdistelmäluku, on päätösongelma. Voimme esittää päätösongelmia muodollisina kielinä, joissa kielen merkkijonot ovat tapauksia, joille vastaus on "kyllä".
Tarkastellaan nyt kahta päätösongelmaa, P ja Q. Sanomme, että P on pelkistävissä Q:ksi (merkitty nimellä P ≤ Q), jos on olemassa laskettavissa oleva funktio f, joka muuntaa P:n esiintymät Q:n instansseiksi siten, että vastaus P:n instanssiin x on "kyllä" silloin ja vain, jos vastaus Q:n f(x):ään on "kyllä". Toisin sanoen f säilyttää vastauksen ongelmaan.
Pelistävyyden perusajatuksena on, että jos voimme pelkistää ongelman P ongelmaksi Q, niin Q on vähintään yhtä vaikea kuin P. Jos meillä olisi algoritmi Q:n ratkaisemiseksi, voisimme käyttää sitä yhdessä pelkistysfunktion f kanssa ratkaisemiseen. P. Tämä tarkoittaa, että jos Q on ratkaisematon, niin P:n on myös oltava ratkaisematon. Näin ollen pelkistettävyys antaa meille mahdollisuuden "siirtää" ratkaisemattomuutta ongelmasta toiseen.
Ratkaisemattomuuden osoittamiseksi pelkistettävyyden avulla aloitamme tyypillisesti tunnetusta ratkaisemattomasta ongelmasta, kuten pysäytysongelmasta, joka kysyy, pysähtyykö tietty ohjelma tietyllä syötteellä. Osoitamme sitten, että jos meillä olisi algoritmi kiinnostavan ongelmamme ratkaisemiseksi, voisimme käyttää sitä pysäytysongelman ratkaisemiseen, mikä johtaa ristiriitaan. Tämä vahvistaa ongelmamme ratkaisemattomuuden.
Tarkastellaan esimerkiksi ongelmaa sen määrittämisessä, hyväksyykö tietty ohjelma P minkään syötteen. Pysäytysongelman voidaan pelkistää tähän ongelmaan rakentamalla pelkistysfunktio f, joka ottaa syötteeksi ohjelman Q ja syötteen x ja tulostaa ohjelman P, joka käyttäytyy seuraavasti: jos Q pysähtyy x:llä, niin P hyväksyy minkä tahansa syötteen; muussa tapauksessa P syöttää loputtoman silmukan mille tahansa tulolle. Jos meillä olisi algoritmi, jolla ratkaistaan, hyväksyykö P minkä tahansa syötteen, voisimme käyttää sitä pysäytysongelman ratkaisemiseen soveltamalla sitä f(Q, x). Siksi ongelmaa sen määrittämisessä, hyväksyykö ohjelma minkään syötteen, ei voida ratkaista.
Pelkistyvyys on laskennallisen monimutkaisuusteorian tehokas tekniikka, jonka avulla voimme todistaa ongelman ratkaisemattomuuden pelkistämällä sen tunnetuksi ratkaisemattomaksi ongelmaksi. Muodostamalla pelkistys ongelmasta P ongelmaan Q, osoitamme, että Q on vähintään yhtä kova kuin P, ja jos Q on ratkaisematon, niin P:n on myös oltava ratkaisematon. Tämä tekniikka mahdollistaa ratkaisemattomuuden siirtämisen ongelmien välillä ja tarjoaa arvokkaan työkalun laskennan rajojen ymmärtämiseen.
Muita viimeaikaisia kysymyksiä ja vastauksia liittyen ratkeavuuden:
- Voidaanko nauha rajoittaa syötteen kokoon (mikä vastaa turingin koneen pään rajoittamista liikkumaan TM-nauhan tulon ulkopuolelle)?
- Mitä tarkoittaa, että Turingin koneiden eri muunnelmat ovat laskentakyvyltään samanarvoisia?
- Voiko tunnistettava kieli muodostaa pääteltävissä olevan kielen osajoukon?
- Onko Turingin koneen pysähtymisongelma ratkaistavissa?
- Jos meillä on kaksi TM:tä, jotka kuvaavat päätettävissä olevaa kieltä, onko vastaavuuskysymys edelleen ratkaisematon?
- Miten lineaarirajaisten automaattien hyväksymisongelma eroaa Turingin koneiden hyväksymisongelmasta?
- Anna esimerkki ongelmasta, jonka lineaarisesti rajoittunut automaatti voi ratkaista.
- Selitä päätettävyyden käsite lineaarirajaisten automaattien kontekstissa.
- Kuinka nauhan koko lineaarisesti rajatuissa automaateissa vaikuttaa erillisten konfiguraatioiden määrään?
- Mikä on tärkein ero lineaarirajoitteisten automaattien ja Turingin koneiden välillä?
Katso lisää kysymyksiä ja vastauksia Decidability-osiossa