Estou procurando um algoritmo rápido para calcular o fluxo máximo em gráficos dinâmicos. ou seja, dado um gráfico e , temos o fluxo máximo em de para . Em seguida, novos / antigo nó adicionado / eliminadas com as suas arestas correspondentes de modo a formar um gráfico . O que é um fluxo máximo no gráfico recém-criado? Existe uma maneira de impedir o recálculo do fluxo máximo?s , t ∈ V F L s t u L 1
Qualquer pré-processamento que não consome muito tempo / memória é apreciado.
A ideia mais simples é recalcular o fluxo.
Outra idéia simples é a seguinte: salve todos os caminhos de aumento usados no cálculo de fluxo máximo anterior; para adicionar um vértice , podemos encontrar caminhos simples (no gráfico de capacidade atualizado pela etapa anterior) que começam na fonte, vão para o depois vão para o destino, mas o problema é que esse caminho deve ser simples, não consegui encontrar melhor que para esse caso, para. (Observe também que, se fosse apenas um caminho, isso poderia ser feito em mas não é assim.)v O ( n ⋅ m ) m = | E | O ( n + m )
Também para remover o nó acima da ideia não funciona.
Também já vi papéis como a abordagem incremental para arestas , mas parece que não são bons o suficiente neste caso, é mais do que para cada aresta e parece não ser uma extensão adequada neste caso (apenas recalculamos um fluxo). Atualmente, também estou usando o algoritmo de fluxo máximo Ford-Fulkerson. Se houver uma opção melhor para algoritmos on-line, é bom conhecê-lo.