Визначальний модуль m


18

Назвіть відомі ефективні алгоритми для обчислення визначника цілочисельної матриці з коефіцієнтами в , кільця залишків по модулю . Число може бути не простим, а складеним (тому обчислення проводяться в кільці, а не в полі).Zmmm

Наскільки мені відомо (читайте нижче), більшість алгоритмів є модифікацією усунення Гаусса. Питання полягає в обчислювальній ефективності цих процедур.

Якщо трапилося, що є якийсь інший підхід, мені теж цікаво.

Заздалегідь спасибі.

Оновлення:

Дозвольте пояснити джерело цього питання. Припустимо, m - просте число. Отже Zm - це поле. І в цьому випадку ми можемо виконувати всі обчислення, використовуючи числа менше m , тому у нас є деяка приємна верхня межа всіх операцій над числами: додавання, множення та інверсія --- всі необхідні операції для запуску Гауссової елімінації.

З іншого боку, ми не можемо здійснити інверсію для деяких чисел, якщо m не є простим. Тому нам потрібні кілька хитрощів для обчислення визначника.

І зараз мені цікаво, які відомі хитрощі виконувати цю роботу і чи можна такі хитрощі знайти в книгах та книгах.


3
Що ви маєте на увазі під "ефективним"? Проблема явно в . P
Девід

2
Чи є фіксованою постійною ? Як це дається? m
Майкл Блондин

2
Що ви маєте на увазі під малим? Чи могли вони бути написані одинаково?
Майкл Блондин

5
Я досі не розумію питання. Детермінант цілочисельної матриці можна обчислити в поліноміальний час, тому можна просто взяти це значення за модулем . Немає необхідності виконувати поділи на Z m або знаходити факторизацію m . mZmm
Девід

2
@ Валерій Соколов: Це основна лінійна алгебра. Наприклад, перевірте проблему 11.5.3 складності обчислень Крістоса Х. Пападімітріу.
Цуйосі Іто,

Відповіді:


15

Якщо ви знаєте факторизацію ви можете обчислити модуль кожного p e i i окремо, а потім об'єднати результати, використовуючи китайський передопомогу. Якщо e i = 1 , то обчислити модуль p e i i легко, оскільки це поле. Для більшого e i , ви можете використовувати підйомник Hensel. m=p1e1pnenpieiei=1pieiei


Дякую! Це як щось, що я шукав. Це звичайна практика для визначників? (посилання вітаються).
Валерій Соколов

6
Це стандартні методи з комп’ютерної алгебри. Погляньте на сучасну комп’ютерну алгебру фон Зура Гетхена та Герхарда або будь-яку іншу книгу з комп'ютерної алгебри. Про вашу конкретну проблему дивіться також наступний документ Pan, Yu & Stewart comet.lehman.cuny.edu/vpan/pdf/pan146.pdf
Markus Bläser

17

Існує комбінаторний алгоритм Махаджана та Віней, який працює над комутаційними кільцями: http://cjtcs.cs.uchicago.edu/articles/1997/5/contents.html


Дякую за вашу відповідь із посиланням на дуже цікавий документ.
Валерій Соколов

Також я вважаю, що існують більш ефективні алгоритми, оскільки автори цієї роботи вирішили більш загальну проблему (для будь-якого комутативного кільця).
Валерій Соколов

під "є" ти маєш на увазі "відомий" або "існує" (але його ще не знайдено)? це розумна здогадка, але я трохи скептично налаштований на те, що структура кільця інтигерів по модулю невелике складене число може вам так багато допомогти. якщо я помиляюся, я вважаю це цікавим.
Сашо Ніколов

1
@ValeriySokolov, щоб бути справедливим, оскільки відповідь відповідає на ваше запитання, ви можете розглянути його прийняття (або, якщо ви хочете почекати можливих кращих відповідей, які не були б необґрунтованими)
Suresh Venkat

@SashoNikolov Я виявив, що Wolfram Mathematica якось це обчислює. У "Примітках до впровадження" вони кажуть: Det використовує модульні методи та скорочення рядків, будуючи результат, використовуючи китайську теорему про залишки. Я хотів би знати, що саме вони роблять, але швидкий пошук мені нічого не дав. Що стосується "малого складеного ", то це означає лише, що я хочу вважати складність додавань і множень у цьому кільці O ( 1 ) . Тобто всі фактори, такі як O ( log m ) , вважаються O ( 1 ) . mO(1)O(logm)O(1)
Валерій Соколов

11

Щоб вирішити цю проблему, існує швидкий детермінований алгоритм, заснований на нормальних формах Сміта , найгірша складність яких обмежена вартістю множення матриці на ціле число по модулю . Для будь-якої матриці A алгоритм виводить його нормальну форму Сміта, звідки det ( A ) можна легко обчислити.mAdet(A)

Більш конкретно, визначте так, що дві n × n матриці з коефіцієнтами, взятіми від Z m, можна помножити, використовуючи основні арифметичні операції O ( n ω ) на Z m (ціле додавання, множення, експоненція тощо). Потім,ωn×nZmO(nω)Zm

Враховуючи матрицю , існує детермінований алгоритм, який обчислює det ( A ), використовуючи O ( n ω ) основні арифметичні операції над Z m [1] .AZmn×ndet(A)O(nω)Zm

Коли це було написано в 1996 році, не було асимптотично більш швидкої альтернативи (у статті йдеться про попереднє існування алгоритмів з однаковою зв’язкою, але я не знаю, які з них, чи є вони ймовірнісними).

Оновлення (17 липня 2013): приємний бонус особливість цього алгоритму є те , що він працює в поліноміальний час для довільних композиційних , не знаючи прайм-Nuber розкладання в м ! Це добре, оскільки не існує відомих ефективних (класичних) алгоритмів факторингу (звичайно, якщо у вас був квантовий комп'ютер, ви можете застосувати алгоритм Шор ). Якщо ви робите є розкладання , то алгоритм Маркус запропонував спосіб здається простіше реалізувати.mm

Примітки: у статті складність "основних арифметичних операцій" становить якщо ви використовуєте стандартну цілу арифметику, але ви можете досягти O ( M ( log m ) log log m ) більш швидкими методами. M ( t ) обмежує вартість множення двох t- бітних чисел. Поточний рекорд для ω становить 2.3727 .O(log2m)O(M(logm)loglogm)M(t)tω


не є що зазвичай позначається ω ? θω
Сашо Ніколов

Можливо, я не знаю найпоширеніших для цього позначень.
Хуан Бермеджо Вега

Я думаю, що ти маєш рацію, я зміню це на "мейнстрім"
Хуан Бермеджо Вега
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.