Эффективно решить систему строгих линейных неравенств со всеми коэффициентами, равными 1, без использования общего решения ЛП?

9

Согласно названию, кроме использования универсального LP-решателя, существует ли подход для решения систем неравенств по переменным xi,,xk где неравенства имеют вид iIxi<jJxj? А как насчет особого случая неравенств, которые образуют общий порядок по суммам членов силового множества{xi,,xk}?

jonderry
источник
4
@ Ankur: не имеет значения, целые или действительные числа. Если это строгие неравенства, вы можете округлить их до рациональных, а затем умножить их на наименее общий знаменатель, чтобы получить целочисленное решение.
Питер Шор
6
Понятия не имею, что можно написать за 30 минут (на каком языке?). Если это критерий «простого», действительно ли это вообще вопрос теоретической информатики?
Цуёси Ито
1
Хороший вопрос, Питер Шор. Джондерри, я забираю свое заявление обратно. Я думал, что комбинаторная задача удовлетворения этих строгих неравенств и выпуклая аналитическая задача нахождения внутренней точки конуса качественно различны. Я был неправ.
Анкур
1
@Tsuyoshi: Это не должно быть тривиальным, но мне любопытно узнать, можно ли это сделать из первых принципов, не используя всю дополнительную мощь полного решателя LP, особенно для особого случая, когда у нас есть порядок всех сумм подмножеств (обратите внимание, что в этом случае полиномиальное время экспоненциально по числу переменных).
Jonderry
3
Тогда я думаю, что «Может ли эта проблема быть эффективно решена без использования общих алгоритмов для линейного программирования?» это хороший способ лучше сформулировать свой вопрос.
Цуёси Ито

Ответы:

9

Для вашего первого вопроса, без полного порядка, ответ на ваш вопрос заключается в том, что это по сути так же сложно, как линейное программирование. Вот набросок доказательства.

Во-первых, давайте установим переменную x1>0, который мы называем ϵ, Теперь давайте выберем другую переменнуюxi, который мы будем называть 1, Мы хотим убедиться, что

ϵ1.
Для этого рассмотрим неравенства
x1<x2,
x1+x2<x3,
x2+x3<x4,
и так далее. С достаточно длинной цепью, это скажет нам, чтоNx1<xi, или ϵ<1/Nдля некоторых очень больших N (N является числом Фибоначчи, и поэтому экспоненциально растет в i).

Теперь мы можем создать линейную программу с целыми коэффициентами. Если мы хотим коэффициент 3 наxtДобавляем неравенства

xt<xt<xt<xt+ϵ
и пусть 3 . Если вы хотите увеличить коэффициенты, вы можете получить их, выражая коэффициенты в двоичной записи и создавая неравенства, которые гарантируют, что , и так далее. Чтобы получить правую часть, мы делаем то же самое с переменной . Этот метод позволит нам использовать линейные программы в форме ОП для приблизительной проверки выполнимости произвольных линейных программ с целочисленными коэффициентами, задача, которая по сути столь же сложна, как и линейное программирование.xt+xt+xtxtxu2xtxv2xuxi=1

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

Питер Шор
источник