Кіріспе

Компьютерлік ғылымдағы иә/жоқ проблемасы күрделілік теориясындағы шешімдік есептер.

Есептеу теориясы және есептеу күрделілігі теориясында шешімдік есеп – кіріс мәндеріне «иә» немесе «жоқ» түрінде берілетін есептеу проблемасы. Шешімдік есепке мысал – берілген натурал санның жай сан екенін алгоритм арқылы анықтау. Тағы бір мысал: «Егер x және y екі сан берілсе, x саны y санын қалдықсыз бөледі ме?» деген сұрақ. Жауап x және y мәндеріне байланысты «иә» немесе «жоқ» болады. Алгоритм түрінде берілген шешімдік есепті шешу әдісі – сол есептің шешімдік процедурасы деп аталады. «x және y екі сан берілсе, x саны y санын қалдықсыз бөледі ме?» деген шешімдік есеп үшін шешімдік процедура x-тің y-ді қалдықсыз бөлетінін анықтау үшін қадамдарды көрсетеді. Мұндай алгоритмдердің бірі – ұзын бөлу. Егер қалдық нөл болса, жауап «иә», әйтпесе «жоқ» болады. Алгоритммен шешілетін шешімдік есеп – шешімдік есеп деп аталады. Шешімдік есептер көбінесе математикалық шешімділік мәселелерінде кездеседі, яғни кейбір объектінің бар екенін немесе жиынға кіретінін анықтау үшін тиімді әдіс бар ма деген сұрақтарда; математикадағы маңызды проблемалардың кейбіреулері шешілмейді. Есептеу күрделілігі саласы шешімдік есептерді шешудің қиындығына қарай жіктейді. «Қиындық» осы есеп үшін ең тиімді алгоритмге қажетті есептеу ресурстарымен сипатталады. Ал рекурсиялық теория шешілмейтін шешімдік есептерді Тьюринг дәрежесі бойынша жіктейді, ол кез келген шешімге тән есептеу мүмкін еместігінің өлшемі болып табылады.

Анықтама

Шешімдік мәселе – шексіз кіріс жиынына қойылатын "иә" немесе "жоқ" сұрағы. Шешімдік мәселені мүмкін кірістер жиыны және жауабы "иә" болатын кірістер жиыны ретінде анықтау қалыпты жағдай. Бұл кірістер табиғи сандар болуы мүмкін, бірақ екілік тізбектер немесе басқа әліпбидегі тізбектер сияқты басқа да түрлерде де болуы мүмкін. Мәселе "иә" деп жауап беретін тізбектердің ішкі жиыны формальді тіл болып табылады, ал шешімдік мәселелер көбінесе формальді тілдер ретінде беріледі. Гёдель нөмірлеуі сияқты кодтаудың көмегімен кез келген тізбекті табиғи санға түрлендіруге болады, осылайша шешімдік мәселені табиғи сандардың ішкі жиыны ретінде анықтауға болады. Демек, шешімдік мәселенің алгоритмі – табиғи сандардың ішкі жиынының сипаттамалық функциясын есептеу.

Мысалдар

Шешімді проблеманың классикалық мысалы – жай сандар жиыны. Кез келген берілген натурал санның жай екенін оның барлық мүмкін бөлгіштерін тексеру арқылы анықтауға болады. Жайлықты тексерудің әлдеқайда тиімді әдістері белгілі болғанымен, кез келген тиімді әдіс болуы шешімділігін дәлелдеу үшін жеткілікті.

Шешімділік

Шешімдік мәселе шешіледі немесе тиімді шешіледі, егер жауабы «иә» болатын кірістер (немесе натурал сандар) жиыны рекурсивті жиын болса. Мәселе ішінара шешіледі, жартылай шешіледі, шешіледі немесе дәлелденеді, егер жауабы «иә» болатын кірістер (немесе натурал сандар) жиыны рекурсивті санамалы жиын болса. Шешілмейтін мәселелер шешілмейді. Оларды шешу үшін тиімді немесе басқа да алгоритм жасау мүмкін емес. Тоқтау мәселесі – маңызды шешілмейтін шешімдік мәселе; толық мысалдар үшін шешілмейтін мәселелер тізілімін қараңыз.

Толық проблемалар

Шешімдерді анықтау мәселелері көптеген бір редукцияға сәйкес реттелген және полиномиалдық уақыт редукциясы сияқты қолданылатын редукциялармен байланысты. Егер P мәселесі S мәселелер жиымының құрамында болса және S жиымындағы әрбір мәселені P-ге дейін редукциялау мүмкін болса, онда P шешімдерді анықтау мәселесі S жиымы үшін толық деп аталады. Толық шешімдерді анықтау мәселелері есептеу күрделілігі теориясында шешімдерді анықтау мәселелерінің күрделілік кластарын сипаттау үшін қолданылады. Мысалы, Бульдік қанағаттандыру мәселесі полиномиалдық уақыт редукциясы бойынша шешімдерді анықтау мәселелерінің NP класы үшін толық.

Функционалдық мәселелер

Шешім қабылдау проблемалары функциялық проблемалармен тығыз байланысты, олардың жауаптары қарапайым "иә" немесе "жоқ" дегеннен күрделірек болуы мүмкін. Функциялық проблеманың сәйкес мысалы: "екі сан x және y берілгенде, x-ті y-ға бөлгенде не шығады?". Функциялық проблема бөлшектік функция f-ден тұрады; бұл функцияның анықталған кірістері үшін f-тің мәнін есептеу болып табылады. Кез келген функциялық проблеманы шешім қабылдау проблемасына айналдыруға болады; шешім қабылдау проблемасы – бұл байланысты функцияның графигі. (Функцияның f графигі – f(x) = y болатын (x, y) жұптарының жиыны.) Егер бұл шешім қабылдау проблемасы тиімді шешілсе, онда функциялық проблема да тиімді шешіледі. Алайда, бұл түрлендіру есептеу күрделілігін ескермейді. Мысалы, функцияның графигі полиномиалдық уақытта шешілуі мүмкін (яғни, орындалу уақыты (x, y) жұбының функциясы ретінде есептеледі), ал функция полиномиалдық уақытта есептелмейді (яғни, орындалу уақыты тек x-тің функциясы ретінде есептеледі). f(x) = 2x функциясы осы қасиетке ие. Кез келген шешім қабылдау проблемасын, осы проблемаға байланысты жиынның сипаттамалық функциясын есептеудің функциялық проблемасына түрлендіруге болады. Егер бұл функция есептелетін болса, онда байланысты шешім қабылдау проблемасы шешіледі. Дегенмен, бұл түрлендіру есептеу күрделілігінде қолданылатын стандартты түрлендіруден (кейде "көп біріне айналдыру" деп аталады) көбірек еркін; мысалы, NP-толық проблеманың және оның ко-NP-толық толықтыруының сипаттамалық функцияларының күрделілігі бірдей болады, тіпті негізгі шешім қабылдау проблемалары кейбір есептеу модельдерінде эквивалентті болып саналмауы мүмкін.

Оптимизациялау проблемалары

Шешім проблемаларынан өзгеше, әрбір кіріс үшін тек бір дұрыс жауап болатын, оңтайландыру проблемалары белгілі бір кіріске ең жақсы жауапты табумен айналысады. Оңтайландыру проблемалары көптеген қолданыстарда, мысалы, саяхатшы сатушысының мәселесі және сызықтық бағдарламалаудағы көптеген сұрақтар сияқты жағдайларда табиғи түрде туындайды. Функциялық және оңтайландыру проблемалары жиі шығыс белгілі бір мәнге тең немесе одан кем-көп екенін қарастыру арқылы шешім проблемаларына түрлендіріледі. Бұл сәйкес шешім проблемасының күрделілігін зерттеуге мүмкіндік береді; және көптеген жағдайларда бастапқы функциялық немесе оңтайландыру проблемасын оның сәйкес шешім проблемасын шешу арқылы шешуге болады. Мысалы, саяхатшы сатушысының мәселесінде оңтайландыру проблемасы – ең төмен салмақты тур жасау. Оған қатысты шешім проблемасы: әрбір N үшін, графикте N-ден кем салмағы бар тур бар ма, жоқ па, анықтау. Шешім проблемасын қайта-қайта шешу арқылы турдың ең төмен салмағын табуға болады. Шешім проблемаларының теориясы өте жақсы дамығандықтан, күрделік теориясындағы зерттеулер көбінесе шешім проблемаларына бағытталған. Оңтайландыру проблемаларының өзі есептеу теориясында, сондай-ақ операциялық зерттеулер сияқты салаларда әлі де қызығушылық тудырады.