6. Rotulação de Nós - Definições O que significa o rótulo de um nó? Considere: s nó origem; t nó destino O rótulo de cada nó denota o número possíveis de caminhos para alcançar o nó destino 1 2 3
7.
8.
9.
10. Rotulação de Nós - Exemplo Inicialização: Identificar quais nós são nScannable (não tem sucessores imediatos) e rotulá-los com 0. Rotular o destino com 1. 1 O nó t é NScannable NScannable s: origem t: destino
11. Rotulação de Nós - Exemplo Passo Geral: Analisar todos os NScannable e rotular seus antecessores 1 NScannable Antecessores de t: 1 e 2 Rótulo 1 = Rótulo 1 + Rótulo t Rótulo 2 = Rótulo 2 + Rótulo t 1 1 O nó t ficará scanned
12. Rotulação de Nós - Exemplo Passo Geral: identificar os novos NScannable (sucessores imediatos scanned) scanned NScannable identificado: 1. Seu sucessor (t) é scanned. NScannable 1 1 1
13. Rotulação de Nós - Exemplo Passo Geral: Analisar todos os NScannable e rotular seus antecessores scanned NScannable 1 1 1 Antecessores de 1: s e 2 Rótulo s = Rótulo s + Rótulo 1 Rótulo 2 = Rótulo 2 + Rótulo 1 + 1 = 2 1 O nó 1 ficará scanned
14. scanned 1 1 Rotulação de Nós - Exemplo scanned 2 1 Passo Geral: identificar os novos NScannable (sucessores imediatos scanned) NScannable identificado: 2. Seus sucessores (t,1) são scanned. NScannable
15. Rotulação de Nós - Exemplo Passo Geral: Analisar todos os NScannable e rotular seus antecessores scanned 1 1 scanned 2 1 NScannable Antecessor de 2: s Rótulo s = Rótulo s + Rótulo 2 + 2 = 3 O nó 2 ficará scanned
16. Rotulação de Nós - Exemplo scanned 1 1 scanned 2 scanned Passo Geral: identificar os novos NScannable (sucessores imediatos scanned) NScannable identificado: s. Seus sucessores (1,s) são scanned. 3 NScannable Critério de parada satisfeito. O número de caminhos de s até t é 3
18. Rotulação de Arcos - Definições O que significa o rótulo de um arco? Considere: s nó origem; t nó destino O rótulo de cada arco denota o número possíveis de caminhos, através do arco, da origem para o nó onde o arco incide 1 1 1 2 1
19.
20.
21.
22. Rotulação de Arcos - Exemplo s: origem t: destino Inicialização: Identificar quais nós são LScannable (não tem arco que chega) e rotular seus arcos de saída com 0. Rotular os arcos que saem da origem com 1. LScannable identificado: 1. Não tem arco que chega nele. Rotular seus arcos de saída com 0 LScannable 0 0 Nó origem: s Rotular os arcos que saem de s com 1 1 1 1 Sempre que todos os arcos que saem de um nó são rotulados, o nó passa a ser scanned (1 e s)
23. Rotulação de Arcos - Exemplo Passo Geral: Identificar nós que são LScannable 0 0 1 1 1 scanned scanned LScannable identificado: 2. Todos os arcos que chegam nele estão rotulados LScannable
24. Rotulação de Arcos - Exemplo 0 0 1 1 1 scanned LScannable Passo Geral: Analisar todos os nós LScannable e rotular seus arcos de saída com a soma dos rótulos dos arcos que chegam no nó. Rotular o arco que sai de 2. Rótulo do arco que sai = soma dos rótulos dos arcos que chegam 0 + 1 = 1 O nó 2 se torna scanned scanned
25. Rotulação de Arcos - Exemplo 0 0 1 1 1 scanned scanned scanned 1 Passo Geral: Identificar nós que são LScannable LScannable identificado: 3. Todos os arcos que chegam nele estão rotulados LScannable
26. Rotulação de Arcos - Exemplo scanned scanned scanned LScannable 0 0 1 1 1 1 Passo Geral: Analisar todos os nós LScannable e rotular seus arcos de saída com a soma dos rótulos dos arcos que chegam no nó. Rotular o arco que sai de 3. Rotulo do arco que sai = soma dos rótulos dos arcos que chegam 1 + 1 = 2 O nó 3 se torna scanned
27. Rotulação de Arcos - Exemplo Passo Geral: Identificar nós que são LScannable LScannable identificado: t. Todos os arcos que chegam nele estão rotulados scanned scanned scanned 0 0 1 1 1 1 scanned 2 Fim do algoritmo, pois o nó destino se tornou LScannable. O número de caminhos de s para t é a soma dos rótulos dos arcos que incide em t. 1 + 2 = 3 LScannable
28. Números de caminhos através de qualquer nó Aplicando o algoritmo de rotulação de nós obtemos os rótulos (n’k) de cada nó. O rótulo de um nó indica o número de caminhos distintos de um nó k até o nó destino. Se invertermos as direções de todos os arcos da rede e aplicar o algoritmo de rotulação de nós obteremos os rótulos (n’’k) de cada nó. Neste caso o rótulo indica o número de caminhos distintos de um nó k até o destino, que era a origem no grafo original O número total de caminhos da origem ao destino através de um nó k é: nk = n’k x n’’k
29. Exemplo 3 1 2 1 1 1 2 3 Inverte Multiplica-se os rótulos 3 2 2 3 Tem-se o números de caminhos distintos de s a t através do nó 1