Algoritmo eficiente para esse problema de otimização? Programaçao dinamica?

9

Eu criei um diagrama que mostra o que estou tentando realizar.

Diagrama

Imagem em tamanho real

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 -> 2pode 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?

FogleBird
fonte
Para resolver isso com o DP, basta pensar na estrutura / subestrutura da solução e resolver de baixo para cima. Isso deve fornecer um tempo de execução linear. Eu acho que também é geralmente solucionável como um sistema de equações lineares, mas resolver / otimizar pode não ter um tempo de execução melhor.
18715 Jason
11
plz não coloque detalhes importantes escritos no texto da imagem. Você também não descreveu formalmente o problema (em termos matemáticos), isso é metade da batalha. "minimizar erro quadrado médio" de quê? no entanto, ele se parece com uma versão 1d do "instalações localização problema"
vzn

Respostas:

5

Esta é apenas uma extensão da resposta de @ Sébastien Loisel.

Observe minimizar (xiyi)2 sujeito a xixi1ci é equivalente a minimizar (xi(yici))2 sujeito a xixi1. Deixeiai=yici, esse é precisamente o problema de regressão isotônica . Existe umO(n) algoritmo de tempo.

Chao Xu
fonte
11
Excelente - implementei uma regressão isotônica (algoritmo de violadores adjacentes ao pool) e está funcionando perfeitamente e muito mais rapidamente do que o meu algoritmo de busca memorizado. Obrigado!
FogleBird 24/04/2015
4

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 bbolas. Isso pode ser feito geralmente apenas o mesmo tipo de informação para bolab1.

Yuval Filmus
fonte
Você pode dar uma olhada no código que escrevi e me dizer como uma abordagem de DP pode diferir em termos de desempenho?
FogleBird 18/04/2015
Se sua abordagem funciona para você, ótimo. Você pode estimar sua complexidade? Você pode estimar a complexidade da minha sugestão? Isso pode ajudá-lo a decidir se vale a pena programar minha abordagem. Se você decidir que vale a pena, você pode comparar as duas abordagens empiricamente. Qual abordagem funciona melhor também depende do tamanho e da natureza das entradas - certifique-se de testar sua abordagem nas entradas reais.
Yuval Filmus
2

Este é um programa quadrático. Você está tentando minimizar a soma de(xiyi)2 sujeito a xixi1ci.

Sébastien Loisel
fonte
Isso responde "Isso pode ser categorizado / reformulado como um problema conhecido?" mas seria bom dar mais detalhes.
David Richerby