Efficient algorithms for maximum likelihood decoding in the surface code | Synapse