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])
do neighbor ← a highest_valued successor of current
if Value[neighbor] ≤ Value[current] then
return State[current]
current ← neighbor

Disadvantage: This algorithm is neither complete, nor optimal.