Checks if the assigned dependencies are valid
            valid dependency graphs are:

            - noncyclic (i.e. no `A -> B -> ... -> A`)
            - Contain no undefined dependencies
              (dependencies referencing undefined tasks)

def verify_valid_dependencies(self):
        """ Checks if the assigned dependencies are valid
            valid dependency graphs are:

            - noncyclic (i.e. no `A -> B -> ... -> A`)
            - Contain no undefined dependencies
              (dependencies referencing undefined tasks)
        """

        unobserved_dependencies = set(self.tasks.keys())
        target_queue = []

        while len(unobserved_dependencies) > 0:
            target_queue = [unobserved_dependencies.pop()]

            while target_queue is not []:
                target_queue += unobserved_dependencies