Метод чотирьох росіян

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

В інформатиці, метод чотирьох росіян— це техніка пришвидшення алгоритму, що використовує булеві матриці або, загальніше, алгоритмів, що використовують матриці в яких кожна комірка може набувати обмеженої кількості можливих значень.

Розроблений комбінаторний алгоритм дозволяв множити булеві матриці за O(n3logn). З маленькою зміною алгоритм може працювати за O(n3log2n). Станом на 2015 було вже отримано алгоритм, що працює за O(n3log4n).

Алгоритм

Нехай A і B будуть n×n булевими матрицями. Обираючи довільне ϵ можна розбити A на блоки розміру ϵlogn×ϵlogn. Позначимо кожен такий блок через Aij, тоді 1i,jnϵlogn.

Для кожної двійки i,j створюємо таблицю пошуку Tij згідно з такою специфікацією:

для кожного бітового вектора v завдовжки ϵlogn: Tij[v]=Aijv.

Маємо, що |Tij|=nϵϵlogn.

Час необхідний для обчислення всіх таблиць асимптотично становить:

(nlogn)2nϵlog2n=n2+ϵ,

бо всього (nlogn)2 двійок i,j, nϵ векторів v і обчислення Aijv потребує O(log2n) для сталої ϵ.

Щодо матриці B, то кожен її стовпчик можна розбити на nϵlogn частин. Нехай Bjk буде jй шматок kго стовпчика. Кожен добуток AijBjk можна обчислити за сталий час, бо ми вже маємо обчислені таблиці.

Щоб обчислити Q=AB, можна зробити наступне.

Для j[1..nϵlogn] : Qij=Qik(AijBjk) (за означенням булевого добутку матриць). Таким чином, час потрібний для виконання алгоритму становить

O(nnlogn2logn)=O(n3logn).

Передобчисливши всі можливі побітові у таблицю S так, що S(u,v)=uv, де u,v{0,1}ϵlogn, можна зменшити час виконання до O(n3log2n).

Історія

Алгоритм запропонували Арлазаров, Дініц, Кронрод і Фараджев в 1970.Шаблон:Sfn Походження назви невідоме; Шаблон:Harvtxt пояснюють:

Другий метод, часто згадуваний як алгоритм «чотирьох росіян», через кількість і громадянство його винахідників, що «практичніше» ніж алгоритм в теоремі 6.9.Шаблон:Sfn

Всі чотири автори працювали тоді в Москві.[1]

Примітки

Шаблон:Reflist

  • Шаблон:Citation. Оригінальна назва: "Об экономном построении транзитивного замыкания ориентированного графа".
  • Шаблон:Citation

Шаблон:Ізольована стаття