Кіріспе
Кездейсоқ алгоритм – логикасының немесе процедурасының бір бөлігі ретінде кездейсоқтық деңгейін қолданатын алгоритм. Алгоритм әдетте өзінің мінез-құлқына бағыт беру үшін қосымша кіріс ретінде біркелкі кездейсоқ биттерді пайдаланады, осылайша кездейсоқ биттермен анықталатын барлық мүмкін таңдаулар бойынша "орташа жағдайда" жақсы нәтижеге қол жеткізуге үміттенеді; нәтижесінде, орындалу уақыты немесе нәтиже (немесе екеуі де) кездейсоқ шамалар болып табылады. Кездейсоқ кіріс қолданатын алгоритмдердің арасында, әрқашан дұрыс жауаппен аяқталып, бірақ күтілетін орындалу уақыты шекті болатын (мысалы, Лас-Вегас алгоритмдері, Quicksort сияқты) және дұрыс емес нәтиже беру мүмкіндігі бар (мысалы, Монте-Карло алгоритмдері, MFAS мәселесі үшін Монте-Карло алгоритмі) немесе нәтиже бермей қалуы мүмкін (сәтсіздік туралы хабарлау арқылы немесе тоқтамау арқылы) алгоритмдердің арасында айырмашылық бар. Кейбір жағдайларда, ықтималдық алгоритмдері проблеманы шешудің жалғыз практикалық құралы болып табылады. Көптеген жағдайларда, кездейсоқ алгоритмдер кездейсоқ биттердің нақты көзінің орнына псевдокездейсоқ сандар генераторын пайдаланып жуықталады; мұндай іске асыру күтілетін теориялық мінез-құлқынан және математикалық кепілдіктерден ауытқуы мүмкін, бұл идеалды нақты кездейсоқ сандар генераторының болуына байланысты болуы мүмкін.
A randomized algorithm is an algorithm that employs a degree of randomness as part of its logic or procedure. The algorithm typically uses uniformly random bits as an auxiliary input to guide its behavior, in the hope of achieving good performance in the "average case" over all possible choices of random determined by the random bits; thus either the running time, or the output (or both) are random variables. There is a distinction between algorithms that use the random input so that they always terminate with the correct answer, but where the expected running time is finite (Las Vegas algorithms, for example Quicksort), and algorithms which have a chance of producing an incorrect result (Monte Carlo algorithms, for example the Monte Carlo algorithm for the MFAS problem) or fail to produce a result either by signaling a failure or failing to terminate. In some cases, probabilistic algorithms are the only practical means of solving a problem. In common practice, randomized algorithms are approximated using a pseudorandom number generator in place of a true source of random bits; such an implementation may deviate from the expected theoretical behavior and mathematical guarantees which may depend on the existence of an ideal true random number generator.
Есептеу күрделілігі
Компьютерлік күрделілік теориясы кездейсоқ алгоритмдерді ықтималдық Тьюринг машиналары ретінде модельдейді. Лас-Вегас және Монте-Карло алгоритмдері қарастырылады, сондай-ақ бірнеше күрделілік сыныптары зерттеледі. Ең қарапайым кездейсоқ күрделілік класы – 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 сияқты реакциялардың шекті жиынтығы), бастапқы күйден белгілі бір мақсатты күйге жету мүмкіндігі шешіледі, ал тіпті берілген мақсатты күйге жету ықтималдығын бағалау (келесі реакция қайсысы болады деген стандартты концентрацияға негізделген ықтималдықты пайдалану) шешілмейді. Нақтырақ айтқанда, шектеулі Тьюринг машинасы кездейсоқ химиялық реакция желісі қолданылған жағдайда ғана барлық уақыт бойы дұрыс жұмыс істеуінің жоғары ықтималдығымен симуляциялануы мүмкін. Қарапайым нон-детерминистік химиялық реакция желісімен (келесі кез келген реакция болуы мүмкін) есептеу күші бастапқы рекурсивті функциялармен шектеледі.
In communication complexity, the equality of two strings can be verified to some reliability using bits of communication with a randomized protocol. Any deterministic protocol requires bits if defending against a strong opponent. The volume of a convex body can be estimated by a randomized algorithm to arbitrary precision in polynomial time. Bárány and Füredi showed that no deterministic algorithm can do the same. This is true unconditionally, i. e. without relying on any complexity theoretic assumptions, assuming the convex body can be queried only as a black box. A more complexity theoretic example of a place where randomness appears to help is the class IP. IP consists of all languages that can be accepted (with high probability) by a polynomially long interaction between an all powerful prover and a verifier that implements a BPP algorithm. IP = PSPACE. However, if it is required that the verifier be deterministic, then IP = NP. In a chemical reaction network (a finite set of reactions like A+B → 2C + D operating on a finite number of molecules), the ability to ever reach a given target state from an initial state is decidable, while even approximating the probability of ever reaching a given target state (using the standard concentration based probability for which reaction will occur next) is undecidable. More specifically, a limited Turing machine can be simulated with arbitrarily high probability of running correctly for all time, only if a random chemical reaction network is used. With a simple nondeterministic chemical reaction network (any possible reaction can happen next), the computational power is limited to primitive recursive functions.