Aprendendo a estrutura de dados - Capítulo 5: Gráficos (operações básicas de gráficos)

Capítulo 5: Gráficos (operações básicas de gráficos)

1. Adjacente (G, x, y)

Adjacent(G,x,y)Determine se o gráfico G tem arestas <x,y>ou(x,y)

Como representação gráfica não direcionada da matriz de adjacência e método de determinação da lista de adjacência são:

  • Matriz de adjacência: Julgando se a borda existe ou não, julgando diretamente o valor na matriz de adjacência correspondente, se for 1, não existe de outra forma
  • Lista de adjacências: Determine se há um nó da borda da mesa de tal borda na mesa da borda correspondente ao vértice

Como a matriz de adjacência e a lista de adjacência do grafo não direcionado serão armazenadas duas vezes, não importa se o primeiro nó x é usado como o número da linha ou y é usado como o número da linha, ele pode ser pesquisado.

Como matriz de adjacência de grafos direcionados e o método de lista de adjacências, os métodos de determinação são:

  • Matriz de adjacência: Julgando se a borda existe ou não, julgando diretamente A[x][y]o valor na matriz de adjacência correspondente , se for 1, não existe de outra forma
  • Lista de adjacências: determine se existe um nó da tabela de tal aresta na tabela de arestas do vértice correspondente ao primeiro ponto final x

Por ser um grafo direcionado, cada matriz de adjacência e tabela de adjacência armazenará apenas uma, então o primeiro x do parâmetro de entrada é o subscrito do ponto de partida da aresta

2. Vizinhos (G, x)

Neighbors(G,x)Liste as arestas adjacentes ao nó x (vértice) no gráfico G

Como listas de gráficos não direcionados que correspondem aos nós adjacentes à borda

  • Matriz de adjacência: matriz de adjacência de busca direta do 行或列valor de vértice 1, o valor 1 representa a presença de um lado
  • Lista de adjacências: Percorra a lista de arestas para vertices, todos os nós da lista de arestas representam uma aresta adjacente

Como listas de dígrafo correspondentes aos nós da borda adjacente

  • Matriz de adjacência: Precisamos atravessar o vértice correspondente ao 行和列valor 1, o valor 1 representa a presença de um lado (a linha lateral representa as colunas representam as arestas)
  • Tabela de adjacência: primeiro atravesse a tabela de arestas do vértice correspondente, encontre todas as arestas com o vértice como o nó principal (aresta externa) e, em seguida, atravesse toda a tabela de adjacência para encontrar a aresta com o vértice como o nó final (na aresta)

3.InsertVertex (G, x)

InsertVertex(G,x) Insira o vértice x no gráfico G

Na verdade, sobre a inserção de um gráfico direcionado com vértices é semelhante a um gráfico não direcionado, aqui queremos inserir um vértice F

Grafo não direcionado : primeiro, precisamos inserir o vértice F na tabela de vértices. A tabela de vértices é uma matriz que não pode ser expandida. Portanto, precisamos criar uma nova matriz para inserir os vértices anteriores, adicionar o vértice F e, em seguida, precisamos para modificar a matriz de adjacência. Ainda precisamos expandir a matriz bidimensional (também criar uma matriz bidimensional para adicionar os valores antigos e novos). Aqui está apenas inserindo um vértice, e a relação de conexão não está determinada

Gráfico direcionado : Da mesma forma, criamos uma nova tabela de vértices, adicionamos o valor antigo e o novo valor e deixamos a tabela de borda vazia.

4.DeleteVertex (G, x)

DeleteVertex(G,x)Remova o vértice x do gráfico G

Excluir um vértice também precisa excluir todas as arestas relacionadas a esse vértice

  • Matriz de adjacência: Defina o valor do nó correspondente à tabela de vértices como vazio e defina a linha e coluna correspondentes ao vértice do array bidimensional da matriz como vazio, para que às vezes possamos usar o array reduzido para excluir o nó.
  • Tabela de adjacências: precisamos deletar o vértice correspondente à tabela de vértices e, em seguida, limpar a tabela de arestas correspondente à tabela de vértices

5.AddEdge (G, x, y)

AddEdge(G,x,y)Se a aresta não direcionada (x, y) ou a aresta direcionada <x, y> não existir, adicione a aresta ao gráfico G

Adicione uma borda ao gráfico não direcionado como acima

  • Matriz de adjacência: para adicionar uma aresta, precisamos modificar o valor da aresta na matriz para 1, por exemplo, para adicionar uma aresta AD, precisamos modificar A[0][3]=1eA[3][0]=1
  • Tabela de adjacências: para adicionar uma aresta, precisamos adicionar nós uns aos outros na tabela de arestas correspondente aos dois vértices.

6.RemoveEdge (G, x, y)

RemoveEdge (G, x, y) Se uma aresta não direcionada (x, y) ou uma aresta direcionada <x, y> existir, exclua a aresta no gráfico G

Gráfico não direcionado como acima, exclua uma aresta

  • Matriz de adjacência: para deletar uma aresta, você precisa modificar o valor da aresta para 0. Por exemplo, para deletar a aresta BC, precisamos modificar a A[1][2]=0somaA[2][1]=0
  • Lista de adjacências: para excluir uma aresta, você precisa excluir os nós um do outro na tabela de arestas correspondente aos dois vértices

7.XxxxVizinho (G, x)

FirstNeighbor(G,x)Encontre o primeiro ponto adjacente do vértice x no gráfico G e retorne o número do vértice, se houver. Se não houver um ponto adjacente ou se o gráfico não existir x, retorna -1

NextNeighbor(G,x) Assumindo que o vértice y no gráfico G é um ponto adjacente do vértice x, retorne o número do vértice do próximo ponto adjacente do vértice x exceto y, se y for o último ponto adjacente de x, retorne -1

Por exemplo, encontramos o vértice B

  • FirstNeighbor(G,x)Primeira adjacência
    • Matriz de adjacência: Procuramos na ordem da matriz de adjacência e procuramos a linha correspondente a B. Descobrimos que o primeiro ponto nesta linha com um valor diferente de 1 é seu primeiro ponto de adjacência A (ou seja, o número da coluna correspondente é menor e o valor é 1 nó)
    • Lista de adjacências: atravesse a lista de arestas dos vértices correspondentes, o primeiro nó é o primeiro nó adjacente
  • NextNeighbor(G,x) Próxima adjacência
    • Matriz de adjacência: da mesma forma, continuamos a procurar de acordo com a regra acima e descobrimos que o próximo valor de 1 é seu próximo ponto adjacente
    • Lista de adjacências: atravesse a lista de arestas dos vértices correspondentes, o próximo nó do primeiro nó é seu próximo ponto adjacente

8.Xxx_edge_value (G, x, y)

Sabemos que o gráfico quando a aresta tem um valor é chamado de rede.Para a rede, temos operações para obter e definir o peso da aresta.

Get_edge_value(G,x,y) Obtenha o peso v correspondente à aresta (x, y) ou <x, y> no gráfico G

Set_edge_value(G,x,y) Defina o peso v correspondente à aresta (x, y) ou <x, y> no gráfico G

  • Pegue o peso da borda
    • Matriz de adjacência: encontre diretamente o valor da matriz bidimensional correspondente à aresta é o peso da aresta
    • Tabela de adjacência: atravesse a matriz de adjacência para encontrar o peso armazenado do nó correspondente
  • Defina o peso da borda
    • Matriz de lista de adjacências: o mesmo
    • Lista de adjacências: a mesma

7. Rimuke

Conhecimento sobre a estrutura de dados, a conta oficial está sendo atualizada simultaneamente, bem-vindo a seguir

Acho que você gosta

Origin blog.csdn.net/qq_41941875/article/details/106793405
Recomendado
Clasificación