Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример 1. Алгоритм Монте-Карло проверки числа на простоту

Алгоритмы Монте-Карло.

В алгоритме Монте-Карло случайным образом выбираются некоторые значения и с этими значениями производятся вычисления.

Алгоритмы Монте Карло всегда выдают какие-либо результаты, однако вероятность того, что результат правильный, возрастает при увеличении времени работы алгоритма. Иногда такие алгоритмы возвращают неправильные ответы.

Алгоритм называется р-правильным, если он возвращает правильный ответ с вероятностью р (1/2 <р <1).

Если число правильных ответов на данном входе превышает единицу, то алгоритм Монте-Карло называется стойким, если возвращаемый им правильный ответ всегда один и тот же.

Результаты алгоритма Монте-Карло можно улучшить двумя способами. Во-первых, можно увеличить время его работы. Во-вторых, можно повторять его несколько раз. Вторая возможность реализуется только, если алгоритм стойкий. В этом случае алгоритм можно вызывать много раз и выбирать тот ответ, который встречается чаще всего.

Задача проверки простоты числа - пример задачи, которую относили к классу NP. Лишь в 2002 г. был найден полиномиальный алгоритм и тем самым, доказано, что задача относится к классу Р. Тест Агравала — Каяла — Саксены (или тест AKS) — это полиномиальный детерминированный тест простоты чисел, предложенный индийскими учёным Маниндрой Агравалом (англ.) и его двумя студентам. Однако сложность предложенного алгоритма , (n – тестируемое число), поэтому на практике он практически не используется. В настоящее время разрабатываются модификации теста с меньшей сложностью.

Задача факторизации натурального числа – разложения на простые множители является более сложной задачей. На настоящий момент неизвестны полиномиальные алгоритмы факторизации чисел, хотя и не доказано, что таких алгоритмов не существует. На сегодняшний момент задача относится к классу NP. На предполагаемой большой вычислительной сложности задачи факторизации базируется криптосистема RSA и некоторые другие. Факторизация с полиномиальной сложностью возможна на квантовом компьютере с помощью алгоритма Шора.

Детерминированный алгоритм проверки числа на простоту (экспоненциальный): Выбираем все числа от 2 до и делим n на эти числа, пока не будет найден делитель:

begin;

i:=2;

j:= true;

while (i*i < n and j) do

if (n mod I =0) then j:= false

else i:=i+1;

if j then writeln («Это простое число»)

else writeln («Это составное число»);

end;

Время работы алгоритма . Асимптотическая сложность алгоритма – экспоненциальная относительно битовой длины n.

Пример: для чисел , сложность для больших чисел .

Вероятностный метод Монте-Карло:

В этом случае мы генерируем случайное число между 2 и и проверяем, делится ли N на это число. Если да, то число N составное, в противном случае мы не можем ничего сказать.

Это не очень хороший алгоритм, потому что он возвращает отрицательны ответ слишком часто. Например, для числа 60 329, которое является произведением трех простых чисел 23, 43 и 61, алгоритм будет генерировать случайное число между 2 и 245, но только три числа из этого интервала привели бы к правильному результату. Вероятность успеха всего 1.2%.

Хотя этот простой алгоритм работает и не очень хорошо, имеются аналогичные подходы к проверке простоты числа, основанные на той же идее и дающие большую вероятность правильного ответа.

Для алгоритма, основанного на методе Монте-Карло, малой теореме Ферма и Китайской теореме об остатках справедлива:

Теорема. Если - простое, то описанный выше алгоритм всегда (с вероятностью 1) выдает ответ « - простое». Если - составное, то ответ « - составное» будет получен с вероятностью .

Замечание. Чтобы получить полиномиальный вероятностный алгоритм проверки простоты числа, нужно дважды применить приведенный алгоритм, тогда вероятность ошибки будет меньше 1/4.

<== предыдущая лекция | следующая лекция ==>
Алгоритмы с нулевой ошибкой | Алгоритмы Лас Вегаса
Поделиться с друзьями:


Дата добавления: 2014-01-03; Просмотров: 1647; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.035 сек.