def dpll_algorithm(clauses, assignment):
    """
    
    Example:
    >>> clauses = [['A', '¬B'], ['¬A', 'B'], ['¬A']]
    >>> assignment = {}
    >>> print(dpll_algorithm(clauses, assignment))
    {'A': True, '¬B': True, '¬A': True}


    Code:
    -----
    def dpll_algorithm(clauses, assignment):
        def is_satisfied(clause, assignment):

            for literal in clause:
                if literal in assignment and assignment[literal]:
                    return True
            return False

        def is_unsatisfied(clause, assignment):
            for literal in clause:
                if literal not in assignment:
                    return False
            return all(not assignment[literal] for literal in clause)

        def choose_unassigned_variable(clauses, assignment):
            for clause in clauses:
                for literal in clause:
                    if literal not in assignment:
                        return literal

        if all(is_satisfied(clause, assignment) for clause in clauses):
            return assignment

        if any(is_unsatisfied(clause, assignment) for clause in clauses):
            return False

        var = choose_unassigned_variable(clauses, assignment)

        assignment[var] = True
        result = dpll_algorithm(clauses, assignment)
        if result:
            return result

        assignment[var] = False
        return dpll_algorithm(clauses, assignment)

    """

    def is_satisfied(clause, assignment):

        for literal in clause:
            if literal in assignment and assignment[literal]:
                return True
        return False

    def is_unsatisfied(clause, assignment):
        for literal in clause:
            if literal not in assignment:
                return False
        return all(not assignment[literal] for literal in clause)

    def choose_unassigned_variable(clauses, assignment):
        for clause in clauses:
            for literal in clause:
                if literal not in assignment:
                    return literal

    if all(is_satisfied(clause, assignment) for clause in clauses):
        return assignment

    if any(is_unsatisfied(clause, assignment) for clause in clauses):
        return False

    var = choose_unassigned_variable(clauses, assignment)

    assignment[var] = True
    result = dpll_algorithm(clauses, assignment)
    if result:
        return result

    assignment[var] = False
    return dpll_algorithm(clauses, assignment)

