  Congestion games constitute an important class of games in which computing an
exact or even approximate pure Nash equilibrium is in general {\sf
PLS}-complete. We present a surprisingly simple polynomial-time algorithm that
computes O(1)-approximate Nash equilibria in these games. In particular, for
congestion games with linear latency functions, our algorithm computes
$(2+\epsilon)$-approximate pure Nash equilibria in time polynomial in the
number of players, the number of resources and $1/\epsilon$. It also applies to
games with polynomial latency functions with constant maximum degree $d$;
there, the approximation guarantee is $d^{O(d)}$. The algorithm essentially
identifies a polynomially long sequence of best-response moves that lead to an
approximate equilibrium; the existence of such short sequences is interesting
in itself. These are the first positive algorithmic results for approximate
equilibria in non-symmetric congestion games. We strengthen them further by
proving that, for congestion games that deviate from our mild assumptions,
computing $\rho$-approximate equilibria is {\sf PLS}-complete for any
polynomial-time computable $\rho$.
