Участник:Zerogerc — различия между версиями
Zerogerc (обсуждение | вклад) (→Алгоритм) |
Zerogerc (обсуждение | вклад) (→Алгоритм) |
||
Строка 18: | Строка 18: | ||
</tex> | </tex> | ||
− | + | {{---}} Для каждого нечетного простого <tex>N</tex> и <tex>A \in [N - 1], QR_N(A) = A^{(N - 1)/2} (mod N)</tex> | |
− | + | ||
+ | {{---}} Для каждого нечетного <tex>N, A</tex> определим симол Якоби <tex>(\frac{N}{A})</tex> как <tex>\prod\limits_{i=1}^k QR_{P(i)}(A)</tex>, где <tex>P_1, ... , P_k</tex> это простые делители (не обязательно различные) числа <tex>N (N = \prod\limits_{i=1}^k P_i)</tex>. Заметим что сивол Якоби вычислим за <tex>O(logA * logN)</tex> | ||
===Проверка двудольного графа на существование в нем полного паросочетания=== | ===Проверка двудольного графа на существование в нем полного паросочетания=== |
Версия 12:52, 25 апреля 2017
Содержание
Примеры рандомизированных алгоритмов
Проверка числа на простот
Задача
Дано целое число
. Определить является ли оно простым.Алгоритм
Нам нужен детерминированный алгоритм работающий за
, где — полином. Однако не существует такого эффективного алгоритма. Однако существует эффективный рандомизированный алгоритм. Формально, нам нужно проверить принадлежит ли число языку простое . Для каждого и , определим:
— Для каждого нечетного простого
и— Для каждого нечетного
определим симол Якоби как , где это простые делители (не обязательно различные) числа . Заметим что сивол Якоби вычислим заПроверка двудольного графа на существование в нем полного паросочетания
Задача
— двудольный граф, где и , тогда полным паросочетанием называется такое что каждая вершина является концом ровно одного ребра из .
Алгоритм
Пусть у нас есть матрица
размером , где . Пусть если , иначе. Пусть детерминант матрицы . Где это множество всех перестановок . Каждая такая перестановка это возможное полное паросочетание. Тогда ясно что если когда в полное паросочетание. Таким образом: в графе полное паросочетаниеЗаметим две вещи. Первое: у полинома
всего переменных и общая??? степень не более . Второе: хотя размер может быть экспоненциальным, для точно заданных значений cуществуют известные полиномиальные алгоритмы. (задача вычисления детерминанта )Это ведет нас к алоритму, который называется рандомизированный алгоритм Ловаса. Сформулируем его: выберем случайные числа для
. Если значит говорим что в графе есть полное паросочетание, иначе говорим что нету. Основное преимущество этого алгоритма в том, что он может быть реализован с помощью рандомизированной схемы, а это значит что он может быть эффективно реализован используя параллельные вычисления.