maximum likelihood decoder