Увипадковлений алгоритм (англ. randomized algorithm) — це алгоритм, який використовує елемент випадковості як частину своєї логіки. Алгоритм зазвичай використовує рівномірно випадкові біти як допоміжний вхід для спрямування своєї поведінки в надії досягнення хорошої швидкодії в середньому серед усіх можливих виборів випадкових бітів. Формально, швидкодією алгоритму буде випадкова величина визначена випадковими бітами; отже або швидкодія, або вихід (або і те, і те) є випадковими величинами.
Потрібно розрізняти алгоритми, що використовують випадковий вхід для зменшення очікуваного часу виконання або об'єму використаної пам'яті, але завжди видають правильний вислід у обмежений відтинок часу, і ймовірнісні алгоритми (англ. probabilistic algorithms), які, залежно від випадкового входу, можуть видати некоректний вислід (Алгоритм Монте-Карло) або зазнати невдачі в його отриманні (Алгоритм Лас-Вегаса), повідомивши про провал або через неможливість завершення.
У другому випадку, випадкового виконання і випадкового виходу, використання терміну «алгоритм» під питанням. У разі випадкового виходу, формально це вже не алгоритм. Однак, у деяких випадках, ймовірнісні алгоритми є єдиним практичним способом розв'язання проблеми.
Практично, увипадковлений алгоритм моделюють із використанням генератора псевдовипадкових чисел замість дійсно випадкових біт; таке втілення може відхилятись від очікуваної в теорії поведінки.
Спонука
Як спонукальний приклад, розглянимо задачу знаходження ‘a’ в масиві з n елементів.
Вхід: Масив n≥2 елементів, в якому половина мають значення ‘a’, а інша половина ‘b’.
Вихід: Знайти ‘a’ в масиві.
Ми наведемо дві версії алгоритму, одну типу Лас-Вегас і одну Монте-Карло.
Алгоритм типу Лас-Вегас:
findingA_LV(array A, n) початок повторювати Випадковим чином вибрати один з n елементів. допоки 'a' не знайдене кінець
Цей алгоритм досягає мети з імовірністю 1. Кількість ітерацій мінлива і може довільно великою, але очікувана кількість ітерацій це
Завдяки тому, що це константа, очікуваний час виконання на великій кількості викликів це . (Див. Нотація Ландау)
Алгоритм типу Монте Карло:
findingA_MC(array A, n, k) початок i := 0 повторювати Випадковим чином вибрати один з n елементів. i := i + 1 допоки i < k або 'a' не знайдене кінець
Якщо ‘a’ знайдене, то алгоритм завершився успіхом, інакше алгоритм зазнав невдачі. Після k ітерацій, імовірність знаходження ‘a’ становить:
Цей алготитм не гарантує успіху, але його час виконання обмежений. Кількість ітерацій завжди менша ніж або рівна k. Якщо k константа, то час виконання (очікуваний і абсолютний) це .
Увипадковлені алгоритми особливо корисні коли маємо справу зі зловмисним «супротивником» або нападником, який зумисно намагається згодувати алгоритму погані входові дані (див. найгірший випадок складності і змагальний аналіз) такі як в дилемі в'язня. Саме з цієї причини випадковість повсюдна в криптографія. У криптографічних застосуваннях, не можна використовувати пседвовипадкові числа, бо суперник може їх передбачити, зробивши алгоритм по суті детерміністичним. Отже, потрібне або джерело дійсно випадкових чисел, або криптографічно стійкий генератор псевдовипадкових чисел. Інша царина, якій притаманна випадковість це квантові обчислення.
У горішньому прикладі, лас-вегасівський алгоритм завжди видає правильну відповідь, але його час виконання це випадкова величина. Алгоритм Монте-Карло (пов'язаний з методом Монте-Карло для симуляцій) гарантовано завершиться за час обмежений функцією з параметром k, але дозвовляє маленьку ймовірність помилки. Зауважте, що будь-який алгоритм Лас-Вегаського типу можна переробити на алгоритм типу Монте-Карло (через нерівність Маркова), повернувши довільний, можливо неправильний, результат, якщо він не спромігся повернути результат у визначений час. І навпаки, якщо існує дієва процедура перевіряння чи певна відповідь правильна, тоді монте-карлівський алгоритм можна обернути на лас-вегасівський виконуючи монте-карлівський знов і знов допоки не отримали правильну відповідь.
Див. також
- (Схема_наближення_до_поліноміального_часу#Увипадковлені_алгоритми)
Примітки
- «Ймовірнісні алгоритми не треба плутати з методами (які я відмовляюсь називати алгоритмами), які видають результат, що з високою ймовірністю правильний. Це суттєво, що алгоритм видає правильний результат (зважаючи на помилки людини чи комп'ютера), навіть якщо це стається за великий проміжок часу.» Henri Cohen (2000). A Course in Computational Algebraic Number Theory. Springer-Verlag, p. 2.
- «В тестах простоти для дуже великих чисел обраних навмання, шанс наткнутись на значення, яке обманює тест Ферма менша ніж шанс того, що космічна радіація спричинить помилку в перебігу коректного алгоритму. Сприймання алгоритму неадекватним через першу причину, але не через другу показує різницю між математикою й інженерією.» Hal Abelson and Gerald J. Sussman (1996). Structure and Interpretation of Computer Programs. MIT Press, section 1.2 [ 3 вересня 2006 у Wayback Machine.].
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Uvipadkovlenij algoritm angl randomized algorithm ce algoritm yakij vikoristovuye element vipadkovosti yak chastinu svoyeyi logiki Algoritm zazvichaj vikoristovuye rivnomirno vipadkovi biti yak dopomizhnij vhid dlya spryamuvannya svoyeyi povedinki v nadiyi dosyagnennya horoshoyi shvidkodiyi v serednomu sered usih mozhlivih viboriv vipadkovih bitiv Formalno shvidkodiyeyu algoritmu bude vipadkova velichina viznachena vipadkovimi bitami otzhe abo shvidkodiya abo vihid abo i te i te ye vipadkovimi velichinami Potribno rozriznyati algoritmi sho vikoristovuyut vipadkovij vhid dlya zmenshennya ochikuvanogo chasu vikonannya abo ob yemu vikoristanoyi pam yati ale zavzhdi vidayut pravilnij vislid u obmezhenij vidtinok chasu i jmovirnisni algoritmi angl probabilistic algorithms yaki zalezhno vid vipadkovogo vhodu mozhut vidati nekorektnij vislid Algoritm Monte Karlo abo zaznati nevdachi v jogo otrimanni Algoritm Las Vegasa povidomivshi pro proval abo cherez nemozhlivist zavershennya U drugomu vipadku vipadkovogo vikonannya i vipadkovogo vihodu vikoristannya terminu algoritm pid pitannyam U razi vipadkovogo vihodu formalno ce vzhe ne algoritm Odnak u deyakih vipadkah jmovirnisni algoritmi ye yedinim praktichnim sposobom rozv yazannya problemi Praktichno uvipadkovlenij algoritm modelyuyut iz vikoristannyam generatora psevdovipadkovih chisel zamist dijsno vipadkovih bit take vtilennya mozhe vidhilyatis vid ochikuvanoyi v teoriyi povedinki SponukaYak sponukalnij priklad rozglyanimo zadachu znahodzhennya a v masivi z n elementiv Vhid Masiv n 2 elementiv v yakomu polovina mayut znachennya a a insha polovina b Vihid Znajti a v masivi Mi navedemo dvi versiyi algoritmu odnu tipu Las Vegas i odnu Monte Karlo Algoritm tipu Las Vegas findingA LV array A n pochatok povtoryuvati Vipadkovim chinom vibrati odin z n elementiv dopoki a ne znajdene kinec Cej algoritm dosyagaye meti z imovirnistyu 1 Kilkist iteracij minliva i mozhe dovilno velikoyu ale ochikuvana kilkist iteracij ce limn i 1ni2i 2 displaystyle lim n to infty sum i 1 n frac i 2 i 2 Zavdyaki tomu sho ce konstanta ochikuvanij chas vikonannya na velikij kilkosti viklikiv ce 8 1 displaystyle Theta 1 Div Notaciya Landau Algoritm tipu Monte Karlo findingA MC array A n k pochatok i 0 povtoryuvati Vipadkovim chinom vibrati odin z n elementiv i i 1 dopoki i lt k abo a ne znajdene kinec Yaksho a znajdene to algoritm zavershivsya uspihom inakshe algoritm zaznav nevdachi Pislya k iteracij imovirnist znahodzhennya a stanovit Pr find a 1 1 2 k displaystyle Pr mathrm find a 1 1 2 k Cej algotitm ne garantuye uspihu ale jogo chas vikonannya obmezhenij Kilkist iteracij zavzhdi mensha nizh abo rivna k Yaksho k konstanta to chas vikonannya ochikuvanij i absolyutnij ce 8 1 displaystyle Theta 1 Uvipadkovleni algoritmi osoblivo korisni koli mayemo spravu zi zlovmisnim suprotivnikom abo napadnikom yakij zumisno namagayetsya zgoduvati algoritmu pogani vhodovi dani div najgirshij vipadok skladnosti i zmagalnij analiz taki yak v dilemi v yaznya Same z ciyeyi prichini vipadkovist povsyudna v kriptografiya U kriptografichnih zastosuvannyah ne mozhna vikoristovuvati psedvovipadkovi chisla bo supernik mozhe yih peredbachiti zrobivshi algoritm po suti deterministichnim Otzhe potribne abo dzherelo dijsno vipadkovih chisel abo kriptografichno stijkij generator psevdovipadkovih chisel Insha carina yakij pritamanna vipadkovist ce kvantovi obchislennya U gorishnomu prikladi las vegasivskij algoritm zavzhdi vidaye pravilnu vidpovid ale jogo chas vikonannya ce vipadkova velichina Algoritm Monte Karlo pov yazanij z metodom Monte Karlo dlya simulyacij garantovano zavershitsya za chas obmezhenij funkciyeyu z parametrom k ale dozvovlyaye malenku jmovirnist pomilki Zauvazhte sho bud yakij algoritm Las Vegaskogo tipu mozhna pererobiti na algoritm tipu Monte Karlo cherez nerivnist Markova povernuvshi dovilnij mozhlivo nepravilnij rezultat yaksho vin ne spromigsya povernuti rezultat u viznachenij chas I navpaki yaksho isnuye diyeva procedura pereviryannya chi pevna vidpovid pravilna todi monte karlivskij algoritm mozhna obernuti na las vegasivskij vikonuyuchi monte karlivskij znov i znov dopoki ne otrimali pravilnu vidpovid Div takozhShema nablizhennya do polinomialnogo chasu Uvipadkovleni algoritmiPrimitki Jmovirnisni algoritmi ne treba plutati z metodami yaki ya vidmovlyayus nazivati algoritmami yaki vidayut rezultat sho z visokoyu jmovirnistyu pravilnij Ce suttyevo sho algoritm vidaye pravilnij rezultat zvazhayuchi na pomilki lyudini chi komp yutera navit yaksho ce stayetsya za velikij promizhok chasu Henri Cohen 2000 A Course in Computational Algebraic Number Theory Springer Verlag p 2 V testah prostoti dlya duzhe velikih chisel obranih navmannya shans natknutis na znachennya yake obmanyuye test Ferma mensha nizh shans togo sho kosmichna radiaciya sprichinit pomilku v perebigu korektnogo algoritmu Sprijmannya algoritmu neadekvatnim cherez pershu prichinu ale ne cherez drugu pokazuye riznicyu mizh matematikoyu j inzheneriyeyu Hal Abelson and Gerald J Sussman 1996 Structure and Interpretation of Computer Programs MIT Press section 1 2 3 veresnya 2006 u Wayback Machine