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|)

MikleB
fonte
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

Prabu
fonte
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|)

Martin B.
fonte