projeto de algoritmos e análise de notas de revisão algoritmos curriculares 9-- mapa (incluindo BFS, DFS)
O algoritmo da FIG.
Figura: a ligação entre o objecto e o objecto de
fundo do mapa
- A FIG: nó borda +
- Representação: a Fig. L = (V, E)
- Nó V, | V | = n, o número de nós
- Borda E, | E | = m, o número de arestas
FIG outros tipos de comunicação: Fig (se existe um caminho entre quaisquer dois vértices, é dito para conexão FIG),
grafo bipartido (grafo não-dirigido, uma
e
composto apenas
e
Há uma vantagem entre os vértices)
Representação da FIG
lista adjacência
- Características: d�rafo: comprimento mesa adjacentes é igual ao número de lados
gráficos undirected: o número de aresta de mesa adjacentes e igual ao dobro do comprimento - Requisitos de espaço: Θ (V + e)
- Adequado: | E | << | V | 2
- Defeitos: não é fácil determinar se existe uma aresta entre vértices uev
- Uma lista dos vértices adjacentes u e sobrecarga de tempo: Θ (grau (u))
- Analisando (u, v) ∈ E tempo: O (grau (u))
matriz de adjacência
- Para um não-simetria adjacente da matriz da fig.
- As necessidades de espaço: [] Teta (V 2 ), independentemente do lado
- Indicado em que: | E | perto | V | 2 , necessidade para rapidamente determinar se existe uma aresta entre dois vértices
- Uma lista dos vértices adjacentes u e sobrecarga de tempo: Θ (V)
- Analisando (u, v) ∈ de tempo E: Θ (1))
FIG direito
bordas do gráfico é atribuído um valor de peso
direita armazenado: tabela adjacência: a entrada na tabela é armazenada no lado. matriz de adjacência: armazenado no elemento.
Atravessando Graph
dois algoritmo de pesquisa básica
- BFS
- busca em profundidade
BFS BFS
- Entrada: A Fig. L = (V, E), dirigida ou não dirigida. Fonte vértice s ∈ V
- Objectivo: recentes s vértice fonte adjacente de vértices começar por explorar gráfico borda G a partir da fonte para encontrar o ápice de cada vértice pode-se chegar s
- Output: d [V] a partir do a distância v. Amplitude primeira árvore: s é a raiz, que contém todos os vértices pode ser alcançado
Amplitude Primeiro: o aumento da distância a partir do vértice de origem para os outros vértices em busca de comunicação
de Acompanhamento do Processo:
- Branco, cinza e preto vértices marcados
- inicialmente branco
- busca apenas, cinza
- Todos os vértices adjacentes foram pesquisados, preto
- FIFO fila para segurar o cinza vértice
em largura BFT árvore - O nó de origem para a raiz
- Ao pesquisar a porção adjacente dos vértices Uma vez encontrado vértice u V, v colocar vértices e as bordas (u, v) é adicionado à árvore
- No BFT, u é o nó pai v
- Um vértice é encontrado apenas uma vez, portanto, apenas um dos pais
BFS estruturas de dados adicionais
- FIG método tabela adjacência representa G = (V, E)
- Vertex cor [u]
- vértice pai de vértice u [pi] [u]
- Se o vértice é o vértice da raiz, ou não for encontrado, o vértice pai está vazio. π [u] = NIL
- D [u] a partir da distância u a s
- Aplicação de cinza de memória vértice fila FIFO Q
BFS算法
para cada u ∈ V- {s}
fazer cor [u] ← BRANCO
d [u] ←
π [u] ← NIL
cor [s] ← CINZENTO
d [s] ← 0
π [s] ← NIL
Q ←空集
Q ← Enqueue (Q, S)
, enquanto Q ≠空集
do u ← Dequeue (Q)
para cada v ∈ Adj [u]
fazer se cor [v] = BRANCO
então cor [v] = CINZENTO
d [v] = d [u] 1
π [v] = u
Enqueue (Q, v)
cor [u] ← PRETO
Análise algoritmo:
Shortest Path
BFS determina o caminho mais curto do nó de origem para outro vértice
DFS busca em profundidade
Entrada: A FIG nenhuma fonte vértice G (V, E)
Objectivo: iniciar vértice do acesso actual, para explorar as bordas do gráfico da FIG cada vértice encontrar a
procura é repetida a partir de uma pluralidade de fonte
de saída: cada vértice tem dois carimbos de tempo: tempo descoberta d [v], o tempo final (a lista de todos adjacência inspecção v) F [v]
o DFF floresta profundidade-primeiro
busca em profundidade
- Na medida do possível com a profundidade de pesquisa
- v lado vértice recentemente descoberto ainda não ter sido procurado
- Todas as bordas do vértice v Depois de pesquisar, retrospectivos para o vértice pai v de pesquisa
- Este processo continua até que todos os vértices pode ser alcançado a partir da fonte vértice foram encontrados
- Se não foi encontrada na FIG vértice, seleccionar uma do processo de pesquisa descritos acima é repetido como um novo vértice fonte
- DFS busca em profundidade é em profundidade produtos florestais
estruturas de dados adicional DFS
- As variáveis globais: passo de tempo. Aumento da descoberta ápice e pesquisa for concluída
- Cor variável [u], BFS e similares. Branco: encontrados antes, cinza: o processo de descoberta, o preto: processado
- vértice pai de vértice u [pi] [u]
- Encontrado tempo de conclusão d [L], f [u]
DFS算法:
DFS (V, E)
para cada u ∈ V
fazer a cor [u] ← BRANCO
π [u] ← NIL
tempo ← 0
para cada u ∈ V
fazer se cor [u] = BRANCO
então o DFS-VISITA (u)
Quando DFS-VISIT (u) a cada vez que é chamada, u se tornar root em profundidade em uma nova árvore na floresta
DFS-VISITA (u)
cor [u] = CINZENTO
tempo ← tempo + 1
d [u] ← tempo
para cada v ∈ Adj [u]
fazer se cor [v] = BRANCO
então π [v] = u
DFS-VISITA ( v)
cor [u] = preto
tempo ← tempo + 1
f [u] = tempo
tipo de borda
- Lado da árvore: Chegada vértices brancos.
Edge (u, v) é uma aresta de árvore se v foi descoberto pela primeira vez em explorar a borda (u, v) - parte traseira: vértices cinza chegada.
Antepassado vértice v borda (u, v), que liga um vértice u a sua árvore em profundidade é
um grafo orientado de um lado da parte de trás do circuito é - bordos anteriores: chegada vértice preto, e d [u] <d [v]
- Conversa cruzada: chegada vértice preto, e d [u]> d [v]
Análise algoritmo:
as características DFS
- u = p [v] a (v) DFS-VISIT é chamado quando uma lista de adjacência busca de u
- A profundidade-primeiro vértice árvore v é descendente de u vértice foi encontrado no vértice do vértice v em um cinza u estado
- Vértice v é descendente de vértice u d [u] <d [V] <f [v] <f [u]
- Em qualquer gráfico floresta prioridade profundidade L, o vértice v é um descendente de vértice u, no tempo, se e somente se D [u], na presença de um u → v caminho compreende apenas vértices branco
Teorema Suportes
para qualquer DFS um gráfico, por qualquer de u, v, um dos que se seguem:
- [D [u], F [L]] e [d [V], f [v]] não são adjacentes, u e v não são mutuamente descendentes
- [D [u], F [L]] compreendendo [d [V], f [v]], v é um descendente de u
- [D [v], f [v]] compreendendo [d [L], f [u]], u é um descendente de v
ordenação topológica
Topológica Triagem: a descobrir uma ansa linear sequência grafo G = (V, E) num vértice, de modo a que (u, v) se é uma vantagem na figura, então u aparecer nesta sequência na frente do v linear
Vértices estão dispostas horizontalmente da esquerda para a direita para ter bordas.
TOPOLÓGICA-SORT (V, E)
- Chamada DFS (V, E), o tempo de conclusão calculada para cada vértice v f [v]
- Vértice realização, a extremidade distai é inserida na tabela de conexão
- Retorno vértices tabela de conexão
Custos de funcionamento:
Lema: grafo orientado é um loop-livre em profundidade procurar DFS não produz back side
SCC componentes fortemente ligados
dirigido grafo G = (V, E) nos componentes fortemente ligados é o seu conjunto máximo de vértices C (um subconjunto de V), a concentrao tem u, cada par de vértices u, v ∈ C → v e v → u
FIG transpor
L T é G em todos os lados da direcção
tabela aplicações adjacência, podemos
o tempo para criar um GT
G T e G têm o mesmo SCC
Não há nenhum método para determinar o esquema de circuitos do SCC: em L e G T fazer primeiro busca em profundidade
Resolver os componentes fortemente conectados
- Realizando uma busca em profundidade em um mapa, calculando o tempo de conclusão de cada vértice u F [u]
- FIG configuração transposta G T
- A partir do vértice ter a maior f [u] no G T realizar uma busca em profundidade, se a busca em profundidade não pode alcançar todos os vértices, em seguida, encontrar um f [u] nos vértices restantes maior ápice, iniciar uma profundidade abaixo primeira Pesquisa
- Cada árvore na floresta finalmente obtido corresponde a uma componentes fortemente conectados
FIG ramo
dois lemas
- C e C 'representa o gráfico G SCC, U, V ∈ C, U ' , V ' ∈ C, assumindo a presença de L → L caminho L ' , é impossível V ' → V
- C e C 'é um dirigido grafo G = (V, E) de SCC, se existe uma aresta (u, v) ∈ E, u ∈ C, v ∈ C', não é f (C)> f (C ')
Referência: professores Professor Khoo Teck material didático vermelho