Gradient estimation via perturbation analysis