You will need a data structure for describing tables:
A table has a name and a set of attributes.
There can also be foreign keys between tables.
You will need a data structure for describing value correspondences between attributes.
The above is the input information for the algorithm.
Then you can write functions that correspond to each of the steps in Figure 3.
Implement data structures for describing tables, attributes and foreign keys (e.g. as classes or as data frames).
Make one or a few test examples.
Implement a “Group Value Correspondences” function.
Make a start on “Select Candidate Sets”