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?


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.


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.


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.


Isso responde "Isso pode ser categorizado / reformulado como um problema conhecido?" mas seria bom dar mais detalhes.
David Richerby
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.