Super Mario Flui em NP?

15

Uma extensão clássica do problema de fluxo máximo é o problema de "fluxo máximo ao longo do tempo": você recebe um dígrafo, dois nós distintos como fonte e coletor, onde cada arco tem dois parâmetros, uma capacidade por -unidade e um atraso. Você também é dado um horizonte de tempo . O objetivo é calcular um fluxo ao longo do tempo que recebe a quantidade máxima de material a partir da fonte para a pia pelo tempo . Um fluxo de valor máximo pode ser calculado em tempo polinomial por uma redução clássica inteligente para fluxo máximo de custo mínimo.TT

Estou interessado em uma extensão para este modelo em que as bordas têm um terceiro parâmetro "vida útil". Se um arco tem vida útil , e é a primeira vez que um fluxo positivo é enviado através do arco, destruímos o arco no momento . Você pode pensar nisso como as plataformas de Super Mario Brothers que caem / são destruídas logo após você pisar nelas, ou você pode pensar nelas como baterias necessárias para alimentar as bordas, que não podem ser desligadas depois de serem ligadas . ( Editar :) O problema de decisão é, quando também é fornecido um limite inferior do valor do fluxo , se é possível agendar um fluxo que atenda ao limite superior do horizonte de tempo e ao limite inferior do valor do fluxo.tt+B

Até agora, vejo que esse problema é fortemente NP-difícil (via 3-partições). Mas, na verdade, não sei se está no NP: existe alguma garantia de uma maneira de expressar uma solução de forma compacta? Na versão clássica, algum tipo especial de fluxo ideal é usado para contornar esse problema.

Nota: o modelo acima é um pouco subespecificado, pois você pode permitir ou não permitir o armazenamento de fluxo nos nós, e você pode ter um modelo de tempo discreto ou contínuo. Resolver a pergunta para qualquer um desses modelos seria excelente.

daveagp
fonte
11
Eu não tenho certeza se entendi. Por que existe um problema em expressar um plano de fluxo específico de forma compacta e em verificar se o fluxo total é pelo menos F no tempo poli?
Suresh Venkat
3
Você pode estar pensando em como provar que a saída de um problema de otimização, cuja saída é um fluxo cronometrado, pode ser verificada quanto à otimização no tempo poli. No entanto, geralmente mostra-se que os problemas de decisão com apenas respostas sim / não estão em NP, e os problemas de otimização que maximizam alguma função como fluxo são tipicamente transformados em um problema de decisão, adicionando um valor de limite inferior B à entrada, e o problema de decisão se torna "Existe uma solução com valor pelo menos B?"
precisa saber é o seguinte
Suresh: digamos, no modelo discreto, a maneira natural de expressar um plano de fluxo leva inteiros para cada arco, mas isso não é polinomial, é apenas pseudo-polinomial no tamanho da entrada. No modelo contínuo, da mesma forma, não vejo como compactar isso. T
daveagp 21/01
Andy: Você está correto, em termos formais, é melhor para mim declarar isso como um problema de decisão, tendo um valor mais baixo além de um horizonte de tempo, então é algo pelo qual poderíamos perguntar se está no NP.
daveagp 21/01
11
@aveagp: Você tentou a dureza do PSPACE, por exemplo, reduzindo o QBF ao seu problema?
Yoshio Okamoto

Respostas:

13

Já faz muito tempo, mas tenho certeza de que esse problema está em P.

Escrevi minha tese de doutorado sobre isso em 1995. Consulte "Algoritmos de fluxo de redes dinâmicos eficientes", de Bruce Hoppe, enviado ao departamento de CS da Cornell. Online em http://dspace.library.cornell.edu/bitstream/1813/7181/1/95-1524.pdf

Consulte o capítulo 8, "Extensões", seção 8.1, sobre "arestas mortais".

Bruce Hoppe
fonte
3
"Era uma noite escura e tempestuosa. Jack estava imóvel em sua cabine - imóvel, exceto por seu estômago, que girava em seu estômago como um passeio de carnaval louco ..." (página xiii, onde o autor discute aplicações práticas).
Neal Young
Citação agradável, Neal! :) BTW daveagp faz questão de precisar de espaço pseudo-polinomial para armazenar o "fluxo" que responde à pergunta da decisão. Como encontrar não somente o fluxo ideal, mas também representam que o fluxo em P é capítulos 1-7 de minha dissertação
Bruce Hoppe
Excelente! Eu finalmente li tudo isso. Depois de corrigirmos a primeira vez em que o fluxo atinge o limite, a viabilidade da rede com os horários de início e término resultantes está em P (supondo que a manutenção seja permitida) e, portanto, o problema original está em NP: nosso certificado de tamanho polinomial lista a hora de início para cada borda. Super Mario, portanto, flui NP-completamente. Perguntas aleatórias: proibir a manutenção muda alguma coisa? existe um algoritmo de aproximação decente?
Daveagp
2

EDIT: a resposta está errada. Fiz a suposição (boba) implícita de que quando um fluxo de caminho começa no tempo se termina no tempo te passa pela borda e, ele bloqueia a borda e por esse período. No entanto, isso não é verdade. Vejo *.

Nota: Talvez essa abordagem seja desnecessariamente complicada ou incorreta. Embora eu tenha tentado verificar e anotá-la com cuidado - não gastei muito tempo nele.

Assumindo que 'empilhamento' não é permitido, por exemplo, o fluxo deve ser transferido imediatamente. Seja o número de arestas e o comprimento de entrada. Não especifiquei tempo contínuo ou discreto, pois não o levei em consideração. Deveria funcionar para um pensamento discreto, para contínuo, tenho certeza.mN

Em seguida, podemos descrever a solução como um conjunto de "caminhos-fluxos" da origem para a pia. Um fluxo de caminho é um quádruplo que consiste no seguinte: Um caminho simples da fonte para a pia; Hora de início do caminho-fluxo ; Quantidade de fluxo através do caminho ; Taxa de transferência .(P,s,uma,r)Psumar

Deixe uma solução ser dada por um conjunto de fluxos de caminho. Podemos verificar se a solução dada por esses fluxos de caminho está correta no polinômio no tempo eme :F|F|N

  • Para cada extremidade e um momento do tempo , some a taxa de taxa de transferência de todos os fluxos de caminho que passam por no tempo . Todo fluxo de caminho tem um horário de início e fim, portanto, precisamos considerar apenas os momentos em que um fluxo de caminho começa ou termina (entre esses momentos, nada muda com relação aos fluxos de caminho que ultrapassam a margem .etete
  • Para cada caminho de fluxo, podemos verificar se tudo o que de fluxo chega na pia antes do tempo .T
  • Para todas as arestas, podemos verificar se um fluxo de caminho passa após ter sido destruído ou não.
  • O limite inferior do fluxo , podemos simplesmente verificar, adicionando as quantidades de fluxo dos caminhos de fluxo.B

Agora, nós 'apenas' necessidade de mostrar que o número de caminho-flui é polinomial em .N

Para uma determinada solução, podemos determinar o tempo em que algum fluxo passou por uma borda e quando a borda foi destruída. Converta isso em um problema com uma solução equivalente: há limites rígidos em cada extremidade quando ela pode ser usada e quando não - um horário de início e de término. Vamos denotar o conjunto de todos esses momentos.{t1 1,...,tk}

Considere alguma solução não compacta e (inicialmente) um conjunto vazio de fluxos de caminho. A idéia é que, iterativamente, encontremos um caminho de fluxo na solução não compacta, removamos e armazenemos em nosso conjunto de caminhos de fluxo.

Encontre fluxos de caminhos que começam e terminam entre e , mas não terminam entre e modo que . Deixe denotar o conjunto de fluxos de caminho entre e com as propriedades conforme descrito acima.tEutjEu<jtptq[tp,tq][tEu,tj]FEu,jtjtj

Suponha que já removemos todos os fluxos de caminho por intervalos menores que . Encontre avidamente fluxos de caminhos que começam e terminam em[Eu,j][tEu,tj] . Quando encontrarmos um, remova esse fluxo da solução e ajuste as taxas de transferência dos vértices de acordo com a quantidade de fluxo enviada da fonte para a fonte também. Para esse fluxo de caminho, maximizamos a taxa de transferência. Isso significa que, pelo menos em uma borda, atingimos sua taxa máxima de transferência ou, após a remoção desse fluxo de caminho, não há mais fluxo sobre essa borda. Observe que isso vale para o período [tEu+1 1,tj-1 1]. Nos dois casos, não há mais fluxo passando por essa margem e podemos concluir que .|Fs,t|m

(*) Por que a afirmação anterior é verdadeira? Bem, todos os outros caminhos de fluxo em começam antes de t i + 1 e terminam após t j - 1 . Portanto, eles devem se sobrepor no tempo em que usam uma certa aresta. Como a taxa de transferência é maximizada para o fluxo do caminho, deve haver uma borda em que seja estanque.FtEu,tjtEu+1 1tj-1 1

Daí resulta que para alguma constante c e a alegação de que está em NP segue.Eu,j[k]|FEu,j|cm3c

Ruub
fonte
Para mim, o limite da decomposição parece defeituoso, tentarei dar um contra-exemplo ilustrativo. Suponha que a rede seja apenas uma fonte-> limite da capacidade 100, atraso 0, vida útil 100. Agora considere este cronograma de fluxo: no intervalo de tempo [0, 1) envie o fluxo a uma taxa de 1; em [1, 2) a uma taxa de 2, etc, até a taxa de 100 em [99, 100). Qualquer decomposição precisa> = 100 caminhos-fluxos, o que contradiz sua afirmação como eu a entendo. Devo mencionar que Ford e Fulkerson evitam esse obstáculo em sua solução clássica (sem expectativa de vida), considerando um tipo específico de solução ótima, e não arbitrária.
daveagp 25/01
Provavelmente, isso pode ser evitado maximizando a "vida útil" do fluxo, mas há outro problema na prova, que eu editei para deixar claro.
Ruub
1

Pelo que entendi, você precisaria armazenar apenas um número por arco, representando o instante em que o fluxo começa a ser enviado através do arco. Isso pressupõe que, depois disso, o arco seja inutilizado. Se, caso contrário, o arco puder ser usado novamente depois que parar de ser usado, ele deverá ter soluções arbitrariamente próximas das soluções para o fluxo máximo ao longo do tempo (já que o fluxo pode parar de ser enviado por um período arbitrariamente pequeno e começar a ser bombeado novamente) )

Leandro M.
fonte
Não consigo entender qual é a sua reivindicação.
Tsuyoshi Ito 25/01
Eu não acho que isso esteja correto. Por exemplo, imagine uma rede com três nós, a fonte s, o terminal te outro nó v, com três arcos a1 = (s, v), a2 = (s, v), a3 = (v, t). As capacidades dos arcos são todas 1 e os tempos de viagem são definidos como 0 para a1 e a3 e 100 para a2. Os períodos de vida são 1 para a1 e 1000 para a2 e a3. Então, no tempo 0, pode-se enviar uma unidade de fluxo através de a1 e a3 de s para t, e começa a enviar uma unidade de fluxo através de a2. Durante o tempo de 1 a 99, a3 não carrega fluxo, pois a1 se foi, mas no tempo 100, o fluxo através de a2 chega em v e a3 é usado novamente.
Yoshio Okamoto
Se bem entendi, você afirma em parte que, uma vez fixados os tempos de nascimento / morte das bordas, o problema restante pode ser resolvido usando a abordagem clássica de fluxo máximo ao longo do tempo, mas não vejo como é esse o caso.
daveagp
@ Yoshio: Nesse caso, se, em vez de começar a enviar uma unidade de fluxo ao longo de a2 imediatamente, você parasse de enviar fluxos completamente, depois de um período arbitrariamente curto de tempo a1 poderia ser usado mais uma vez, e isso renderia uma solução melhor.
Leandro M.
@ Dave: não, não é exatamente isso que reivindico. O que estou dizendo é que cada arco pode ser usado apenas um número finito de vezes, ou as soluções para o problema devem arbitrariamente aproximar as soluções do fluxo máximo ao longo do tempo. Estou preocupado com os detalhes da definição do problema, em resumo.
Leandro M.