alternative algorithms explained