28 Mayıs 2018 Pazartesi

Graph

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