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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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)
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()
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)
def main(**kwargs): if style == 'default': graph = getDefaultGraph() elif style == 'random': graph = getRandomGraph() else: graph = getDefaultGraph() bokeh_graph = BokehGraph(graph) bokeh_graph.draw()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()