J'ai quelques observations trop longues pour des commentaires. Voici un résumé.
Tout algorithme pour résoudre exactement votre problème peut être utilisé pour résoudre des programmes linéaires exactement (c.-à-d., "Une programmation linéaire forte", qui est utilisée dans la solution de Sariel, et qui n'a actuellement pas d'algorithme polynomial temporel).
Le suivi naturel est de savoir si des solutions approximatives (c'est-à-dire une "programmation linéaire faible") peuvent fournir une solution. Bien que la réponse soit oui, il semble que la condition d'arrêt de cette procédure nécessite des quantités qui, à ma connaissance, ne peuvent pas être calculées en temps polynomial. (c.-à-d. que l'algorithme trouve quelque chose de bien, mais certifier cela est difficile.) Ma principale suggestion ici est de faire une définition significative d'une « solution optimale » pour votre problème, auquel cas cette approche est traitable. (Cette stratégie jette efficacement les minuscules faces du polyèdre.)ϵ
En général, tout en réfléchissant à votre énoncé actuel de votre problème, j'ai continué à me heurter à des considérations d'efficacité. Mais il y a une intuition raisonnable à cela: les objets que nous jetons autour - sommets, visages, etc. - sont discrets et exponentiellement abondants.
(1.) Supposons que nous ayons un algorithme qui résout exactement votre problème. Notez que tout point exposé d'une face contenant le point milieu fourni sera une solution exacte au programme linéaire d'origine. Procédez comme suit. Ajoutez une nouvelle contrainte linéaire en disant que la valeur d'objectif d'origine doit être égale à la valeur optimale (que nous connaissons maintenant), et définissez un nouvel énoncé d'objectif pour maximiser la première coordonnée de la solution. Répétez cette procédure une fois pour chaque dimension, en ajoutant chaque fois une contrainte et en choisissant une nouvelle coordonnée à maximiser. Ce processus réduira à chaque fois la dimension de la solution; nécessairement, lorsque le processus se termine, nous avons un ensemble affine à 0 dimension, ce qui signifie un seul point. Ainsi avec O(d)itérations de votre algorithme de résolution médiane (et en augmentant seulement la description du problème d'un montant polynomial en chaque fois), une forte programmation linéaire est résolue. Cela montre que bien que la solution de Sariel nécessite une programmation linéaire forte, une solution exacte à votre question ne peut pas l'éviter. ( Edit : notez que ma preuve suppose un polyèdre compact (un polytope) en entrée; sinon il faut travailler un peu plus pour trouver des sommets.)d
(2.) Voici un schéma itératif, utilisant un solveur convexe complet à chaque itération, dont les solutions convergeront vers une notion légère de solution médiane. Choisissez une séquence positive mais décroissante de paramètres de pénalité ; il est raisonnable de les faire descendre géométriquement, c'est-à-dire λ i = 2 - i . Maintenant, pour chaque i , minimisez approximativement la fonction convexe{λi}∞i=1↓0λi=2−ii
⟨c,x⟩−λi∑j=1mln(⟨aj,x⟩−b),
⟨c,x⟩jmλiτλidiminue, l'objectif linéaire d'origine finira par dominer certaines barrières capricieuses qui vous empêchaient du visage approprié, mais n'affectera pas les barrières vous empêchant d'autres limites, en particulier celles de la face cible.
λλ
Toutes les conditions d'arrêt que j'ai pu trouver ont eu ce genre de difficultés de calcul. (De plus, beaucoup pourraient à nouveau être utilisés pour en faire un solveur de programmation linéaire puissant.)
ϵλτϵ
(Quelques commentaires finaux.) Il semble que la notion de «point médian» soit cruciale; Le commentaire de Sasho souligne que le centroïde (centre de masse?) Est un problème extrêmement difficile, alors que trouver, disons, la plus grande boule inscrite est facile. Les barrières logarithmiques que j'ai suggérées ci-dessus ne seront en général cohérentes avec aucune de ces notions médianes. En revanche, pour les barrières et la balle, vous pouvez dériver une limite inférieure sur la distance de votre centre de gravité à la limite relative du visage; peut-être que cela vous est plus utile?
Enfin, d'après votre description, je pense que vous vouliez dire que le "visage cible" devait avoir une dimension aussi élevée que possible? Ceci est bien défini, mais il existe également des faces de solution pour toutes les petites dimensions possibles. Quoi qu'il en soit, l'approche de Sariel et l'approche barrière ci-dessus fonctionneront avec le visage de la plus grande dimension.