Abstract

In this article we will be discussing the utilization of decomposition and reduction for development of algorithms. We will assume that a given problem instance can be somehow broken up into two smaller instances that can be solved separately. As a special case of decomposition we will define a reduction, i.e. such a decomposition that one of the resulting instances is trivial. We will define several versions of decomposition and reduction in a hierarchical way. Different kinds will be distinguished by their ability to preserve an optimal solution of the original instance. General schema of an algorithm utilizing the proposed notions will be introduced and a case-study demonstrating the adaptation of this schema for the covering problem will be provided.