Кіріспе

Компьютерлік ғылымдағы алгоритм түрі. Компьютерлік ғылымда детерминистік алгоритм – нақты бір кіріс мәліметі берілгенде, әрқашан бірдей нәтижені беретін, ал негізгі машина әрқашан бірдей күйлер тізбесінен өтетін алгоритм. Детерминистік алгоритмдер – ең көп зерттелген, жақсы таныс және практикалық қолданысы кең алгоритмдердің бірі, себебі оларды нақты машиналарда тиімді жүргізуге болады. Формальды түрде айтқанда, детерминистік алгоритм математикалық функцияны есептейді; функцияның әрбір кіріс мәні үшін бір ғана мәні болады, ал алгоритм – осы нақты мәнді нәтиже ретінде шығаратын процесс.

Ресми анықтама

Детерминистік алгоритмдерді күй машинасы түрінде анықтауға болады: күй машинаның нақты бір уақыт сәтінде не істеп жатқанын көрсетеді. Күй машиналары дискретті түрде бір күйден екінші күйге өтеді. Енгізілген деректерден кейін машина бастапқы күйге немесе іске қосылу күйіне енеді. Егер машина детерминистік болса, онда осы сәттен бастап оның ағымдағы күйі келесі күйін анықтайды; күйлер жиынтығы арқылы өту жолы алдын ала белгіленген. Машина детерминистік бола тұра тоқтамай немесе аяқтамай, нәтиже бермей қалуы мүмкін екенін ескеру қажет. Детерминистік абстрактілі машиналардың мысалдарына детерминистік Тьюринг машинасы және детерминистік шекті автомат жатады.

Детерминизмнің кемшіліктері

Кейбір жағдайларда бағдарламаның детерминистік емес мінез-құлық көрсетуі тиімді болуы мүмкін. Мысалы, блэкджек ойынында қолданылатын карталарды шайқау бағдарламасының мінез-құлқы ойыншыларға болжауға мүмкіндік бермеуі керек, тіпті бағдарламаның бастапқы коды көрінетін болса да. Псевдокездейсоқ сан генераторын пайдалану, ойыншылардың шайқау нәтижесін болжау мүмкіндігін толыққанды қамтамасыз ету үшін жеткіліксіз болуы мүмкін. Ақылды ойыншы генератор таңдайтын сандарды дәл болжап, колоданың құрамын алдын ала анықтап, алдауға мүмкіндік алады. Мысалы, Reliable Software Technologies компаниясының бағдарламалық қауіпсіздік тобы, ASF Software, Inc. компаниясы таратқан Texas Hold 'em Poker іске асырылымында мұны жасап, қолдардың нәтижесін алдын ала болжауға қол жеткізді. Бұл мәселелерді криптографиялық тұрғыдан қамтамасыз етілген псевдокездейсоқ сан генераторын пайдалану арқылы ішінара болдыруға болады, бірақ генераторды бастау үшін әлі де болжауға келмейтін кездейсоқ бастама қажет. Осы мақсатта, аппараттық кездейсоқ сан генераторы сияқты детерминистік емес көз қажет. P=NP мәселесіне теріс жауап, детерминистік емес шығысы бар бағдарламалардың, детерминистік шығысы бар бағдарламалардан теориялық тұрғыдан күштірек екенін білдірмейді. NP күрделілік класын (көптігін) тексеруге негізделген анықтаманы қолдана отырып, детерминистік емес элементтерге сілтеме жасамай анықтауға болады.

Жиде

Меркурийлік логикалық функционалдық бағдарламалау тілі анықтамада көрсетілгендей, предикат режимдері үшін әртүрлі детерминизм санаттарын орнатады.

Жава

Java-да нөлдік сілтеме мәні сәтсіз (қалыптан тыс) нәтижені көрсете алады.