Anisotropic adaptive refinement algorithms for finite element methods