コード例 #1
0
ファイル: DirectedGraph.py プロジェクト: skiny-xs/algs4
def main():

    g1 = Graph("""
    A:  F E 
    B:  A C G F 
    C:  G 
    D:  C 
    E:  F 
    F:  G 
    G:  H 
    H:  C D 
        """)
    BreathFirstSearch(g1, "A")

    g2 = Graph("""
    A:  E F 
    B:  A C G F 
    C:  G D H 
    D:  H 
    E:  
    F:  G E 
    G:  H 
    H:  
        """)
    TopologicalSort(g2, "A")
コード例 #2
0
ファイル: Main.py プロジェクト: dorismoisuc/GRAPH-ALGORITHMS
def load_from_file(file):
    f = open(file, "r")

    line = f.readline().strip().split()
    vertices = int(line[0])
    edges = int(line[1])
    graph = Graph(vertices)
    for x in range(edges):
        line = f.readline().strip().split()
        x = int(line[0])
        y = int(line[1])
        z = int(line[2])
        graph.add_edge(x, y, z)
    return graph
コード例 #3
0
ファイル: Main.py プロジェクト: dorismoisuc/GRAPH-ALGORITHMS
def random_graph(number_of_vertices, number_of_edges):
    minimum = input("Minimum cost: ")
    minimum = validate_vertex(minimum)
    maximum = input("Maximum cost: ")
    maximum = validate_vertex(maximum)

    if number_of_edges > number_of_vertices * number_of_vertices:
        raise exceptionGraph("The nr of edges must be < than nrVertices^2")

    graph = Graph(number_of_vertices)
    for vertex in range(number_of_edges):
        cost = random.randint(minimum, maximum)
        vertex1 = random.randrange(0, number_of_vertices)
        vertex2 = random.randrange(0, number_of_vertices)
        while graph.is_edge(vertex1, vertex2) or vertex1 == vertex2:
            vertex1 = random.randrange(0, number_of_vertices)
            vertex2 = random.randrange(0, number_of_vertices)
        graph.add_edge(vertex1, vertex2, cost)

    return graph
コード例 #4
0
def create_graph(initialGraph, validVertices):
    result_graph = Graph(0)
    for vertex in validVertices:
        result_graph.add_vertex(vertex)
    for vertex in validVertices:
        for neighbour in initialGraph.parse_neighbours(vertex):
            if not result_graph.is_edge(vertex, neighbour):
                result_graph.add_edge(vertex, neighbour,
                                      initialGraph.get_cost(vertex, neighbour))
    return result_graph
コード例 #5
0
ファイル: Main.py プロジェクト: dorismoisuc/GRAPH-ALGORITHMS
def read_file(file):
    try:
        f = open(file, 'r')
    except exceptionGraph:
        raise exceptionGraph("The file is not available")
    firstLine = f.readline().strip().split()
    graph = Graph(0)
    number_of_vertices = int(firstLine[0])

    line = f.readline()
    while line != "":
        edge = line.strip().split()
        vertex1 = int(edge[0])
        vertex2 = int(edge[1])
        if vertex1 not in graph.parse_vertices():
            graph.add_vertex(vertex1)
        if vertex2 not in graph.parse_vertices() and vertex2 != -1:
            graph.add_vertex(vertex2)
        if len(edge) == 3 and vertex1 != vertex2 and not graph.is_edge(
                vertex1, vertex2):
            graph.add_edge(vertex1, vertex2, int(edge[2]))

        line = f.readline()

    if number_of_vertices != graph.get_nr_of_vertices():
        for vertex in range(number_of_vertices):
            if vertex not in graph.parse_vertices():
                graph.add_vertex(vertex)

    f.close()
    return graph