Grafo Base
Esse é o grafo que todos os outros grafos vão herdar suas características/métodos.
Esse grafo não possui nenhum tipo de restrição. Pois todos os outros grafos irão sobrescrever os métodos necessários para aplicar suas restrições.
Importar:
from py_graph_t import Graph
Métodos:
Método | Parâmetros | O que faz ? | Retorno |
---|---|---|---|
add_vertex | value | Método que adiciona um vértice ao grafo. | SimpleVertex adicionado |
delete_vertex | value | Método que remove um vertice do grafo e consequentemente todas as arestas conectadas ao vertice. | SimpleVertex removido |
add_edge | value_a, value_b, name(opcional) | Método que adiciona uma aresta ao grafo. | SimpleEdge adicionado. |
delete_edge | value_a, value_b | Método que remove uma aresta do grafo. | SimpleEdge removido. |
show_edge | value_a, value_b | Método que retorna uma aresta entre dois vértices, se ela existe. | SimpleEdge. |
is_terminal | edge, value | Método que verifica se um dado vértice é terminal de uma dada aresta. | Boolean |
num_vertex | — | Método que retorna o número de vértices no grafo. | Integer |
num_edges | — | Método que retorna o número de arestas no grafo. | Integer |
vertex_exists | value | Método que indica se um determinado vértice pertence ao Grafo. | Boolean |
edge_exists | value_a, value_b | Método que indica se uma determinada aresta pertence ao Grafo. | Boolean |
vertex_neighbors | value | Método que encontra vertices vizinhos do vertice de entrada. | List |
vertex_degree | value | Método que retorna o grau do vértice de entrada. | Integer |
is_vertices_adjacents | value_a, value_b | Método que indica se os vértices de entrada são adjacentes. | Boolean |
get_all_vertex | — | Método que retorna uma lista com os vértices do grafo. | List |
list_graph_vertices | — | Método que retorna lista com todos os identificadores dos vértices do grafo. | List |
list_graph_edges | — | Método que retorna lista com todos os nomes as arestas do grafo. | List |
cycle | v, visited, parent | Método que verifica se tem ciclo no subgrafo a partir do vértice v. | Boolean |
has_cycle | — | Método que verifica se o grafo possui um ciclo. Loops também são detectados. | Boolean |
has_loop | — | Método que verifica se o grafo possui um loop. | Boolean |
check_regular_graph | — | Método que verifica a regularidade de um grafo. | Boolean |
incidence_list | — | Método que retorna uma lista de objetos que contem a incidencia dos vertices com as arestas. | List |
adjacency_matrix | — | Método que retorna a representação em forma de matriz de adjacência do grafo. | Dict |
__str__ |
— | Método que retorna a representação textual do grafo. | String |
Exemplos de uso:
Não faz muito sentido ter um grafo como esse, ele existe na biblioteca apenas para servir para reuso.
Adicionar um vértice
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
grafo.add_vertex("c")
Deletar um vértice
grafo = Graph()
grafo.delete_vertex("a")
grafo.delete_vertex("b")
grafo.delete_vertex("c")
Adicionar uma aresta
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
grafo.add_edge("a", "b", name="Aresta AB")
grafo.add_edge("b", "a", name="Aresta BA")
grafo.add_edge("a", "a", name="Aresta AA")
Deletar uma aresta
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
grafo.add_edge("a", "b", name="Aresta AB")
grafo.add_edge("b", "a", name="Aresta BA")
grafo.add_edge("a", "a", name="Aresta AA")
grafo.delete_edge("a", "a")
Visualizar aresta
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
grafo.add_edge("a", "b", name="Aresta AB")
grafo.add_edge("b", "a", name="Aresta BA")
grafo.add_edge("a", "a", name="Aresta AA")
print(grafo.show_edge("a", "b"))
Verificar se um vértice é terminal de uma aresta
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
grafo.add_edge("a", "b", name="Aresta AB")
grafo.add_edge("b", "a", name="Aresta BA")
grafo.add_edge("a", "a", name="Aresta AA")
edge = grafo.show_edge("a", "b")
grafo.is_terminal(edge, "b")
grafo.is_terminal(edge, "a")
Número de vértices
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
print(grafo.num_vertex())
Número de arestas
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
grafo.add_edge("a", "b", name="Aresta AB")
grafo.add_edge("b", "a", name="Aresta BA")
print(grafo.num_edges())
Verifica se um vértice existe
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
print(grafo.vertex_exists("a"))
Verifica se uma aresta existe
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
grafo.add_edge("a", "b", name="Aresta AB")
print(grafo.edge_exists("a", "b"))
Vizinhos de um vértice
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
grafo.add_edge("a", "b", name="Aresta AB")
grafo.add_edge("b", "a", name="Aresta BA")
print(grafo.vertex_neighbors("a"))
Grau do vértice
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
grafo.add_edge("a", "b", name="Aresta AB")
grafo.add_edge("b", "a", name="Aresta BA")
print(grafo.vertex_degree("a"))
Verifica se os vértices são adjacentes
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
grafo.add_edge("a", "b", name="Aresta AB")
grafo.add_edge("b", "a", name="Aresta BA")
print(grafo.is_vertices_adjacents("a", "b"))
Lista dos vértices do grafo
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
print(grafo.get_all_vertex())
Lista com todos os identificadores dos vértices
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
print(grafo.list_graph_vertices())
Lista com os nomes das arestas
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
print(grafo.get_all_vertex())
grafo.add_edge("a", "b", name="Aresta AB")
grafo.add_edge("b", "a", name="Aresta BA")
print(grafo.list_graph_edges())
Verifica se um grafo possui ciclos, loops também são detectados
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
grafo.add_edge("a", "b", name="Aresta AB")
grafo.add_edge("b", "a", name="Aresta BA")
print(grafo.has_cycle())
Verifica se um grafo possui um loop
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
grafo.add_edge("a", "b", name="Aresta AB")
grafo.add_edge("b", "a", name="Aresta BA")
print(grafo.has_loop())
Verifica a regularidade de um grafo
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
grafo.add_edge("a", "b", name="Aresta AB")
grafo.add_edge("b", "a", name="Aresta BA")
print(grafo.check_regular_graph())
Incidência de um grafo
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
grafo.add_edge("a", "b", name="Aresta AB")
grafo.add_edge("b", "a", name="Aresta BA")
print(grafo.incidence_list())
Adjacência de um grafo
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
grafo.add_edge("a", "b", name="Aresta AB")
grafo.add_edge("b", "a", name="Aresta BA")
print(grafo.adjacency_matrix())
Representação textual
grafo = Graph()
grafo.add_vertex("a")
grafo.add_vertex("b")
grafo.add_edge("a", "b", name="Aresta AB")
grafo.add_edge("b", "a", name="Aresta BA")
print(grafo.__str__())