Para um gráfico direcionado em mudança, eu gostaria de manter informações sobre componentes fortemente conectados. As operações gráficas são incrementais: somente adição de vértice e adição de aresta. Quais estruturas de dados atingem a complexidade amortizada mais conhecida para essas operações?
Se o gráfico não fosse direcionado, a resposta seria a estrutura de localização de união. E como os gráficos não direcionados podem ser vistos como casos especiais de gráficos direcionados, o limite inferior (ainda que ligeiramente) superconstante é transferido.
Para um limite superior linear, os componentes fortemente conectados podem ser calculados do zero após cada adição de borda, sem reciclar nenhum dado. Gostaria de saber se existe alguma maneira de fazer melhor.
No cenário em que preciso disso, de alguma forma, espero que os SCCs não triviais sejam a exceção e não a regra. E na ausência de ciclos, posso atingir o tempo linear no total (que é o tempo constante amortizado por operação). [EDIT:] Deixe-me esclarecer o que quero dizer. É claro que, na ausência de ciclos, não preciso acompanhar os CECs. O tempo constante amortizado é para o que faço na minha configuração, além de me preocupar com os SCCs.
Portanto, eu também estaria interessado em estruturas de dados que, em geral, não são melhores que o limite superior acima, mas usam tempo constante amortizado por operação, desde que o gráfico permaneça um DAG.
fonte
Respostas:
Que eu saiba, o melhor algoritmo para componentes decrementais fortemente conectados é apresentado em [1] com total de atualização esperado.O(mn−−√logn)
Atualização: O novo melhor algoritmo para SCCs decrementais é apresentado em [5]O(m(logn)4)
O melhor algoritmo para componentes incrementais fortemente conectados é apresentado em [2] com tempo de atualização por borda.O(m1/2)
É uma questão em aberto se esses dois problemas podem ser resolvidos mais rapidamente.
Para componentes fortemente dinâmicos totalmente conectados , limites inferiores condicionais são conhecidos. Os limites inferiores de pior caso também são conhecidos pela manutenção decrescente / incremental de componentes fortemente conectados. Para detalhes, consulte [3] e [4].
Todos esses resultados são válidos para gráficos gerais. Melhores resultados são conhecidos para gráficos planares.
O resultado que você menciona sobre os DAGs é bem conhecido:
fonte