Birkhoff's algorithm