Кіріспе

Кездейсоқ алгоритм – логикасының немесе процедурасының бір бөлігі ретінде кездейсоқтық деңгейін қолданатын алгоритм. Алгоритм әдетте өзінің мінез-құлқына бағыт беру үшін қосымша кіріс ретінде біркелкі кездейсоқ биттерді пайдаланады, осылайша кездейсоқ биттермен анықталатын барлық мүмкін таңдаулар бойынша "орташа жағдайда" жақсы нәтижеге қол жеткізуге үміттенеді; нәтижесінде, орындалу уақыты немесе нәтиже (немесе екеуі де) кездейсоқ шамалар болып табылады. Кездейсоқ кіріс қолданатын алгоритмдердің арасында, әрқашан дұрыс жауаппен аяқталып, бірақ күтілетін орындалу уақыты шекті болатын (мысалы, Лас-Вегас алгоритмдері, Quicksort сияқты) және дұрыс емес нәтиже беру мүмкіндігі бар (мысалы, Монте-Карло алгоритмдері, MFAS мәселесі үшін Монте-Карло алгоритмі) немесе нәтиже бермей қалуы мүмкін (сәтсіздік туралы хабарлау арқылы немесе тоқтамау арқылы) алгоритмдердің арасында айырмашылық бар. Кейбір жағдайларда, ықтималдық алгоритмдері проблеманы шешудің жалғыз практикалық құралы болып табылады. Көптеген жағдайларда, кездейсоқ алгоритмдер кездейсоқ биттердің нақты көзінің орнына псевдокездейсоқ сандар генераторын пайдаланып жуықталады; мұндай іске асыру күтілетін теориялық мінез-құлқынан және математикалық кепілдіктерден ауытқуы мүмкін, бұл идеалды нақты кездейсоқ сандар генераторының болуына байланысты болуы мүмкін.

Есептеу күрделілігі

Компьютерлік күрделілік теориясы кездейсоқ алгоритмдерді ықтималдық Тьюринг машиналары ретінде модельдейді. Лас-Вегас және Монте-Карло алгоритмдері қарастырылады, сондай-ақ бірнеше күрделілік сыныптары зерттеледі. Ең қарапайым кездейсоқ күрделілік класы – RP, ол шешім есептерінің класы болып табылады, он үшін тиімді (полиномиалдық уақыт) кездейсоқ алгоритм (немесе ықтималдық Тьюринг машинасы) бар, ол NO жағдайларын абсолютті нақтылықпен анықтайды және ИӘ жағдайларын кем дегенде 1/2 ықтималдықпен анықтайды. RP класының толықтыру класы – co RP. Шығысы әрқашан дұрыс болатын полиномиалдық уақыттың орташа жағдайда орындалу уақыты бар (тоқтамауы мүмкін) алгоритмдері бар есептер класы ZPP деп аталады. ИӘ және ЖОҚ жағдайларын белгілі бір қателікпен анықтауға рұқсат етілген есептер класы BPP деп аталады. Бұл класс P класының кездейсоқ баламасы болып табылады, яғни BPP тиімді кездейсоқ алгоритмдер класын көрсетеді.

Сорталау

Quicksort-ті Тони Хоар 1959 жылы ашқан, ал одан кейін 1961 жылы жариялаған. Сол жылы Хоар тізімнің медианалық элементін күтілетін сызықтық уақытта табатын quickselect алгоритмін жариялады. 1973 жылға дейін сызықтық уақытта жұмыс істейтін анықталған алгоритмнің болуы күмәнді болып келді.

Сандар теориясы

1917 жылы Генри Кэборн Поклингтон жай сандардың модульдік квадрат түбірлерін тиімді табуға арналған Поклингтон алгоритмі деп аталатын кездейсоқ алгоритмді ұсынды. 1970 жылы Элвин Берлекамп шекті өрісте көпмүшенің түбірлерін тиімді есептеу үшін кездейсоқ алгоритмді ұсынды. 1977 жылы Роберт М. Соловай мен Волкер Страссен полиномиалдық уақытта жұмыс істейтін кездейсоқ жайлылық тестін (яғни, санның жай санын анықтау) ашты. Содан кейін Майкл О. Рабин 1976 жылғы Миллердің жайлылық тестін де полиномиалдық уақытта жұмыс істейтін кездейсоқ алгоритмге айналдыруға болатынын көрсетті. Ол кезде жайлылықты тексеру үшін дәлелденген полиномиалдық уақытты детерминистік алгоритмдер белгілі болған жоқ.

Деректер құрылымы

Ең алғашқы кездейсоқ дерек құрылымдарының бірі – 1953 жылы IBM-де Ханс Питер Лун енгізген хэш-кесте. Лунның хэш-кестесі соқтығыстарды шешу үшін тізбектеуді пайдаланды және байланысты тізімдердің алғашқы қолданылымдарының бірі болды. Алғашқы жарияланған талдау 1966 жылы Конхайм мен Вайс жасады. Хэш-кестелерге қатысты ертедегі жұмыстар толығымен кездейсоқ хэш-функцияға қол жеткізілетінін немесе кілттердің өзі кездейсоқ екенін болжады, бұл әрбір операция үшін тұрақты күтілетін уақытпен тізбектелген хэш-кестелерді жүзеге асыруға болатынын көрсетті. Кездейсоқ дерек құрылымдарына қатысты ертедегі жұмыстар хэш-кестелерден асып түсті. 1970 жылы Бертон Говард Блум Блум сүзгісі деп аталатын шамамен мүшелік дерек құрылымын енгізді. 1989 жылы Раймунд Зайдель мен Сесилия Р. Арагон кездейсоқ теңдестірілген іздеу ағашын – треапты енгізді. Сол жылы Уильям Пью тағы бір кездейсоқ іздеу ағашын – секіріп өтетін тізімді енгізді.

Комбинаторда жасырын пайдалану

Компьютерлік ғылымда кездейсоқ алгоритмдер кеңінен танымал болғанға дейін Пол Эрдос математикалық нысандардың бар екенін дәлелдеу үшін математикалық техника ретінде кездейсоқ құрылымдарды қолдануды танымал етті. Бұл техника ықтималдық әдіс деп аталды. Эрдос бұл әдісті алғаш рет 1947 жылы қолданды, Рамзи графиктерінің бар екенін көрсету үшін қарапайым кездейсоқ құрылымды пайдаланды. 1959 жылы ол жоғары дөңгелек және түстік саны бар графтардың бар екенін дәлелдеу үшін әлдеқайда күрделі кездейсоқ алгоритмді қолданды.

Кездейсоқтық көмегі

Есептеу моделі Тьюринг машиналарымен шектелгенде, кездейсоқ таңдау жасау мүмкіндігінің кейбір мәселелерді осы мүмкіндіксіз полиномиалдық уақытта шешілмейтін жағдайларда полиномиалдық уақытта шешуге рұқсат беретіні әлі де ашық сұрақ болып табылады; бұл P = BPP мәселесі. Дегенмен, басқа контексттерде, кездейсоқтандыру нақты жақсартулар беретін мәселелердің нақты мысалдары бар. Бастапқы түрткі беруші мысалға сүйенсек: 2k таңбадан тұратын экспоненциалды ұзын тізбек, оның жартысы 'a' және жартысы 'b' болса, кездейсоқ кіру машинасы 'a' индексін табу үшін ең жаман жағдайда 2k-1 іздеуді қажет етеді; егер кездейсоқ таңдау жасауға рұқсат берілсе, ол бұл мәселені күтілетін полиномиалдық іздеулер санымен шеше алады. Ембеделген жүйелерде немесе киберфизикалық жүйелерде сандық есептеуді жүргізудің табиғи жолы – жоғары ықтималдылықпен дұрыс нәтижеге жуық нәтиже беру (немесе Ықтималдықпен Шамамен Дұрыс Есептеу (PACC)). Дұрыс есептеу мен жуық нәтиже арасындағы айырмашылықты бағалаумен байланысты қиын мәселені кездейсоқтандыру арқылы тиімді шешуге болады. Коммуникация күрделілігінде, екі тізбектің теңдігін кездейсоқ протокол арқылы белгілі бір сенімділікпен коммуникация биттерінің көмегімен тексеруге болады. Кез келген детерминистік протокол күшті қарсыласқа қарсы қорғану үшін биттерді қажет етеді. Дөңес дененің көлемін кездейсоқ алгоритммен полиномиалдық уақытта кез келген дәлдікпен бағалауға болады. Барани және Фюреди ешқандай детерминистік алгоритм мұны жасай алмайтынын көрсетті. Бұл шартсыз түрде дұрыс, яғни күрделік теориясының ешқандай болжамдарына сүйенбей, дөңес денені қара жәшік ретінде ғана сұрауға болады деп есептесек. Кездейсоқтық көмектесетін күрделік теориясының мысалы – IP класы. IP класы – бұл күшті дәлелдеуші мен BPP алгоритмін іске асыратын тексеруші арасындағы полиномиалдық ұзын өзара әрекеттесу арқылы (жоғары ықтималдылықпен) қабылдануы мүмкін барлық тілдерден тұрады. IP = PSPACE. Дегенмен, егер тексерушінің детерминистік болуы талап етілсе, онда IP = NP. Химиялық реакция желісінде (A+B → 2C + D сияқты реакциялардың шекті жиынтығы), бастапқы күйден белгілі бір мақсатты күйге жету мүмкіндігі шешіледі, ал тіпті берілген мақсатты күйге жету ықтималдығын бағалау (келесі реакция қайсысы болады деген стандартты концентрацияға негізделген ықтималдықты пайдалану) шешілмейді. Нақтырақ айтқанда, шектеулі Тьюринг машинасы кездейсоқ химиялық реакция желісі қолданылған жағдайда ғана барлық уақыт бойы дұрыс жұмыс істеуінің жоғары ықтималдығымен симуляциялануы мүмкін. Қарапайым нон-детерминистік химиялық реакция желісімен (келесі кез келген реакция болуы мүмкін) есептеу күші бастапқы рекурсивті функциялармен шектеледі.