discrete diffusion explained