Implementation of Combinatorial Algorithms using Optimization Techniques

In theoretical computer science, combinatorial optimization problems are about finding an optimal item from a finite set of objects. Combinatorial optimization is the process of searching for maxima or minima of an unbiased function whose domain is a discrete and large configuration space. It often involves determining the way to efficiently allocate resources used to find solutions to mathematical problems. Applications for combinatorial optimization include determining the optimal way to deliver packages in logistics applications, determining taxis best route to reach a destination address


D. Analysis
The proposed algorithm can find the optimal subset of items with their corresponding optimal value while falling under the below efficiency class:

II. JOB ASSIGNMENT PROBLEM
The assignment problem is a fundamental combinatorial optimization problem [4]. Given n people who need to be assigned to n jobs , one person per job. The cost of ith person is assigned to jth job is stored in table[i] [j]. The problem is to find an assignment with the lowest total cost [5].

A. Proposed Solution
Developing an algorithms based on the brute force techinque which tests and evaluates all possible objects combinations involved in the problem and performs appropriate calculations. The algorithm uses a one-dimentational array to store permutations and a two-dimentinal array to store Person/Job cost Figure 3 shows the process flow diagram of the Job Assignment problem design

D. Analysis
The proposed algorithm can find the optimal person/job assignment with its corresponding lowest cost. It is very practical even on large number of persons, however it exhausts processing time due to Johnson-trotter algorithm [6] whose order of growth is always exponential. The algorithm falls under the below efficiency class:

III.
TRAVELING SALESMAN PROBLEM The Traveling Salesman Problem is a classic algorithmic problem in the field of computer science that focuses on optimization [7]. The problem ask to find the shortest tour through a given set of n cities or nodes that visits each city exactly once before returning to the city where it started [8].

A. Proposed Solution
Exaustive search technique is so far the most appropriate appraoch to solve this problem. It consists of generating all possible paths with their correponding lengths so eventually the shortest path can be identified. The algorithm uses a onedimentional array to store permutations, a onedimentional array to store distinct cities, and a twodimentional array to store from city, to city, and length variables. Figure 5 shows the process flow diagram for the Traveling Salesman problem design

D. Analysis
The proposed algorithm can find the shortest path among many alternatives starting from a given city, passing through all the available cities only once to end at the same starting point. Even though it is based on Johnson-Trotter algorithm to generate permutations, the proposed algorithm is considered quite efficient due to the complexity of the original problem. Therefore to solve a complex problem such the traveling salesman problem, somehow you are going to lose some processing time. The algorithm falls under the below efficiency class:  [3] , sCity) € Ф n 2 (n 2 = n 2 ) Performance wise, it requires 17 seconds for a problem with 100 cities (100! = 9.3326215443944152681699238856267e+157 permutations) E. Implementation Figure 6 depicts the screenshot of the program that implements the Traveling Salesman problem using C#.NET.

IV.
Conclusions & Future Work This paper proposed three new optimized algorithms for solving three combinatorial optimization problems namely the Knapsack problem, the Job Assignment problem, and the Traveling Salesman problem respectively. Each problem was tackled from a design, analysis, and implementation point of views. The proposed designs showed the optimized versions of the algorithms while listing their complete pseudo code. Furthermore, a thorough time complexity analysis was performed to finally end up implementing the algorithms and testing them using C#.NET.
As future work, the proposed algorithms are to be parallelized using multithreading and multiprogramming techniques so as to speeding up their execution time and making them more adaptable to large computing architectures.