def BreadthWidthSearch(visibilityGraph, vrtx1, vrtx2):
    #Initialize the path
    path = Path()
    #Initialize the queue
    queue = Queue()
    #Add the starting vertex to the queue
    queue.Enqueue(vrtx1)
    #mark as visited
    visitedVrtcs = [vrtx1]

    #while the queue is not empty run until empty
    while (len(queue.GetQueue()) != 0):
        vrtx = queue.Dequeue()
        neighbor = visibilityGraph.GetVertexEdges(vrtx)
        for nxtVrtx in neighbor:
            #if the neighbor vertex has not been visited
            if ((visitedVrtcs.count(nxtVrtx) == 0)):
                #queue the next vertex
                queue.Enqueue(nxtVrtx)
                #mark as visited
                visitedVrtcs.append(nxtVrtx)

                path.AddToPath(vrtx, nxtVrtx)

    path.GetPaths()
    return path