Consider some lattice in R^n. Take some point "P" in R^n (which does not belong to this lattice in general). What are the algorithms to find some nearest lattice point to "P" ?

"Nearest" - means in the sense of the standard Eucleadian distance.

Lattice - means the standard thing - takes some vectors h_1 ... h_n and consider all their combinatioons with INTEGER coefficients. (Let us assume that h_i are independent and their number is exactly the dimension of the ambient R^n).

I think this should pretty well-studied question... Can someone recommend some good literature for it ? What are the general results known for it ? What are the algorithm complexity ? Is it NP problem ?