Most of my research fits into the broad spectrum of graph-based algorithms. Below are a number of specific fields of research where I both develop and use graph-based algorithms.
A matching to a stable matching problem is stable if, given some agents with preferences, no pair of agents will both prefer to break with the given matching. These types of matchings are applicable to the allocation of people and/or resources, including assigning junior doctors to training positions at hospitals or teachers to schools. These preferences can come with some of the following properties:
If both ties and incompleteness are present, then finding a stable matching of largest size is NP-Hard. I have worked on preprocessing techniques and models for solving such problems, and am very interested in the specific parameters or structures of when such problems become hard, in both theoretic and practical senses.
A graph decomposition is (often) a partitioning of the edge set of the graph into some distinct sets, often represented by colours. A graph factorisation is a specific type of decomposition, wherein each set must be incident to every vertex. I study the existence of these decompositions and factorisations of
In multi-objective optimisation, we are searching for a "good" solution to a given problem given a number of distinct criteria that are often in competition with each other. I have designed and implemented many multi-objective integer optimisation algorithms to solve such problems far faster. This is achieved through the use of parallel techniques and online communication between workers.
Topology is the study of shapes without distances. We allow these shapes to be squished and stretched, as long as we don't poke holes in the shapes. Topologists are often said to be unable to differentiate between a cup and a donut.
I am part of the development team for Regina, a mathematical software suite for 3-manifold topologists. As part of this, I have worked on: