Résoudre efficacement un système d'inégalités linéaires strictes avec tous les coefficients égaux à 1 sans utiliser un solveur LP général?


9

Par le titre, outre l'utilisation d'un solveur LP à usage général, existe-t-il une approche pour résoudre les systèmes d'inégalités sur les variables où les inégalités ont la forme ? Qu'en est-il du cas particulier des inégalités qui forment un ordre total sur les sommes des membres de l'ensemble de puissance de ?i I x i < j J x j { x i , , x k }xi,,xkiIxi<jJxj{xi,,xk}


4
@Ankur: peu importe qu'il s'agisse d'entiers ou de réels. S'il s'agit d'inégalités strictes, vous pouvez les arrondir à des rationnels, puis les multiplier par le dénominateur le moins commun pour obtenir une solution entière.
Peter Shor

6
Je n'ai aucune idée de ce que vous pouvez coder en 30 minutes (dans quelle langue?). Si tel est le critère du «simple», est-ce vraiment une question d'informatique théorique?
Tsuyoshi Ito

1
Bon point Peter Shor. jonderry, je reprends ma déclaration. Je pensais que le problème combinatoire de la satisfaction de ces inégalités strictes et le problème analytique convexe de la recherche d'un point intérieur d'un cône sont qualitativement distincts. J'avais tort.
Ankur

1
@Tsuyoshi: Cela n'a pas besoin d'être trivial, mais je suis curieux de savoir si cela peut être fait à partir des premiers principes sans utiliser toute la puissance supplémentaire d'un solveur LP complet, en particulier pour le cas spécial dans lequel nous avons une commande de tous les sous-ensembles (notez dans ce cas que le temps polynomial est exponentiel dans le nombre de variables).
jonderry

3
Ensuite, je pense que "ce problème peut-il être résolu efficacement sans utiliser d'algorithmes généraux pour la programmation linéaire?" est un bon moyen de mieux formuler votre question.
Tsuyoshi Ito

Réponses:


9

Pour votre première question, sans l'ordre total, la réponse à votre question est qu'elle est essentiellement aussi difficile que la programmation linéaire. Voici un aperçu d'une preuve.

D'abord, établissons une variable , que nous appelons . Maintenant, choisissons une autre variable , que nous appellerons . Nous voulons nous assurer que Pour ce faire, considérez les inégalités etc. Avec une chaîne suffisamment longue, cela nous dira que , ou , pour un très grand ( est un nombre de Fibonacci, et croît donc de façon exponentielle en ).ϵ x i 1 ϵ 1x1>0ϵxi1x 1 < x 2 , x 1 + x 2 < x 3 , x 2 + x 3 < x 4 , N x 1 < x i ϵ < 1 / N N N i

ϵ1.
x1<x2,
x1+x2<x3,
x2+x3<x4,
Nx1<xiϵ<1/NNNi

Nous pouvons maintenant fabriquer un programme linéaire avec des coefficients entiers. Si nous voulons un coefficient de 3 sur , nous ajoutons les inégalités et laissons reposer pour 3 . Si vous voulez des coefficients plus grands, vous pouvez les obtenir en exprimant les coefficients en notation binaire et en créant des inégalités qui garantissent que , , etc. Pour obtenir le côté droit, nous faisons de même avec la variablext

xt<xt<xt<xt+ϵ
xt+xt+xtxtxu2xtxv2xuxi=1. Cette technique nous permettra d'utiliser des programmes linéaires de la forme de l'OP pour vérifier approximativement la faisabilité de programmes linéaires arbitraires avec des coefficients entiers, une tâche qui est essentiellement aussi difficile que la programmation linéaire.

Je ne sais pas comment analyser la deuxième question, poser des questions sur le cas où il y a un ordre total sur tous les sous-ensembles.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.