Computing Degree Show 2016

Data Engineering for Constraint Programming

Solving problems often involves making choices. Constraint Programming is a branch of Artificial Intelligence that aims to solve problems that involve choices. Constraint solvers are pieces of software that can find solutions to these kinds of problems. The series of choices that a constraint solver makes can be presented in a tree structure known as a search tree.

The surge of Web 2.0 and the NoSQL database movement has given rise to a multitude of new database technologies that Constraint Programming could leverage to analyse the data it generates. Graph databases are of particular interest to Constraint Programming as they provide a way to store and query graph-like structures.

This project is original research that investigates whether graph databases can be used to explore constraint problem search trees to give insights into the solving techniques used in Constraint Programming. Minion (a constraint solver) was used to solve a real-world problem. The search trees produced were then loaded into Neo4j (a graph database) to examine their shape and structure, and to discover any interesting patterns.


By Tom Roberts

GitHub: https://github.com/txroberts