uses algorithms