Eu criei um diagrama que mostra o que estou tentando realizar.
Na sequência de entrada, os nós estão o mais próximos possível. Mas eu quero que os nós brancos estejam o mais próximo possível dos respectivos nós pretos. As arestas entre os nós podem ser alongadas para tentar minimizar esse erro. Eles não podem ser encurtados. Portanto, 1 -> 2
pode ser não menos que 4, por exemplo.
Eu incluí uma solução possível. As arestas que foram alongadas são rotuladas. Observe que o alongamento de uma aresta muda todos os nós para a direita.
Esse eixo é contínuo, mas eu poderia discretizá-lo se isso ajudar.
Estou pensando que uma abordagem de programação dinâmica poderia funcionar aqui, mas não tenho certeza - nunca fui muito bom com o DP.
Qual é o algoritmo de execução mais rápida que pode resolver isso? Isso pode ser categorizado / reformulado como um problema conhecido?
fonte
Respostas:
Esta é apenas uma extensão da resposta de @ Sébastien Loisel.
Observe minimizar(xEu-yEu)2 sujeito a xEu-xi - 1≥cEu é equivalente a minimizar (xi−(yi−ci))2 sujeito a xi≥xi−1 . Deixeiai=yi−ci , esse é precisamente o problema de regressão isotônica . Existe umO(n) algoritmo de tempo.
fonte
Se você discretizar o eixo, poderá usar a programação dinâmica. Para cada bolab e localização viável ℓ (dentro de alguns limites razoáveis), calcule o melhor erro quadrático médio para o primeiro b bolas. Isso pode ser feito geralmente apenas o mesmo tipo de informação para bolab−1 .
fonte
Este é um programa quadrático. Você está tentando minimizar a soma de(xi−yi)2 sujeito a xi−xi−1≥ci .
fonte