Tenho algumas observações que são longas demais para comentários. Aqui está um resumo.
Qualquer algoritmo para resolver exatamente o seu problema pode ser usado para resolver exatamente programas lineares (ou seja, "programação linear forte", que é usada na solução de Sariel e atualmente não possui um algoritmo de tempo polinomial).
O acompanhamento natural é se soluções aproximadas (isto é, "programação linear fraca") podem fornecer uma solução. Embora a resposta seja afirmativa, parece que a condição de parada para este procedimento requer quantidades que, até onde sei, não podem ser computadas em tempo polinomial. (ou seja, o algoritmo encontra algo bom, mas certificando isso é difícil.) Minha principal sugestão aqui é fazer uma definição significativa de um " solução -optimal" para o seu problema, caso em que esta abordagem é tratável. (Essa estratégia efetivamente lança pequenas faces do poliedro.)ϵ
Em geral, enquanto pensava na sua declaração atual do seu problema, continuei analisando considerações de eficiência. Mas há uma intuição razoável nisso: os objetos que estamos jogando - vértices, faces etc. - são discretos e exponencialmente abundantes.
(1.) Suponha que tenhamos um algoritmo que resolva exatamente o seu problema. Observe que qualquer ponto exposto de qualquer face que contenha o ponto médio fornecido será uma solução exata para o programa linear original. Portanto, proceda da seguinte forma. Adicione uma nova restrição linear dizendo que o valor objetivo original deve ser igual ao valor ideal (que agora sabemos) e defina um novo objetivo dizendo para maximizar a primeira coordenada da solução. Repita este procedimento uma vez para cada dimensão, sempre adicionando uma restrição e escolhendo uma nova coordenada para maximizar. Esse processo reduzirá a dimensão da solução a cada vez; necessariamente, quando o processo é concluído, temos um conjunto afim de dimensão 0, significando um único ponto. Assim, com O(d)iterações do seu algoritmo de resolução de ponto médio (e apenas aumentando a descrição do problema em uma quantidade polinomial em cada vez), uma forte programação linear é resolvida. Isso mostra que, embora a solução de Sariel exija forte programação linear, uma solução exata para sua pergunta não pode evitá-la. ( Edit : note que minha prova supõe um poliedro compacto (um politopo) como entrada; caso contrário, ele tem que trabalhar um pouco mais para encontrar vértices.)d
(2.) Aqui está um esquema iterativo, usando um solucionador convexo completo em cada iteração, cujas soluções convergirão para uma noção moderada de solução de ponto médio. Escolha uma sequência positiva e decrescente de parâmetros de penalidade ; é razoável que estas desçam geometricamente, ie λ i = 2 - i . Agora, para cada i , minimize aproximadamente a função convexa{λi}∞i=1↓0λEu= 2- euEu
⟨ C , x ⟩ - λEu∑j = 1mem( ⟨ Umj, X ⟩ - b ) ,
onde é o seu objectivo inicial, e j intervalos ao longo dos m constrangimentos originais, agora colocado no objectivo através de barreiras logarítmicas (nota, este é o padrão). Agora, se pensarmos na face minimizadora (de maior dimensão) do seu poliedro, observe que, para λ ie tolerância τ suficientemente pequenas para sua caixa preta de opção convexa, o valor aproximado ideal estará próximo a esta face, no entanto, as barreiras a empurrarão. o mais longe possível das outras restrições. Disse outra maneira, como λ i⟨ C , x ⟩jmλEuτλEudiminui, o objetivo linear original acabará por dominar algumas barreiras exigentes que o mantiveram da face apropriada, mas não afetará as barreiras que o afastam de outras fronteiras, em particular as da face alvo.
Em um mundo perfeito, nos sentávamos e determinávamos analiticamente um valor perfeito , ou pelo menos um tempo de parada, para que você não precise resolver muitos problemas infinitamente. Infelizmente, isso parece difícil. Uma idéia é, por exemplo, determinar a menor largura de qualquer face com dimensão maior que 0; esse é um problema de minimização bem definido com ótimo positivo, porque há muitas faces finitas (e a largura é calculada em relação a cada uma). Com isso, podemos definir λ pequeno o suficiente para que a influência das barreiras seja pequena no centro de cada face. Infelizmente, pode haver exponencialmente muitas faces, portanto, calcular essa quantidade é um absurdo.λλ
Todas as condições de parada que eu pude apresentar tiveram esses tipos de dificuldades computacionais. (Além disso, muitos poderiam novamente ser usados para transformar isso em um forte solucionador de programação linear.)
ϵλτϵ
(Alguns comentários finais.) Parece que a noção de "ponto médio" é crucial; O comentário de Sasho aponta que o centróide (centro de massa?) É um problema extremamente difícil, ao passo que é fácil encontrar, por exemplo, a maior bola inscrita. As barreiras logarítmicas que sugeri acima, em geral, não serão consistentes com nenhuma dessas noções do ponto médio. Por outro lado, para as barreiras e a bola, você pode derivar um limite inferior na distância do centróide até o limite relativo da face; talvez isso seja mais útil para você?
Por fim, a partir de sua descrição, acredito que você quis dizer que a "face alvo" teria a maior dimensão possível? Isso está bem definido, no entanto, também existem faces de solução para todas as possíveis dimensões menores. De qualquer forma, a abordagem de Sariel e a abordagem de barreira acima funcionarão com a face de maior dimensão.