Решение линейного диофантова уравнения приближенно

15

Рассмотрим следующую проблему:

Входные данные : гиперплоскость H={yRn:aTy=b} , задается вектором aZn и bZ в стандартном двоичном представлении.

Выход : xZn=argmind(x,H)

d(x,S)xRnSRnd(x,S)=minySxy2

Словом, нам дана гиперплоскость, и мы ищем точку в целочисленной решетке, которая является ближайшей к гиперплоскости.

Вопрос в том:

В чем сложность этой проблемы?

Обратите внимание, что полиномиальное время здесь будет означать полиномиальное значение в битах на входе. Насколько я вижу, проблема интересна даже в двух измерениях. Тогда нетрудно понять, что достаточно рассмотреть только те решения с но это суперполиномиально много вариантов.0 x 1| 1 | / g c d ( a 1 , a 2 )(x1,x2)0x1|a1|/gcd(a1,a2)

Тесно связанной проблемой является решение линейного диофантового уравнения, то есть нахождение такого, что или определение, что такого не существует существует Таким образом, решение линейного диофантового уравнения эквивалентно определению, существует ли решение со значением 0 для задачи I, определенной выше. Линейное диофантово уравнение может быть решено за полиномиальное время; фактически даже системы линейных диофантовых уравнений могут быть решены за полиномиальное время путем вычисления нормальной формы матрицы Смита дающей систему. Существуют алгоритмы полиномиального времени, которые вычисляют нормальную форму Смита целочисленной матрицы, первый из которых определяетсяa T x = b xxZnaTx=bxAКаннан и Бачем .

Чтобы получить представление о линейных диофантовых уравнениях, мы можем снова рассмотреть двумерный случай. Ясно, что нет точного решения, если не делит . Если он делит , то вы можете запустить расширенный алгоритм GCD, чтобы получить два числа и такие что и установить и . Теперь вы можете увидеть, как приблизительная версия отличается: когда не делит , как мы можем найти целые числаb b s t a 1 s + a 2 t = g c d ( a 1 , a 2 ) x 1 = s b / g c d ( a 1 , a 2 ) x 2 = t b / g c d ( a 1 ,gcd(a1,a2)bbsta1s+a2t=gcd(a1,a2)x1=sb/gcd(a1,a2)g c d ( a 1 , a 2 ) b x 1 , x 2x2=tb/gcd(a1,a2)gcd(a1,a2)bx1,x2такое, чтобы расстояние между и линией минимизировано?a 1 x 1 + a 2 x 2 = b(x1,x2)a1x1+a2x2=b

Для меня эта проблема немного напоминает проблему ближайших векторов в решетках, но я не вижу очевидного перехода от одной проблемы к другой.

Сашо Николов
источник
нет, это не так: диофантово приближение - это проблема, отличная от решения диофантова уравнения. в задаче диофантовой аппроксимации вам дано действительных чисел, и вы хотите умножить их все на одно целое число чтобы все они находились в пределах от некоторого целого числа. проблема заключается в поиске оптимального компромисса между размером и . Я не вижу связи между моей проблемой и этой. Q ϵ Q ϵnQϵQϵ
Сашо Николов
Какой у вас формат ввода? Кажется, что если любые два значения координат несоизмеримы, то рассматриваемый минимум равен нулю (пересекается с соответствующей двумерной плоскостью, чтобы получить уравнение вида с и несоизмеримыми то есть иррационально, а затем используйте стандартные результаты для чтобы показать, что прямая проходит произвольно близко к точкам решетки. s x + t y = w s t α sasx+ty=wst {nα}αst{nα}(mod1)
Стивен Стадницки
В частности, это означает, что ваш 'min' должен быть 'inf' (если вы берете его за бесконечно много точек), и проблема того, отличается от вопроса о том, существует ли какой-то с . Это означает, что коэффициенты должны быть рациональными числами, чтобы задача имела нетривиальное решение, и тогда проблема, кажется, принимает очень евклидову форму, тесно связанную с многомерными алгоритмами GCD. Я что-то пропустил? x d ( x , H ) = 0 ainf d(x,H)=0xd(x,H)=0a
Стивен Стадницки
@ StevenStadnicki верно. Вы можете предположить, что и (я добавлю это к вопросу, я, должно быть, пропустил его). вход дан в стандартном двоичном представлении. вопрос интересен даже при . тогда достаточно рассмотреть все возможные решения с , но поиск грубой силы будет суперполиномиальным в двоичном представлении . b Z n = 2 ( x 1 , x 2 ) x 1| 1 | / г с д ( а 1 , а 2aZnbZn=2(x1,x2)a 1 , a 2x1|a1|/gcd(a1,a2)a1,a2
Сашо Николов

Ответы:

5

Хорошо, подумав об этом больше, я считаю, что у меня есть явное сокращение от этой проблемы до расширенного GCD; Я объясню это в случае , но я считаю, что оно распространяется на произвольное . Обратите внимание , что это находит свое , что сводит к минимуму расстояние до гиперплоскости, но не обязательно самого маленького (есть на самом деле бесконечно много значений , которые получают такое же минимальное расстояние) - Я считаю , что последняя задача также выполнимо, но еще не задумывался об этом. Алгоритм основан на нескольких простых принципах:n x xn=2n xx

  • Если , то набор значений, принимаемых , точно ; кроме того, значения и с могут быть найдены эффективно (это в точности расширенный евклидов алгоритм).ax = a 1 x 1 + a 2 x 2 {g=GCD(a1,a2)ax=a1x1+a2x2x 1 x 2 a 1 x 1 + а 2 х 2 = г{0,±g,±2g,±3g,}x1x2a1x1+a2x2=g
  • Минимальное расстояние от гиперплоскости до точки на решетке - это минимальное расстояние от точки на решетке до гиперплоскости (очевидная, но полезная инверсия задачи).
  • Расстояние от заданной точки до гиперплоскости пропорционально(в частности, это умноженное на это значение - но поскольку умножение всех расстояний на это значение не влияет на местоположение минимума, мы можем игнорировать нормирующий коэффициент).ay = b | ax - b | 1 / | а |xay=b|axb|1/|a|

Это предполагает следующую процедуру:

  • Вычислите вместе с , чтобы .x 0g=GCD(a1,a2) a1x 0 1 +a2x 0 2 =gx10,x20a1x10+a2x20=g
  • Вычислить и вычислить ; - (масштабированное) минимальное расстояние от решетки до гиперплоскости. Пусть будет либо либо ( , если не кратно ), в зависимости от того, какой из них достигает минимального расстояния.d=min(b-rg,(r+1)g-b)dsrr+1=br=bgd=min(brg,(r+1)gb)dsrr+1bg=bgbg
  • Вычислить и ; затем является ближайшим кратным от до , и поэтомудостигает минимума этого расстояния по всем точкам решетки. x 2 = s x 0 2 ax = s g g b | ax - b |x1=sx10x2=sx20ax=sggb|axb|

Насколько я знаю, точно такая же процедура должна работать правильно в произвольных измерениях; ключ в том, что мерный GCD все еще удовлетворяет тождеству Безу, и поэтому, чтобы найти минимальное расстояние до точки решетки, вам нужно только найти ближайшее кратное от до .г бngb

Стивен Стадницки
источник