Кіріспе

Кездейсоқ алгоритмнің түрі

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

Бір жақты және екі жақты қате

Детерминистік алгоритм берген жауап әрқашан дұрыс болады деп күтіледі, бірақ Монте-Карло алгоритмдері үшін бұл осылай болмайды. Шешім қабылдау мәселелері үшін бұл алгоритмдер жалған қисайлы немесе нақты қисайлы деп жіктеледі. Жалған қисайлы Монте-Карло алгоритмі жалған жауап бергенде әрқашан дұрыс болады; нақты қисайлы алгоритм дұрыс жауап бергенде әрқашан дұрыс болады. Бұл бір жақты қателерге ие алгоритмдерді сипаттайды, ал басқалары қисайлылықсыз болуы мүмкін; олар екі жақты қателерге ие деп айтылады. Олар ұсынатын жауап (нағыз немесе жалған) белгілі бір шектеулі ықтималдықпен дұрыс немесе бұрыс болуы мүмкін. Мысалы, Соловай-Страссендік жай сан тесті берілген санның жай сан екенін анықтау үшін қолданылады. Ол жай сандар үшін әрқашан дұрыс жауап береді; құрама сандар үшін ол кем дегенде 1/2 ықтималдығымен жалған жауап береді және 1/2 ықтималдығынан кем ықтималдығымен дұрыс жауап береді. Осылайша, алгоритмнің жалған жауаптарының дұрыс екеніне сенуге болады, ал дұрыс жауаптар белгісіз болып қалады; мұндай алгоритм 1/2 дұрыс, жалған қисайлы алгоритм деп аталады.

Көшейткіш

Бір жақты қатесі бар Монте-Карло алгоритмі үшін, алгоритмді k рет іске қосу арқылы сәтсіздік ықтималдығын азайтуға (және сәттілік ықтималдығын арттыруға) болады. Соловэй-Страссен алгоритмін қарастырайық, ол 1/2 дәл, жалған және бұрмаланған. Бұл алгоритмді бірнеше рет іске қосып, k итерация ішінде жалған жауап алынса, жалған жауап береді, әйтпесе дұрыс жауап береді. Осылайша, егер сан жай болса, жауап әрқашан дұрыс болады, ал егер сан жаратылған болса, жауап кем дегенде 1−(1−1/2)k = 1−2−k ықтималдығымен дұрыс болады. Екі жақты қатесі бар Монте-Карло шешім алгоритмдері үшін, алгоритмді k рет іске қосып, жауаптардың көпшілік функциясын қайтару арқылы сәтсіздік ықтималдығын тағы да азайтуға болады.

Күрделілік сыныптары

Күрделілік класы BPP екі жақты қателіктердің шектелген ықтималдығымен полиномиалдық уақытта жұмыс істейтін Монте-Карло алгоритмдерімен шешілетін шешімдерді сипаттайды, ал күрделілік класы RP Монте-Карло алгоритмімен шешілетін проблемаларды сипаттайды, онда бір жақты қателіктердің ықтималдығы шектелген: егер дұрыс жауап жалған болса, алгоритм әрқашан осылай деп жауап береді, бірақ дұрыс жауап шын болған жағдайларда кейде қателікпен жалған деп жауап беруі мүмкін. Ал күрделілік класы ZPP күтілетін уақытта Лас-Вегас алгоритмдерімен шешілетін проблемаларды сипаттайды. ZPP ⊆ RP ⊆ BPP, бірақ осы күрделілік сыныптарының бірінен-бірі ерекшеленетіні белгісіз; яғни Монте-Карло алгоритмдері Лас-Вегас алгоритмдерінен артық есептеу күшіне ие болуы мүмкін, бірақ бұл әлі дәлелденбеді. Осылайша, "SO-ның кемшілігі жойылды және шешімге сенімділік қалыптастырылды".