characteristics of algorithm