in Prose

The difficulty of matching stuff

Math is hard.

This is something I’ve been getting my head around since I was about 16. I’m still doing it, and I love it. I love it mostly for the pure math problems which have zero application in real life, but there are occasional fun⁰ opportunities to apply them in real life.

Here’s an example: factorials get really big, really quickly. Factorials are written as n!, and represent n · (n-1) · (n-2)…2 · 1

For example, 3! is 3 · 2 · 1 = 6

4! is 24. 5! is 120. 6! is 720. 10! is three million, six hundred and twenty-eight thousand, eight hundred, or 3,628,800

Factorials get big quickly.

This is a nice fact, but not much use in the real world. Here’s a real world example.

Suppose there are three equally qualified candidates for positions, and three such positions. There are consequently 3! ways we could combine candidates and positions to produce the map of all possible outcomes. You can prove this for yourself by combining A, B, and C with 1, 2, 3 in as many ways as you can with no repetition. You should get the answer 6.

With just six routes through this table, we can just guess — and since everyone’s equally qualified it doesn’t really matter which we pick.

However, if we map candidate skills against skills required, we’ll have a much easier time — each value will get weighted, and we ought to be able to just pick the best ones. If the combo of candidate A and position 2 is the best fit, we’ll pick that one. Easy. And with just three candidates and three positions, odds are it’ll work out so everyone gets the thing they’re best at.¹

So far so good. What if you’ve got 10 candidates and 10 positions, you’ve carried out your calculations and found there’s a tie. To whom do you give the job? And what do you do with the loser? Moving them to their next best match might displace someone better suited:

A1 and B3 both have a score of 9.8 out of 10. B loses. Their next highest score is 7.2 out of 10 for position 8 - but candidate F has a solid 8.0 match for that post. 

You can keep shuffling B down, but eventually they’ll just be stuck with something terrible. You can tell B there’s no position for them — but you’ll be short a person. Or you can move everyone down one, which means everyone will be a bit less happy but you keep candidate B.²

And this is with just 10 candidates, 10 posts, and one tie. A real world, enterprise level version of this could theoretically try to match 400 people with 600 posts. It produces a matrix of 240,000 combinations which has 5.35 x 10¹⁰³² potential routes through it, assuming all candidates are equally well suited to all roles.

That number, by the way, runs out of words to describe it. 10¹⁰⁰ is a Googol, so this is ten Googols. It is a number with one thousand and thirty-three numbers in it. It is a Big Number.



It’s also only approximately right.As you can see, after a certain number of millions my laptop gave up entirely and just assumed that the lower numbers were zeros.

Of course that means for every role you can just roll a 600-sided die, but quite frankly that thing is for Dungeons and Dragons only and besides takes three people to roll.

So you try out algorithms, which is where we’ll move next time.

⁰ Yes, fun

¹ If you were particularly perverse, or ran a graduate training scheme, you might do the inverse: select the combinations with the lowest value to force the candidates to improve to meet the job spec.

² I don’t actually have answers here, I’m just posing the question.

Write a Comment