def search(graph, start_vertex):
    """
    Breadth first search algorithm
    
    :param graph: 
    :param start_vertex: 
    :return: 
    """
    if start_vertex not in graph or graph[start_vertex] is None or graph[
        start_vertex] == []:
        return None
    visited, queue = set(), [start_vertex]
    while queue:
        vertex = queue.pop(0)
        if vertex not in visited:
            visited.add(vertex)
            queue.extend(graph[vertex] - visited)
    return visited
