I am back to Tech after a long summer vocation. It is been 2 weeks, courses are going fine. But those are tough and exciting to do. Among them I feel Constraint Programming very close to the heart.
Now, I wanna give you a problem.
Let us consider there are 7 tourist sites nominated in a competition and there are 7 judges to select which one is best. Wondering .. what is the problem ? wait and consider these constraints as well. Few judges are so busy people that they don't have time to analyse all 7 sites in time and few are expecting more money that is not affordable. So finally it is decided to have 3 judges for each city such that each judge is allocated only 3 sites and each site pair is analysed exactly one common judge, so now constant jury , constant load , equity well enforced. Result will be surely convincing , right ?
Constant jury : Every site is tested by equal number of judges (3 judges here)
Constant load: Every judge tests equal number of cities (3 cities here, 3 is just coincidence-need not be 3)
Equity: Every site pair has 1 common judge
Constant jury : Every site is tested by equal number of judges (3 judges here)
Constant load: Every judge tests equal number of cities (3 cities here, 3 is just coincidence-need not be 3)
Equity: Every site pair has 1 common judge
Try Solving it. It is really fun. Just use a table of 7x7 (Sites x Judges) and try allocating and you are free to use all kind of reasoning,send me the answer to:
peramanathan.sathyamoorthy.3805@student.uu.se or fill the
table here Solution Table
Now, there are many real world problems like this we have to solve everyday. Small size problems may be solvable manually, what if we want to generalize, Do you think typical software programmers will implement this successfully? You know it is very hard problem for powerful computers either. That is where Intelligent Algorithms play their part. Yes, you heard it right, Intelligent Algorithms.
All algorithms that is totally predictable in some sense and can only do nothing more than the day it is implemented are stupid. However, the programmer who wrote those algorithms can be considered intelligent. There are algorithms which are intelligent enough to evolve, learn and sensitive to changes. Those big fishes swimming in Artificial Intelligence ocean, interested people go and catch some fishes.
Constraint Programming (CP) shows it's intelligence by using propagators and searching strategies. Propagators which are implemented as constraints actually deleting all non possible values and provides reduced solution space. So now using suitable searching techniques, the solution may be found quickly. Are you Sudoku solver? How do you solve it? These algorithms are also reasoning using constraints.Most exciting thing about these algorithms is it uses multi-cores of recent computers to search solutions in parallel.I will write more about CP in coming posts ...
Meet you again ...!