Número de vértices alcançáveis ​​no DAG para cada vértice


11

Seja um gráfico direcionado acíclico, de modo que o grau externo de qualquer vértice seja O ( log | V | ) . Para cada vértice de G , podemos contar o número de vértices alcançáveis, apenas executando dfs de cada vértice e isso levará tempo O ( | V | | E | ) . Existe uma maneira melhor de resolver este problema?G(V,E)O(log|V|)GO(|V||E|)



1
@Radu é uma duplicata direta? soa como se fosse #
Suresh Venkat

@ Suresh, comparado à minha pergunta, este tem um limite superior no grau de vértice e não pede limites inferiores. Essas são pequenas diferenças na minha opinião, então eu consideraria uma duplicata, mas não me sinto muito bem com isso.
precisa saber é o seguinte

1
ok, então vamos deixar como está.
Suresh Venkat

4
A resposta de virgi à minha pergunta implica um algoritmo para esse. O(|V|2)
Radu Grigore

Respostas:



-1

Eu não sou um especialista aqui, vou tentar.

1) Como é DAG, ele deve ter um vértice coletor, isto é, vértice com grau 0. 0. Encontre um vértice coletor, diga x e adicione {x} como vértice acessível ao vizinho (x). remova x e repita o processo até o gráfico ficar vazio


Como o grau externo é limitado, parece mais útil começar com uma fonte?
András Salamon

@ andras-salamon: não, porque você não sabe trivialmente quantos nós são acessíveis a partir de uma fonte. Você não faz isso (zero) para uma pia, no entanto.
Martin B.

O(|V||E|)xO(|V|)O(|V|)O(|V|)O(|V||E|)

-2

(Semelhante à solução de Prabu ... mas mais detalhada)

N(v)vreach(v)

  1. O(|V|+|E|)
  2. vreach(v)=nN(v)reach(n)

|E|O(|V|+|E|)

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.