CSCE 420 Lecture 10

From Notes
Jump to navigation Jump to search

« previous | Thursday, February 14, 2013 | next »


Happy Feast of St. Valentine!

CSP: Backtracking Search

Recursively and randomly assign values to variables; return up the recursion tree if we run into a problem.

Arc-Consistency Algorithm

for every value in each node, neighboring nodes always have a consistent value choice

Complexity

  • variables
  • domain size
  • constraints/edges for each var
  • work to proceess each edge
  • Total running time:

CSPs are NP-Complete, but AC3 does not solve the problem, it just reduces the domain.

Maintaining Arc Consistency (MAC)

Backtracking with an extra step: perform AC3 before recursing:

function Recursive-Backtracking(assignment, csp, domains) returns domains/failure
  if assignment is complete then return assignment
  var := Select-Unassigned-Variable(Variables[csp], assignment, csp)
  for each value in Order-Domain-Values(var, assignment, csp) do
    if value is consistent with assignment given Constraints[csp] then
      add {var = value} to assignment
      reduced_domains := AC3(assignment, csp)
      result := Recursive-Backtracking(assignment, csp, reduced_domains)
      if result != failure then return result
      remove {var = value} from assignment
    end if
  end for
  return failure

Other CSP Methods

  • Conflicted-Directed Back-Jumping (c.f. [Chronological] Backtracking)
  • Inference-Derived Constraints
  • Max CSP: instead of trying to find a complete and consistent solution, optimize complete variable assignment that satisfies as many constraints as possible


Min-Conflicts

function Min-Conflicts(csp, max_steps) return soln/failure
  current := complete, random initial variable assignment
  for i = 1 to max_steps do
    if current is a solution (satisfies all constraints) then return current
    var := randomly chosen conflicted variable
    val := value that minimizes Conflicts(var, val, current, csp)
    current := current union {var = val}
  end for
  return failure (or best assignment found)

Game Playing

Examples of competetive, multi-agent environments

In all previous examples, the agent had complete control of environment.

  • In other problems, environment may not be compliant; may even be hostile
  • Other agents working on their own and/or against other agents

Simplified to Two-player, Zero-sum games

  • Operators: legal moves
  • Goal: "win"
  • Utility function: "payoff" = {1 if win, -1 if lose, 0 if draw}; Notice that

Nash Equilibrium Strategies

Decision-Making

Policy: maps states to actions ( )

Minimax Search

Alternating minimum ( and maximum () nodes in a tree:

for a state ,

  1. if is a max node, then return the maximum child
  2. if is a min node, then return the minimum child
  3. if is a terminal node, end the game
function Minimax(state) returns action
  return actions.min_by {|a| Min-Value(result(state, a))}

function Min-Value(state)
  if state is terminal then return u1(s)
  v := INFINITY
  for each action a in A
    v := min(v, Max-Value(result(state, a)))
  end for
  return v
end function

function Max-Value(state)
  if state is terminal then return u1(s)
  v := -INFINITY
  for each action a in A
    v := max(v, Min-Value(result(state, a)))
  end for
  return v
end function