Distributed optimization via diffusion adaptation