Ця відповідь розглядає іншу модель обчислення: модель одиничної вартості оперативної пам'яті. У цій моделі машинні слова мають розмір , а операції над ними займають час. Для простоти ми також припускаємо, що кожен елемент масиву вписується в одне машинне слово (і так є не більше за величиною).O ( 1 ) n O ( 1 )O ( журналn )O ( 1 )нO ( 1 )
Ми побудуємо лінійний рандомізований алгоритм за часом з односторонньою помилкою (алгоритм може оголосити два масиви, що містять однакові елементи, навіть якщо це не так) для більш складної проблеми визначення, чи є два масиви і містять однакові елементи. (Ми не вимагаємо сортування жодного з них.) Наш алгоритм зробить помилку з вірогідністю не більше .b 1 , … , b n 1 / nа1, … , Анб1, … , Бн1 / н
Ідея полягає в тому, що наступна ідентичність має значення, якщо масиви містять однакові елементи:
Обчислення цих многочленів точно займе занадто багато часу. Замість цього ми вибираємо випадковий простийpта випадковийx0і перевіряємо, чи
n ∏ i = 1 (x0-ai)≡ n ∏ i = 1 (x0-
∏i = 1н( х - аi) = ∏i = 1н( х - бi) .
pх0
Якщо масиви рівні, тест завжди пройде, тож давайте зосередимось на випадках, коли масиви різні. Зокрема, деякий коефіцієнт
∏ n i = 1 ( x - a i ) - ∏ n i = 1 ( x - b i ) є ненульовим. Оскільки
a i , b i мають величину
n O ( 1 ) , цей коефіцієнт має величину
2 n n O (∏i = 1н( х0- аi) ≡ ∏i = 1н( х0- бi)( модр ) .
∏нi = 1( х - аi) - ∏нi = 1( х - бi)аi, бiнO ( 1 ) , і тому він має щонайбільше
O(n)простих коефіцієнтів розміру
Ω(n). Це означає, що якщо ми виберемо набір щонайменше
n 2 простихрозмірів
pрозміром принаймні
n 2 (скажімо), то для випадкового простого
pцього множини він матиме ймовірність принаймні
1-1 / n,що
n ∏ i = 1 (x- a i )2ннO ( n )= nO ( n )O ( n )Ω ( n )н2pн2p1 - 1 / н
Випадковий
х 0 по модулю
р спостерігатиме це з імовірністю
1 - п / р ≥ 1 - 1 / п (такмногочлен ступенявище
п має не більше
п коренів).
∏i = 1н( х - аi) - ∏i = 1н( х - бi) ≢ 0( модр ) .
х0p1 - п / р ≥ 1 - 1 / ннн
На закінчення, якщо ми виберемо випадковий розміром приблизно n 2 серед набору принаймні n 2 різних простих чисел і випадкового x 0 по модулю p , то коли масиви не містять однакових елементів, наш тест не завершиться ймовірність 1 - O ( 1 / n ) . На виконання тесту потрібно час O ( n ), оскільки р вписується в постійну кількість машинних слів.pн2н2х0p1 - O ( 1 / n )O ( n )p
н2Ω ( 1 / логn )p( журналn )O ( 1 )х0pх0
O ( n )1 - O ( 1 / n )1 - О ( 1 / нС)С