Optimization algorithms based on the proximal operator