Uygulama Konusu: Python üzerinde graph yapısı tanımlanmıştır. Bu yapı üzerinde bulunun özellikler olan köşeler ve kenarlar için yeni eklemeler yapan vegraph'ın son halini gösteren fonksiyonlar kullanılmıştır.
class Graph(object):
def __init__(self, graph_dict=None):
if graph_dict == None:
graph_dict = {}
self.__graph_dict = graph_dict
def vertices(self): #graph ın köşelerini döndürür
return list(self.__graph_dict.keys())
def edges(self): # graph ın kenarlarını dönürür
return self.__generate_edges()
def add_vertex(self, vertex): #tepe noktası ekler
if vertex not in self.__graph_dict:
self.__graph_dict[vertex] = []
def add_edge(self, edge): #kenar ekleme
edge = set(edge)
(vertex1, vertex2) = tuple(edge)
if vertex1 in self.__graph_dict:
self.__graph_dict[vertex1].append(vertex2)
else:
self.__graph_dict[vertex1] = [vertex2]
def __generate_edges(self):
edges = []
for vertex in self.__graph_dict:
for neighbour in self.__graph_dict[vertex]:
if {neighbour, vertex} not in edges:
edges.append({vertex, neighbour})
return edges
def __str__(self):
res = "vertices: "
for k in self.__graph_dict:
res += str(k) + " "
res += "\nedges: "
for edge in self.__generate_edges():
res += str(edge) + " "
return res
g = { "a" : ["d"],
"b" : ["c"],
"c" : ["b", "c", "d", "e"],
"d" : ["a", "c"],
"e" : ["c"],
"f" : [] }
graph = Graph(g)
print("köşeler:", graph.vertices())
print("kenarlar:", graph.edges())
print("tepe ekle:")
graph.add_vertex("z")
print("yeni köşeler:", graph.vertices())
print("kenar ekle:")
graph.add_edge({"a","z"})
print("köşeler:", graph.vertices())
print("kenarlar:", graph.edges())
print('Köşe olarak "y" ekler, kenarları olarak "x,y" ekler:')
graph.add_edge({"x","y"})
print("köşeler:", graph.vertices())
print("kenarlar:", graph.edges())
Hiç yorum yok:
Yorum Gönder