It is an iterative algorithm that starts with an arbitrary solution to a problem and attempts to find a better solution by changing a single element of the solution incrementally. If the change produces a better solution, an incremental change is taken as a new solution. This process is repeated until there are no further improvements.

function Hill-Climbing (problem), returns a state that is a local maximum.

inputs: problem, a problem

local variables: current, a node

neighbor, a node

current ←Make_Node(Initial-State[problem])

loop

do neighbor ← a highest_valued successor of current

if Value[neighbor] ≤ Value[current] then

return State[current]

current ← neighbor

end

**Disadvantage**: This algorithm is neither complete, nor optimal.