Example #1
0
def bfs(G, start):
    state = {}
    parentList = {}
    order = []
    # print "bfs started -- start :", start.name
    for vert in G:
        state[vert.name] = "undiscovered"
        parentList[vert.name] = None
    state[start.name] = "discovered"
    Q = Queue()
    Q.enqueue(start)
    while Q.isEmpty() == False:
        u = Q.dequeue()
        order.append(u.name)
        # print "Dequeued vertex", u.name
        # print "vertex adjs "
        # for v in u.connectedTo:
        #    print v.name,
        # print ""
        for v in u.connectedTo:
            if state[v.name] == "undiscovered":
                state[v.name] == "discovered"
                parentList[v.name] = u.name
                vert_v = G.getVertex(v.name)
                if Q.contains(vert_v) == False:
                    Q.enqueue(vert_v)
                    # print "Enqueued new", v.name
        state[u.name] = "processed"
    return order
def test_enqueue():
    queue = Queue(2)
    queue.enqueue(12)
    queue.enqueue(5)
    assert(queue.contains(12))
    assert(queue.contains(5))