Кіріспе

Компьютерлік бағдарламалауда, алгоритмнің мінез-құлқы мен нәтижесі орындалудың нондетерминизміне байланысты болуы мүмкін. Компьютерлік бағдарламалауда нондетерминистік алгоритм – бұл бірдей кіріс мәліметтері үшін де, әртүрлі орындалуларда әртүрлі мінез-құлықтарды көрсетуі мүмкін алгоритм, бұл детерминистік алгоритмге қайшы. Алгоритмнің әр орындалуда әртүрлі болуының бірнеше себебі бар. Параллель алгоритмдер жарыс жағдайына байланысты әртүрлі орындалуларда өзгеше жұмыс істей алады. Ықтималдық алгоритмнің мінез-құлқы кездейсоқ сандар генераторына тәуелді. Бір мәселені нондетерминистік полиномиалдық уақытта шешетін алгоритм, орындалу барысындағы таңдауларына қарай полиномиалдық немесе экспоненциалдық уақытта жұмыс істей алады. Нондетерминистік алгоритмдер көбінесе нақты шешімге қол жеткізудің тым қымбат болған жағдайларда, шешімнің жуықтамасын табу үшін қолданылады. Бұл ұғымды 1967 жылы Роберт В. Флойд енгізген.

Қолдану

Жиі есептеу теориясында "алгоритм" термині детерминистік алгоритмді білдіреді. Детерминистік емес алгоритм, өзінің жақсы таныс детерминистік әріптесінен нәтижеге жету үшін әртүрлі жолдарды пайдалана білуімен ерекшеленеді. Егер детерминистік алгоритм кірістен нәтижеге дейінгі жалғыз жолды көрсететін болса, детерминистік емес алгоритм көптеген жолдарға тармақталатын бір жолды көрсетеді, олардың кейбіреуі бірдей шығысқа, ал кейбіреуі бірегей шығыстарға жете алады. Бұл қасиет "детерминистік емес" есептеу модельдерінде, мысалы, детерминистік емес шекті автоматта математикалық тұрғыда бейнеленеді. Кейбір жағдайларда, барлық мүмкін жолдардың бір уақытта орындалуына рұқсат етіледі. Алгоритмдерді жобалауда детерминистік емес алгоритмдер көбінесе алгоритммен шешілетін мәселе бірнеше нәтижеге мүмкіндік бергенде (немесе нәтижеге жетуге бірнеше жол болғанда, олардың әрқайсысы бірдей қолайлы болса) қолданылады. Ең бастысы, детерминистік емес алгоритм шығаратын әрбір нәтиже жарамды, алгоритм орындалған кезде қандай таңдау жасағанына қарамастан. Есептеу күрделілігі теориясында детерминистік емес алгоритмдер әр мүмкін қадамда бірнеше жалғасуға мүмкіндік беретін алгоритмдер болып табылады (орман ішінде жолмен келе жатқан адамды көзге елестетіңіз, және әр қадамда ол қай жолға бұрылуды таңдауы керек). Бұл алгоритмдер мүмкін болатын есептеу жолының әрқайсысы үшін шешімге жете алмайды; алайда, олар кейбір жол үшін дұрыс шешімге жететініне кепілдік береді (яғни, орман арқылы келе жатқан адам, егер "дұрыс" жолдардың бір комбинациясын таңдаса ғана өз үйіне жете алады). Таңдауларды іздеу процесіндегі болжам ретінде қарастыруға болады. Көптеген мәселелерді детерминистік емес алгоритмдер арқылы түсіндіруге болады, соның ішінде есептеу теориясындағы ең танымал шешілмеген мәселе – P vs NP.

Детерминистік алгоритмдермен детерминистік емес алгоритмдерді іске асыру

Детерминистік емес алгоритм N-ді детерминистік алгоритм D арқылы симуляциялаудың бір жолы – N-нің күйлерінің жиынтықтарын D-нің күйлері ретінде қарастыру. Бұл D-нің N-нің барлық мүмкін орындалу жолдарын бір уақытта іздеуін білдіреді (бұл техниканы соңы бар автоматтар үшін қуат жиынтығы құрастыру арқылы қараңыз). Тағы бір әдіс – барлық таңдауларды кездейсоқ сандар генераторы арқылы анықтау. Мұндай алгоритмге ықтималдық детерминистік алгоритм деп аталады.