Adaptive algorithms