# Math Problem Solving - MCTS Example This example demonstrates using MCTS to solve a math problem by exploring different solution strategies. ```julia using LLMMCTS # State represents the current state of problem solving # It contains the problem statement and the steps taken so far function math_problem_transition(state::Dict, args::NamedTuple) current_step = get(state, :step, 0) problem = state[:problem] # Example problem: Solve x^2 = 16 if current_step == 0 # First step: analyze the problem newstate = Dict( :step => 1, :thought => "This is a quadratic equation x^2 = 16", :action => "Take square root of both sides", :reward => 2.0, :isterminal => false ) progressvalue = 5.0 elseif current_step == 1 # Second step: solve newstate = Dict( :step => 2, :thought => "Taking square root gives x = ±4", :action => "x = sqrt(16) or x = -sqrt(16)", :reward => 3.0, :isterminal => false ) progressvalue = 7.0 elseif current_step == 2 # Third step: verify newstate = Dict( :step => 3, :thought => "Verify both solutions work", :action => "Check x=4: 4^2=16 ✓, Check x=-4: (-4)^2=16 ✓", :reward => 5.0, :isterminal => true # Problem solved! ) progressvalue = 10.0 else # Terminal state newstate = Dict( :step => current_step, :thought => "Problem solved", :action => "Solution complete", :reward => 10.0, :isterminal => true ) progressvalue = 10.0 end return Dict( :newNodeKey => "step_$current_step", :newstate => newstate, :progressvalue => progressvalue ) end # Initial state initialstate = Dict( :step => 0, :problem => "Solve x^2 = 16", :reward => 0, :isterminal => false ) # Transition arguments transitionargs = () # Run MCTS result = runMCTS( initialstate, math_problem_transition, transitionargs; maxiterations = 15, explorationweight = 1.0, maxSimulationDepth = 3, horizontalSampleExpansionPhase = 3 ) # Display results println("Problem: ", initialstate[:problem]) println() println("Best solution trajectory:") println(" Step ", result.bestTerminalState[:step]) println(" Thought: ", result.bestTerminalState[:thought]) println(" Action: ", result.bestTerminalState[:action]) println() println("Solution complete! ✓") println("Root node visits: ", result.root.visits) ```