Comportamento do tipo XOR em redes de fluxo

8

XOR não é o nome correto, mas estou procurando algum tipo de comportamento exclusivo.

Atualmente, estou resolvendo um conjunto de problemas diferentes (de atribuição) modelando redes de fluxo e executando um algoritmo min-cost-max-flow. As redes de fluxo são bastante úteis, pois muitos problemas podem ser reduzidos a eles de maneira fácil e compreensível. No meu caso, essas são correspondências com algumas restrições adicionais. Como essas restrições estão se tornando mais complexas, fiquei me perguntando se existem algumas construções existentes para modelar comportamentos específicos.

Nesse caso, quero restringir o fluxo de saída de um nó a uma única borda.

Dado um gráfico , as capacidades integrais e os custos . Um nó arbitrário é chamado . vizinhos diretos são chamados . Podemos substituir as arestas (vermelho) por alguma construção para que apenas uma aresta possa receber fluxo ? O que significa que, se obtiver algum fluxo (por exemplo, ), nenhuma outra borda (vermelha) poderá receber fluxo.G=(V,E)c(u,v)k(u,v)AB1,..BnAB1,...ABnAB15/10

Poderíamos adicionar nós / bordas intermediários e brincar com custos e capacidades. A capacidade total de nossa nova construção precisa permanecer a mesma e o custo das diferentes alternativas deve permanecer proporcional.

Então, minhas perguntas são:

  1. Existem construções como esta em geral? (Quaisquer palavras-chave, links, documentos)
  2. Você pode sugerir uma solução para o meu problema específico?
Patrick Schmidt
fonte
Só para esclarecer, é um problema de min-cost-max-flow , ou um problema de min-cost-flow , onde uma certa quantidade de fluxo precisa ser enviada da maneira mais barata possível?
Paresh
É um problema min-cost-max-flow. Atualizei minha pergunta.
Patrick Schmidt
1
Posso perguntar qual foi o problema original que você mapeou em uma rede de fluxo com essas restrições? Eu pergunto porque existe uma solução alternativa simples, e eu só quero ter certeza de que esse não foi o algoritmo original que você está tentando mapear para o fluxo máximo.
26512 Paresh
1
Isso significa que existe apenas um vértice em que essa condição de apenas 1 fluxo de recebimento de borda de saída precisa ser imposta? Ou essa limitação é para todos os vértices (nesse caso, minha resposta deve fornecer a solução mais simples)? Além disso, não entendi direito como você modelou seu problema na construção acima.
Paresh
1
Os problemas de fluxo que restringem os fluxos a serem caminhos são geralmente chamados de "fluxos irretocáveis". O fluxo não fragmentável de custo mínimo é NP-Hard em geral. No entanto, essa versão possui demandas além das arestas, que sua versão não possui.
Nicholas Mancuso

Respostas:

6

No geral, a resposta é não. Se colocarmos restrições do tipo XOR nas arestas externas de um vértice, podemos provar que encontrar um fluxo min-cut-max é NP-Hard. A técnica é reduzir o 3-SAT a ele.

Vamos supor que existem n variáveis x1,x2,...,xn no 3-SAT e m cláusulas c1,c2,...,cm. Criamos um gráficoG(V,E)codificando a instância do problema 3-SAT. Para cada variávelxi, criamos um vértice vi conectado à fonte s com uma borda de capacidade. Mais dois vérticesui,wi, que estão conectados a vi, são criados para representar xi assumindo o valor 0 ou 1 também com margens de capacidade .

Para cada uma das cláusulas ci, criamos um vértice oiG correspondente a ele e oi está conectado às variáveis ​​ou suas negações na cláusula com limites de capacidade 1. Por exemplo, seci=(x3x4¬x5), nós conectamos a u3,u4,w5com bordas de capacidade. Todosoi estão conectados à pia com bordas de capacidade 1.

Desde a xi e ¬xi não pode assumir o mesmo valor, colocamos a restrição XOR nas bordas (vi,ui), (vi,wi), i=1,2,3,...,n. Pode-se provar que existe um fluxo máximo de tamanhomse e somente se a instância 3-SAT for satisfatória. Como o problema está trivialmenteNP e a redução é polinomial, concluímos que a versão de decisão do fluxo da rede de restrição XOR é NP-Complete.

Strin
fonte
3

Para sua primeira pergunta, não conheço técnicas ou regras gerais gerais que você possa usar para modelar restrições arbitrárias em redes de fluxo. A maioria dos exemplos que eu vi são geralmente baseados em alguma intuição sobre a natureza das restrições e, muitas vezes, a princípio parecem arbitrários.

Para o seu caso em particular, ainda estou com um bom mapeamento para o fluxo máximo. No entanto, posso sugerir uma solução alternativa simples (você já deve ter percebido isso): Profundidade da primeira pesquisa da fontes.

Como o fluxo é restrito a apenas uma borda de saída para cada vértice, o que você tem é um caminho da origem até o destino. Esse caminho satisfaz as duas propriedades em que ele pode transportar o fluxo máximo entre outros caminhos da origems marcar t, e que possui o menor custo dentre todos os caminhos que poderiam levar o mesmo fluxo de s para t.

  • Inicie um DFS a partir do s
  • À medida que você desce pelo DFS, acompanhe a capacidade mínima atual de todas as arestas encontradas até agora.
  • Além disso, acompanhe o custo total atual (comprimento do caminho) encontrado até o momento.
  • E se t é alcançado durante o DFS, compare esses dois valores com valores globais e atualize os valores globais, se necessário.
  • Retroceder de t e continue com o DFS.

Basicamente, você enumera todos os caminhos de s para tusando o DFS e escolha aquele que atenda aos seus critérios de custo mínimo e fluxo máximo. O próprio DFS levaO(|E|) tempo, que é mais eficiente que um algoritmo de fluxo máximo.

Paresh
fonte
Obrigado, mas como eu quero aplicar a regra a um subconjunto de vértices, a solução não será tão simples.
Patrick Schmidt
2

Para basear-se na resposta de Paresh, se todas as capacidades máximas forem uma (e todo o resto for inteiro), você também poderá dividir cada nó em dois para que o nó (n-) tenha todas as arestas internas, o nó (n +) tenha toda a saída bordas e (n-) e (n +) estão conectadas com uma borda de capacidade máxima 1. Resolva essa nova rede de custo mínimo e pronto.

Se as capacidades máximas não são todas iguais, o problema é mais difícil. Você pode formular o problema como um MIP (Programa Inteiro Misto). As únicas restrições de número inteiro são as restrições de XOR.

Felizmente, eles podem ser modelados como Conjuntos Ordenados Especiais - tipo SOS1 (consulte http://en.wikipedia.org/wiki/Special_ordered_set ). A maioria dos solucionadores de MIP representa especificamente as restrições do SOS1 e as tratará com muito mais eficiência (às vezes você precisa contar, às vezes, isso é possível - verifique os documentos do solucionador).

Embora o MIP acabe convergindo para a resposta ideal, para modelos realmente grandes, talvez você não tenha tempo para esperar que ele termine. Obter MIPs grandes para convergir geralmente é mais arte do que engenharia.

A próxima sugestão é muito mais trabalhosa. Você pode usar um solucionador de rede de custo mínimo como uma sub-rotina e possui ramificação nas bordas do XOR usando técnicas SOS1. Por exemplo, em cada ramificação, desative a metade das extremidades externas menos usadas, resolva a rede de custo mínimo (muito rápido) e repita até que todas as restrições XOR sejam atendidas.

Você pode priorizar a sequência de ramificação por seus próprios critérios (volume de fluxo, volume X de custo, capacidade reservada, número de arestas possíveis, etc.). Ao orientar a pesquisa, você pode aprimorar as partes da solução mais importantes para você.

Você não indica se sempre sabe se o seu problema é viável ou não. Se for sempre possível, você poderá se safar de uma estratégia de ramificação "livre de retorno", ou seja, você a seguirá como uma heurística.

Se não for garantido que o problema seja viável, um PIM poderá desaparecer para sempre. Uma heurística com base no exposto acima ainda pode ser valiosa para encontrar uma solução rapidamente com um número relativamente baixo de violações.

EMS
fonte
-2

Em geral, a resposta é desconhecida, não impossível!

concluímos que a versão de decisão do fluxo da rede de restrição XOR é NP-Complete. portanto (é possível, podemos fazer isso) se e somente se P = NP.

aasa
fonte
3
Por favor, complete sua resposta com referências e mais detalhes.
vonbrand
Nenhuma referência é necessária, esta resposta está apenas apontando que, se P = NP, ainda é possível. ou seja, o problema é NP-Completo, mas se P = NP, podemos resolvê-lo.
Albert Hendriks