An algorithm is a procedure of operations for correctly solving a problem in a finite number of steps, where operations in each step can be executed in sequential order (sequential algorithm) or in parallel (parallel algorithm). A graph algorithm, in turn, is an algorithm for solving problems that can be formulated in terms of graph and its related data structures.