Участник:Zerogerc — различия между версиями
Zerogerc (обсуждение | вклад)  (→Примеры рандомизированных алгоритмов)  | 
				Zerogerc (обсуждение | вклад)   (→Алгоритм)  | 
				||
| Строка 6: | Строка 6: | ||
====Алгоритм====  | ====Алгоритм====  | ||
Нам нужен детерминированный алгоритм работающий за <tex>p(\log|n|)</tex>, где <tex>p</tex> {{---}} полином. Однако не существует такого эффективного алгоритма. Однако существует эффективный рандомизированный алгоритм.  | Нам нужен детерминированный алгоритм работающий за <tex>p(\log|n|)</tex>, где <tex>p</tex> {{---}} полином. Однако не существует такого эффективного алгоритма. Однако существует эффективный рандомизированный алгоритм.  | ||
| − | Формально, нам нужно проверить принадлежит ли число языку <tex>PRIMES = \{ \llcorner N \lrcorner : N -</tex> простое <tex>\}</tex>.  | + | Формально, нам нужно проверить принадлежит ли число языку <tex>PRIMES = \{ \llcorner N \lrcorner : N -</tex> простое <tex>\}</tex>. Для каждого <tex>N</tex> и <tex>A \in [N - 1]</tex>, определим:  | 
| + | |||
| + | |||
| + | <tex>   | ||
| + | QR_N(A) =   | ||
| + | \begin{cases}  | ||
| + |   0 & gcd(A, N) \ne 1\\      | ||
| + |   +1 & A = B^2 (mod N), gcd(B, N) = 1\\  | ||
| + |   - 1, & \text{otherwise}  | ||
| + | \end{cases}  | ||
| + | </tex>  | ||
===Проверка двудольного графа на существование в нем полного паросочетания===  | ===Проверка двудольного графа на существование в нем полного паросочетания===  | ||
Версия 16:17, 20 апреля 2017
Содержание
Примеры рандомизированных алгоритмов
Проверка числа на простот
Задача
Дано целое число . Определить является ли оно простым.
Алгоритм
Нам нужен детерминированный алгоритм работающий за , где — полином. Однако не существует такого эффективного алгоритма. Однако существует эффективный рандомизированный алгоритм. Формально, нам нужно проверить принадлежит ли число языку простое . Для каждого и , определим:
Проверка двудольного графа на существование в нем полного паросочетания
Задача
— двудольный граф, где и, тогда полным паросочетанием называется такое что каждая вершина является концом ровно одного ребра из .
Алгоритм
Пусть у нас есть матрица размером , где . Пусть если , иначе. Пусть детерминант матрицы . Где это множество всех перестановок . Каждая такая перестановка это возможное полное паросочетание. Тогда ясно что если когда в полное паросочетание. Таким образом: в графе полное паросочетание
Заметим две вещи. Первое: у полинома всего переменных и общая??? степень не более . Второе: хотя размер может быть экспоненциальным, для точно заданных значений cуществуют известные полиномиальные алгоритмы. (задача вычисления детерминанта )
Это ведет нас к алоритму, который называется рандомизированный алгоритм Ловаса. Сформулируем его: выберем случайные числа для . Если значит говорим что в графе есть полное паросочетание, иначе говорим что нету. Основное преимущество этого алгоритма в том, что он может быть реализован с помощью рандомизированной схемы, а это значит что он может быть эффективно реализован используя параллельные вычисления.