Optimization problems that involve variables taking discrete values appear very often in practical applications. Due to its combinatorial nature, the discrete optimization problems usually have an exponential computational complexity, and therefore are much more complex to solve than the equivalent continuous problems. This thesis has focused its work in studying and solving the problem of finding, within a previously defined lattice of points, the nearest point to a given point not in the lattice. This problem can arise, among many other practical applications, in the detection of signals in MIMO wireless communications systems (Multiple Input - Multiple Output). The discrete optimization problems can not be addressed with methods of rapid convergence based on derivatives. Instead, the solution is obtained using methods such as Branch-and-Bound, dynamic programming and heuristic search. The work presented has been, first, to conduct a comprehensive study of the state of the art of Direct Search methods (a cathegory of optimization methods not based on derivatives) and the Sphere-Decoding methods (which are Branch-and-Bound algorithms). Second, we have addressed the parallelization of these methods for different architectures: shared memory architectures, distributed memory and hybrid schemes. Furthermore, in the case of the Direct Search methods, we have explored several variants of asynchronous parallelization. Additionally, several improvements have been proposed for the sequential algorithms themselves. Several variants of the Direct Search methods were designed and implemented, which had good results in solving the Inverse Additive Singular Value problem. The results obtained showed a better accuracy than Newton-like solution methods; hence the idea of applying the algorithms designed to discrete least squares problem. The results of the Direct Search in the decoding of signals are encouraging, since the optimal solution was very often computed with smaller execution times than other known variants of exact solution algorithms. Another contribution was the using of the singular value decomposition (SVD) for acceleration of Sphere-Decoding methods, using the singular values to obtain a reduced space of search, and therefore decreasing the computing time needed to obtain the optimal solution. All these methods were implemented in portable sequential and parallel routines. These have been integrated in libraries designed and implemented with a high degree of abstraction and encapsulation, so that they can be applied to any numerical optimization problem.