projeto de algoritmos e análise de notas de revisão algoritmos curriculares 9-- mapa (incluindo BFS, DFS)

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 V 1 V 1 e V 2 V_2 composto apenas V 1 V 1 e V 2 V_2 Há uma vantagem entre os vértices)

Representação da FIG
lista adjacência
lista de 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
Em largura
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
    controle de processos
    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] ← \ infty
  π [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

BFS
Análise algoritmo:
BFS1
BFS2
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

busca em profundidade
2 em profundidade pesquisa
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:
DFS1
DFS2
as características DFS

  • u = p [v] \ leftrightarrow 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 \ leftrightarrow foi encontrado no vértice do vértice v em um cinza u estado
  • Vértice v é descendente de vértice u \ leftrightarrow 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:

  1. [D [u], F [L]] e [d [V], f [v]] não são adjacentes, u e v não são mutuamente descendentes
  2. [D [u], F [L]] compreendendo [d [V], f [v]], v é um descendente de u
  3. [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)

  1. Chamada DFS (V, E), o tempo de conclusão calculada para cada vértice v f [v]
  2. Vértice realização, a extremidade distai é inserida na tabela de conexão
  3. Retorno vértices tabela de conexão

Custos de funcionamento: th ( V + E ) TH (V + E)

Lema: grafo orientado é um loop-livre \ leftrightarrow 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
componentes fortemente ligados
FIG transpor
L T é G em todos os lados da direcção
tabela aplicações adjacência, podemos th ( V + E ) TH (V + E) 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

  1. Realizando uma busca em profundidade em um mapa, calculando o tempo de conclusão de cada vértice u F [u]
  2. FIG configuração transposta G T
  3. 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
  4. Cada árvore na floresta finalmente obtido corresponde a uma componentes fortemente conectados

Resolver componentes fortemente conectados
FIG ramo
cladogram
dois lemas

  1. 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
  2. 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

Publicado 25 artigos originais · ganhou elogios 19 · vê 10000 +

Acho que você gosta

Origin blog.csdn.net/weixin_42605042/article/details/89790277
Recomendado
Clasificación