コード例 #1
0
def init_graph_mfriend(k):

    jfile = mfriend(k)
    vertices = [Vertex(j.name) for j in jfile]

    edges = []

    for j in jfile:
        for u in vertices:
            if j.name == u.name:
                for f in j.friend_list:
                    for v in vertices:
                        if v.name == f:
                            uv = Edge((u, v), directed=False)
                            edges.append(uv)
                            for e in edges:
                                if (uv.source.name, uv.target.name) == (
                                        e.source.name, e.target.name) or (
                                            uv.target.name,
                                            uv.source.name) == (e.source.name,
                                                                e.target.name):
                                    pass

    graph = Graph()
    init_graph(graph, vertices, edges)

    return graph
コード例 #2
0
def add_edge(vertices, canvas, graph):
    """
    Adds connection between vertices after dragging by left button on mouse

    Creates Edge object, saves it to Graph and draws it
    Returns (ID of new edge, new Edge object)
    Parameters:
        vertices - tuple of Vertex class instances to be connected
        canvas - tkinter.Canvas object
        graph - instance of Graph class
    """
    vertex1, vertex2 = vertices
    if vertex1 is not None and vertex2 is not None:
        edge = Edge((vertex1, vertex2), graph=graph)
        graph = graph + edge
        graph.set_focus(edge)
        index = draw_edge(canvas, edge)
        return index, edge
    else:
        return None
コード例 #3
0
def init_graph_toy_clique_problem():

    name = 'abcdef'
    vertices = [Vertex(n) for n in name]

    e1 = Edge((vertices[0], vertices[1]), directed=False)
    e2 = Edge((vertices[1], vertices[2]), directed=False)
    e3 = Edge((vertices[2], vertices[3]), directed=False)
    e4 = Edge((vertices[3], vertices[0]), directed=False)
    e5 = Edge((vertices[0], vertices[4]), directed=False)
    e6 = Edge((vertices[4], vertices[5]), directed=False)
    e7 = Edge((vertices[5], vertices[0]), directed=False)

    graph = Graph()

    edges = [e1, e2, e3, e4, e5, e6, e7]

    init_graph(graph, vertices, edges)

    return graph
コード例 #4
0
def init_graph_johnson():
    w = Vertex('w')
    x = Vertex('x')
    y = Vertex('y')
    z = Vertex('z')

    e1 = Edge((w, z), weight=2)
    e2 = Edge((z, x), weight=-7)
    e3 = Edge((x, w), weight=6)
    e4 = Edge((x, y), weight=3)
    e5 = Edge((y, z), weight=5)
    e6 = Edge((z, y), weight=-3)
    e7 = Edge((y, w), weight=4)

    graph = Graph()
    vertices = [w, x, y, z]
    edges = [e1, e2, e3, e4, e5, e6, e7]

    init_graph(graph, vertices, edges)

    return graph
コード例 #5
0
 def setUp(self):
     self.node1 = Node('node_one')
     self.node2 = Node('node_two')
     self.edge = Edge(self.node1, self.node2)
コード例 #6
0
"""Exercise 2: Get all unique nodes using a Graph class (2 way Digraph Class)

The below code is set to test our understanding of what is a unique node, knowing that the 
Graph class sets to Edge classes in a two way fashion (bi-directional).

Run the following code by running the file with `python exercise_2_graphs.py`
"""

from graph_class import Node, Graph, Edge

nodes = []
nodes.append(Node("ABC"))  # nodes[0]
nodes.append(Node("ACB"))  # nodes[1]
nodes.append(Node("BAC"))  # nodes[2]
nodes.append(Node("BCA"))  # nodes[3]
nodes.append(Node("CAB"))  # nodes[4]
nodes.append(Node("CBA"))  # nodes[5]

g = Graph()
for n in nodes:
    g.addNode(n)

g.addEdge(Edge(g.getNode('ABC'), g.getNode('ACB')))
g.addEdge(Edge(g.getNode('ABC'), g.getNode('BAC')))
g.addEdge(Edge(g.getNode('ACB'), g.getNode('CAB')))
g.addEdge(Edge(g.getNode('BAC'), g.getNode('BCA')))
g.addEdge(Edge(g.getNode('BCA'), g.getNode('CBA')))
g.addEdge(Edge(g.getNode('CAB'), g.getNode('CBA')))

if __name__ == "__main__":
    print(g)