Exemplo n.º 1
0
def create_random_graph(num_nodes, num_edges):

    graph = Graph()

    edges = []

    # dont want i to point to ever itself, thus i + 1. Big O of n^2 aka (O(n*(n-1)
    for i in range(num_nodes):
        for j in range(i + 1, num_nodes):
            edges.append((i, j))

    # O(n)
    random.shuffle(edges)

    if num_edges > len(edges):
        print("WARNING: TOO MANY EDGES!")

    edges = edges[:num_edges]

    for i in range(num_nodes):
        graph.add_vertex(i)

    for edge in edges:
        print("RANDOM GRAPH EDGES:")
        print(edge)
        graph.add_edge(edge[0], edge[1])

    print(len(edges))

    bg = BokehGraph(graph)
    bg.draw()
Exemplo n.º 2
0
def get_default_graph():
    default_graph = Graph()

    default_graph.add_vertex(0)
    default_graph.add_vertex(1)
    default_graph.add_vertex(2)
    default_graph.add_vertex(3)
    default_graph.add_vertex(4)
    default_graph.add_vertex(5)
    default_graph.add_vertex(6)
    default_graph.add_vertex(7)
    default_graph.add_vertex(8)
    default_graph.add_vertex(9)
    default_graph.add_vertex(10)
    default_graph.add_vertex(11)

    default_graph.add_edge(0, 1, False)
    default_graph.add_edge(0, 3, False)
    default_graph.add_edge(1, 2, False)
    default_graph.add_edge(2, 4, False)
    default_graph.add_edge(4, 9, False)
    default_graph.add_edge(2, 4, False)
    default_graph.add_edge(3, 6, False)
    default_graph.add_edge(7, 8, False)

    default_graph.get_all_connected()
    #print(default_graph.breath_first(0, 7))
    # default_graph.breath_first(0, 9)

    drawn_tree = BokehGraph(default_graph)

    drawn_tree.draw_graph()
Exemplo n.º 3
0
def createRandomGraph(numNodes, numEdges):
    print(f"numNodes: {numNodes}")
    graph = Graph()  # Instantiate your graph

    all_edges = []

    for i in range(numNodes):
        for j in range(i + 1, numNodes):
            all_edges.append((i, j))

    random.shuffle(all_edges)
    edges = all_edges[:numEdges]

    if numEdges > len(all_edges):
        print("Too many edges")

    for edge in edges:
        print(f"edge: {edge}")

    for i in range(numNodes):
        graph.add_vertex(i)

    for edge in edges:
        graph.add_edge(edge[0], edge[1])

    print(f"length: {len(all_edges)}")

    bg = BokehGraph(graph)
    bg.draw()
Exemplo n.º 4
0
def createRandomGraph(numNodes, numEdges):
    graph = Graph()

    all_edges = []

    for i in range(numNodes):
        for j in range(i + 1, numNodes):
            all_edges.append((i, j))

    random.shuffle(all_edges)

    edges = all_edges[:numEdges]

    if numEdges > len(all_edges):
        print("Too many edges")

    for edge in edges:
        print(edge)

    for i in range(numNodes):
        graph.add_vertex(i)

    for edge in edges:
        graph.add_edge(edge[0], edge[1])

    print(len(edges))
    print(graph.vertices)

    bg = BokehGraph(graph)
    bg.graph.depth_first_search(3)
    bg.graph.breadth_first_search(3)
    bg.draw()
Exemplo n.º 5
0
def createRandomGraph(numNodes, numEdges):
    graph=Graph()
    
    all_edges=[]

    for i in range(numNodes):
        for j in range(i + 1, numNodes):
            all_edges.append( (i,  j) )
    
    
    random.shuffle(all_edges)
    
    edges=all_edges[:numEdges]

    for i in range(numNodes):
        graph.add_vertex(i)
   
    
    for edge in edges:
        #print(edge)
        graph.add_directed_edge(edge[0], edge[1])


    g1 = BokehGraph(graph)
    g1.show()
Exemplo n.º 6
0
def createRandomGraph(numVertices, numEdges):
    graph = Graph() #instantiate the graph

    all_edges = []
    # for each of the nodes, it is possible to connect to each of the other nodes except for itself
    for i in range(numVertices):
        for j in range(i+1, numVertices): # start at i+1 because the vertex is not connected to itself
            all_edges.append( (i, j) )
 
    random.shuffle(all_edges) # shuffle the array of edges
    edges = all_edges[:numEdges]

    if numEdges > len(all_edges): 
        print("warning:  Too many edges")

    for edge in edges:
        print(edge) # print all of the connections

    for i in range(numVertices):
        graph.add_vertex(i)
    
    for edge in edges:
        print(edge)
        graph.add_edge(edge[0], edge[1])

    print(len(edges))

    bg = BokehGraph(graph)
    bg.display()    
Exemplo n.º 7
0
def main(**kwargs):
    number_vertices = kwargs['num_verts']
    connected = kwargs['connected']
    number_edges = kwargs['num_edges']
    style = kwargs['style']
    if style == 'default':
        graph = default_graph()
    else:
        if number_vertices < 0 or number_edges < 0:
            raise ValueError("number must be greater than zero")
        elif number_edges > number_vertices * (number_vertices - 1) / 2:
            raise ValueError("max number of edges exceeded")
        graph = Graph()
        g = [graph.add_vertex(x) for x in range(number_vertices)]

        unique_edges = set()

        while (len(unique_edges) < number_edges):
            v1 = randint(0, number_vertices - 1)
            v2 = randint(0, number_vertices - 1)
            if v1 == v2:
                continue
            if (v2, v1) not in unique_edges:
                unique_edges.add((v1, v2))
                graph.add_edge(v1, v2)
        print('number of unique edges', len(unique_edges))

    # graph.bft(3)
    boka = BokehGraph(graph)
    if connected:
        color_connected(graph)
    boka.show()
Exemplo n.º 8
0
def createDefaultGraph():
    graph=Graph()
    graph.add_vertex('0')
    graph.add_vertex('1')
    graph.add_vertex('2')
    graph.add_vertex('3')
    graph.add_vertex('4')
    graph.add_vertex('5')
    graph.add_vertex('6')
    graph.add_vertex('7')
    graph.add_vertex('8')
    graph.add_undirected_edge('0', '1')
    graph.add_undirected_edge('0', '3')
    graph.add_directed_edge('1', '2')
    graph.add_directed_edge('1', '4')
    graph.add_directed_edge('2', '5')
    graph.add_directed_edge('2', '6')
    graph.breadth_first_search('0')
    graph.depth_first_search('0')
    graph.dfs_search_value('0','1')
    #graph.dfs_search_value('0','11')
    #graph.add_directed_edge('7','4')
    #graph.add_directed_edge('7','4')
    g1 = BokehGraph(graph)
    g1.show()
Exemplo n.º 9
0
def createRandomGraph(numNodes, numEdges):
    graph = Graph()  #instantiate a graph

    all_edges = []
    # Big O(n^2)
    for i in range(numNodes):
        for j in range(i + 1, numNodes):
            all_edges.append((i, j))
# O(n)
    random.shuffle(all_edges)

    edges = all_edges[:numEdges]

    if numEdges > len(all_edges):
        print("Warning: Too many edges")
#O(n)
    for edge in edges:
        print(edge)

    # naive_edges = []
    # for i in range(numEdges):
    # naive_edges.append((random.randint(0, numNodes-1), random.randint(0, numNodes-1)))

#O(n)
    for i in range(numNodes):
        graph.add_vertex(i)


#O(n)
    for edge in edges:
        graph.add_edge(edge[0], edge[1])

    bg = BokehGraph(graph)
    bg.draw()
Exemplo n.º 10
0
def createRandomGraph(numNodes, numEdges):
    graph = Graph()  # Instantiate your graph

    all_edges = []

    # O(n^2)
    for i in range(numNodes):
        for j in range(i + 1, numNodes):
            all_edges.append((i, j))

    # O(n)
    random.shuffle(all_edges)
    edges = all_edges[:numEdges]

    # O(1)
    if numEdges > len(all_edges):
        print("Warning: Too many edges")

    # O(n)
    for edge in edges:
        print(edge)

    # O(n)
    for i in range(numNodes):
        graph.add_vertex(i)

    # O(n)
    for edge in edges:
        print(edge)
        graph.add_edge(edge[0], edge[1])

    print(len(edges))

    bg = BokehGraph(graph)
    bg.draw()
Exemplo n.º 11
0
def main(**kwargs):
    style = kwargs["style"]
    numVerts = kwargs["num_verts"]
    numEdges = kwargs["num_edges"]

    if style == "default":
        graph = getDefaultGraph()
    elif style == "random":
        graph = getRandomGraph(numVerts, numEdges)
    elif style == 'awesome':
        graph = getGraph('awesome')
    elif style == 'radiohead':
        graph = getGraph('radiohead')
    elif style == 'bender':
        graph = getGraph('bender')
    elif style == 'lambda_logo':
        graph = getGraph('lambda_logo')
    elif style == 'connected':
        graph = getRandomGraph(numVerts, numEdges, 'connected')
    else:
        graph = getDefaultGraph()

    bokeh_graph = BokehGraph(graph)

    bokeh_graph.show()
Exemplo n.º 12
0
def createRandomGraph(num_nodes, num_edges):
    graph = Graph()

    all_edges = []

    for i in range(num_nodes):
        for j in range(i + 1, num_nodes):
            all_edges.append((i, j))

    random.shuffle(all_edges)
    edges = all_edges[:num_edges]

    if num_edges > len(all_edges):
        print('Warning: max edges reached')
    
    # for edge in edges:
    #     print(edge)

    for i in range(num_nodes):
        graph.add_vertex(i)

    for edge in edges:
        # print(edge)
        graph.add_edge(edge[0], edge[1])

    # print(len(edges))
    print(graph.vertices)

    bg = BokehGraph(graph)
    # bg.graph.dft_st(random.randint(0, num_nodes -1))
    # bg.graph.bft(random.randint(0, num_nodes -1), 'green')
    bg.graph.connected()
    bg.draw()
Exemplo n.º 13
0
def createDefaultGraph():
    graph = Graph()  # Instantiate your graph
    # graph.add_vertex('0')
    # graph.add_vertex('1')
    # graph.add_vertex('2')
    # graph.add_vertex('3')
    # graph.add_vertex('4')
    # graph.add_vertex('5')
    # graph.add_vertex('6')
    # graph.add_edge('0', '1')
    # graph.add_edge('2', '3')
    # graph.add_edge('2', '4')
    # graph.add_edge('3', '5')
    # graph.add_edge('5', '6')

    graph.add_vertex(5)
    graph.add_vertex(2)
    graph.add_vertex(6)
    graph.add_vertex(1)
    graph.add_vertex(4)
    graph.add_vertex(7)
    graph.add_vertex(3)
    graph.add_edge(5, 2)
    graph.add_edge(5, 6)
    graph.add_edge(2, 1)
    graph.add_edge(2, 4)
    graph.add_edge(4, 3)
    graph.add_edge(6, 7)

    print(graph.dfs_path(5, 7))

    bg = BokehGraph(graph)
    #  print(graph.bfs(5))
    bg.draw()
Exemplo n.º 14
0
def main():
    graph = Graph()  # Instantiate your graph
    graph.add_vertex(0)
    graph.add_vertex(1)
    graph.add_vertex(2)
    graph.add_vertex(3)
    graph.add_vertex(4)
    graph.add_vertex(5)
    graph.add_vertex(6)
    graph.add_vertex(7)
    graph.add_vertex(8)
    graph.add_vertex(9)
    graph.add_edge(0, 1)
    graph.add_edge(0, 3)

    graph.add_edge(1, 2)
    graph.add_edge(2, 5)
    graph.add_edge(2, 4)
    graph.add_edge(4, 9)
    graph.add_edge(3, 7)
    graph.add_edge(3, 6)

    bokeh_graph = BokehGraph(graph)

    bokeh_graph.draw()
Exemplo n.º 15
0
def main(argv):
    if argv and argv[0]:
        num_vert = int(argv[0])
    else:
        num_vert = math.floor(random.random() * 10 + 3)
    if argv and argv[1]:
        num_edges = int(argv[1])
    else:
        num_edges = math.floor(random.random() * (num_vert * (num_vert - 1)))

    graph = Graph()

    id = 0
    while len(graph.vertices) < num_vert:
        graph.add_vertex(id)
        id += 1
    cnt = 0
    while cnt < num_edges:
        v1 = math.floor(random.random() * num_vert)
        v2 = math.floor(random.random() * num_vert)
        if v1 is not v2:
            graph.add_edge(v1, v2)
            cnt += 1

    bg = BokehGraph(graph)
    bg.draw(True)
Exemplo n.º 16
0
def main(num_vertices=8, num_edges=4):
    """Build and show random graph."""
    graph = Graph()

    graph.random_graph(num_vertices, num_edges)
    graph.get_connected_components()
    bokeh_graph = BokehGraph(graph)
    bokeh_graph.show()
Exemplo n.º 17
0
def main(num_vertices=None, num_edges=None):
    """Build and show random graph."""
    graph = Graph()
    graph.add_random_data(num_vertices, num_edges)

    bokeh_graph = BokehGraph(graph)
    bokeh_graph.show()
    print('MAIN CONNECTED COMPONENTS', graph.connected_components)
Exemplo n.º 18
0
def main(**kwargs):
    if style == 'default':
        graph = getDefaultGraph()
    elif style == 'random':
        graph = getRandomGraph()
    else:
        graph = getDefaultGraph()
    bokeh_graph = BokehGraph(graph)
    bokeh_graph.draw()
Exemplo n.º 19
0
def main(num_vertices=8, num_edges=8, test=0):
    graph = Graph()

    if test == 1:
        graph.add_vertex('A')
        graph.add_vertex('B')
        graph.add_vertex('C')
        graph.add_vertex('D')
        graph.add_vertex('E')
        graph.add_vertex('F')
        graph.add_vertex('G')

        graph.add_edge('A', 'B')
        # graph.add_edge('A', 'D')
        # graph.add_edge('A', 'C')
        graph.add_edge('B', 'D')
        graph.add_edge('D', 'G')
        # graph.add_edge('G', 'F')
        graph.add_edge('E', 'F')

        # print (graph.vertices)
        # print (graph.search())

    if test == 2:
        graph.add_vertex('0')
        graph.add_vertex('1')
        graph.add_vertex('2')
        graph.add_vertex('3')
        graph.add_vertex('4')
        graph.add_vertex('5')
        graph.add_vertex('6')

        graph.add_edge('0', '1')
        graph.add_edge('0', '2')
        graph.add_edge('1', '3')
        graph.add_edge('1', '4')
        graph.add_edge('2', '5')
        graph.add_edge('2', '6')

    else:
        for num in range(num_vertices):
            graph.add_vertex(str(num))

        verts = []
        for _ in range(num_edges):
            vertices = sample(graph.vertices.keys(), 2)
            while vertices in verts:
                vertices = sample(graph.vertices.keys(), 2)
            graph.add_edge(str(vertices[0]), str(vertices[1]))
            verts.append(vertices)
            verts.append(vertices[::-1])

        # print (graph.vertices)
        # print (graph.search())

    bg = BokehGraph(graph)
    bg.show()
Exemplo n.º 20
0
def main():
    graph = Graph()

    # graph.debug_create_test_data()
    graph.create_vertices_and_edges(10)
    graph.get_connected_components()
    bg = BokehGraph(graph)
    # render the graph on the screen
    bg.show()
Exemplo n.º 21
0
def createDefaultGraph():
    graph = Graph()  # Instantiate your graph
    for i in range(5):
        graph.add_vertex(str(i))
    graph.add_edge('0', '1')
    graph.add_edge('0', '3')
    graph.add_edge('2', '4')

    bg = BokehGraph(graph)
    bg.draw()
Exemplo n.º 22
0
def main():
    graph = Graph()
    v1 = Vertex("A")
    v2 = Vertex("B")

    graph.add_vertex(v1)
    graph.add_vertex(v2)
    graph.add_edge(v1, v2, True)

    bokeh = BokehGraph(graph)
    bokeh.show()
Exemplo n.º 23
0
def main(num_vertices=2, num_edges=2, draw_components=True):
    graph = Graph()
    for num in range(num_vertices):
        graph.add_vertex(Vertex(label=str(num)))

    for _ in range(num_edges):
        vertices = sample(graph.vertices.keys(), 2)
        graph.add_edge(vertices[0], vertices[1])
    # graph.get_connected_components()
    bg = BokehGraph(graph, draw_components=draw_components)
    bg.show()
Exemplo n.º 24
0
def createDefaultGraph():
    graph = Graph()  # Instantiate your graph
    graph.add_vertex('0')
    graph.add_vertex('1')
    graph.add_vertex('2')
    graph.add_vertex('3')
    graph.add_edge('0', '1')
    graph.add_edge('0', '3')

    bg = BokehGraph(graph)
    bg.draw()
Exemplo n.º 25
0
def main(height=25, width=25, nodes=6, connections=6):
    new_graph = Graph(height, width)
    for x in range(nodes):
        new_graph.add_vertex(x)
    for _ in range(connections):
        node_1 = choice(list(new_graph.vertices.keys()))
        node_2 = choice(list(new_graph.vertices.keys()))
        if node_1 is not node_2:
            new_graph.add_edge(node_1, node_2)
    bokeh = BokehGraph(new_graph, height, width)
    bokeh.make_graph()
Exemplo n.º 26
0
def main(num_vertices=0, num_edges=0, draw_components=True):
    graph = Graph()
    for number in range(num_vertices):
        graph.add_vertex()

    for _ in range(num_edges):
        verticles = sample(graph.vertices.keys(), 2)
        graph.add_edge(vertices[0], vertices[1])

    bokeh_graph = BokehGraph(graph, draw_components=draw_components)
    bokeh_graph.show()
Exemplo n.º 27
0
def main(vertices=7, edges=7):
    graph = Graph()
    for vertex in range(vertices):
        graph.add_vertex(str(vertex))

    for _ in range(edges):
        vertices = sample(graph.vertices.keys(), 2)
        graph.add_edge(vertices[0], vertices[1])

    bokeh_graph = BokehGraph(graph)
    bokeh_graph.show()
Exemplo n.º 28
0
def main(num_vertices=8, num_edges=8):
    graph = Graph()

    for num in range(num_vertices):
        graph.add_vertex(str(num))
    
    for _ in range(num_edges):
        vertices = sample(graph.vertices.keys(), 2)
        graph.add_edge(vertices[0], vertices[1])

    bokeh_graph = BokehGraph(graph)
    bokeh_graph.show()
Exemplo n.º 29
0
def main(v, e):
    graph = Graph()
    for i in range(v):
        graph.add_vertex(i)
    for j in range(e):
        random_vertex = int(random.random() * v)
        random_edge = int(random.random() * e)
        print(random_vertex, random_edge)
        graph.add_edge(random_vertex, random_edge)
    print(graph.vertices)
    bg = BokehGraph(graph)
    bg.show()
Exemplo n.º 30
0
def main(num_vertices=8, num_edges=8, draw_components=True):
    graph = Graph()

    for num in range(num_vertices):
        graph.add_vertex(Vertex(label=str(num)))

    for _ in range(num_edges):
        vertices = sample(graph.vertices.keys(), 2)
        graph.add_edge(vertices[0], vertices[1])

    bokeh_graph = BokehGraph(grahp, draw_components=draw_components)
    bokeh_graph.show()