Saturday, 1 April 2017

How to use number theory to help bus travellers

Living in London, I use buses a lot.  Each day I catch a 180 or 199, ignoring the 188, 286 and others whcih don't take me home.  I have a good memory for all the different buses in the parts of central London that I frequent, but wouldn't it be easier if the bus number told me where it was going?  If, rather than 180 arbitrarily designating a route between Lewisham and Belvedere, the number itself indicated where the bus goes?

So today I am going to unveil my scheme for taking advantage of the properties of numbers to do exactly that.  I will start off with my first idea, and then show enhancements.

The Fundamental Theorem of Arithmetic tells us that any number can be expresssed as the product of prime numbers in an essentially unique way.  So my first scheme allocates to every destination a different prime number.  For example, we might assign 2 to Waterloo, 3 to Euston and 5 to London Bridge.  Then the bus route serving these three places would be number 30.  All you need to do, as a passenger, is know the number assigned to your destination.  If you want to go to Waterloo, you know that any even-numbered bus will take you there: if you are heading for London Bridge then any bus whose number ends with 0 or 5 will do,

You might object that it is easy to tell when a number is divisible by 2 or 5, but less easy if your destination's number is, say, 17.  But there are tricks: to test whether a number is divisible by 17, one simply tests the number obtained by subtracting five times the last digit from the rest (so for 374, we subtract 20 from 37, getting 17: that tells us 17 divides 374).

But this method has a glaring weakness.  It doesn't tell us the order of the stops.  I want to be able to distinguish the route Euston - Waterloo - London Bridge from Euston - London Bridge - Waterloo since I want to travel direct from Euston to Waterloo, and going via London Bridge would take much longer.  So my improved proposal uses Godel numbering.  If a bus visits destinations a, b, c, ... in that order, its number is 2^a times 3^b times 5^c times ...  And this can be dynamically adjusted during the journey: when the bus has left Euston, the number changes to reflect that the next stop is Londo Bridge.  Now, I can find out not only whether the bus takes me to Waterloo, but how many stops there are first.  In my example, if I am at Euston, bus number 288 (2^5x3^2) will take me to London Bridge and then Waterloo, while 1944 (2^3*3^5) will go to London Bridge via Waterloo.

But my final scheme is even better.  In this one, The bus number is the product of the primes representing the places it visits, each raised to the power of the number of minutes it is expected to take to get there.  If a bus doesn't call at destination p, then the number is not a product of p.  So if I want to get to Waterloo, and bus number n arrives, I check to see what is the largest power of 2 which divides n: that is how many minutes it will take to get there.  Of course, this is adjusted dynamically, in the same way as London's bus stops now tell us how long it will be before the next bus arrives.

You might object that this system assumes bus passengers can carry out mental arithmetic.  But of course, there will be apps to do this for those who are not confident.  I will just point my smartphone at the front of a bus, and the app will read the number (say 7200) and tell me that it will be at Waterloo (destination 2) in 5 minutes (since the highest power of 2 dividing 7200 is 2^5 = 32).

Yet another way in which mathematics can make our lives easier!

Sunday, 12 March 2017

Puzzles from my grandmother

I have been reading the autobiography of one of my heroes - the great popular mathematics writer, Martin Gardner, who along with my school maths teachers Jimmy Cowan and Ivan Wells, inspired me with the excitement of mathematics.  I have come late to Gardner's autobiography, Undiluted Hocus-Pocus, which was published a few years ago, partly because of luke-warm reviews, and while I enjoyed many of the anecdotes, I wouldn't regard it as essential reading even for those who, like me, admire Gardner enormously.  But I'm glad to have read it.

One of Gardner's stories reminded me of my own childhood.  Gardner recounts his uncle telling him a riddle.  "There was one duck with two ducks behind it; one duck with two ducks in front of it; and one duck between two ducks.  How many ducks were there?"

SPOILER ALERT: Gardner notes that his uncle began by saying, "There were three ducks", which gave away the answer.

This reminded me of my paternal grandmother giving me two puzzles when I must have been perhaps in the upper levels of primary school.  I had to make sense of the following:

First riddle:

11 was a race-horse.
22 was 12.
1111 race.

Second riddle:

If the B MT put : .
If the B . putting : .

(I have just googled the first of these, and curiously it is described on one website as a tongue-twister, which it isn't!)


The first riddle reads as "One-one was a race-horse.  Two-two was one too.  One-one won one race. Two-two won one too."

The second is "If the grate be empty, put coal on.  If the grate be full, stop putting coal on."

Monday, 2 January 2017

Why (some) mistakes are interesting

Image of Hull Paragon crash from

Having recently put up here a couple of posts about mistakes, I feel I should perhaps say why I find (some) mistakes fascinating.

As you would expect, there are a number of reasons.

Perhaps a mistake casts interesting light on someone's thought processes, revealing the way a mathematician was approaching a problem or what was in their had as they tackled it.

Perhaps it is simply a cautionary example: seeing how someone else has erred helps one avoid making the same mistake.

Yet another reason is not exactly schadenfreude (though that may be part of it) but that seeing better people than me make errors is encouraging: I make lots of mistakes and it's helpful to realise that most other people do too!

Now, I worked for many years as a software engineer, working on safety-critical systems, and I have taught software engineering.

Errors occur too often in software, and the better we understand how we make errors, the more likely we are to be able to reduce their frequency.

When I was writing software, I felt that there were lessons to be learnt from railway accidents, particularly those where a remarkable combination of circumstances defeated what had seemed to be an infallible system.

You might have had considerable faith in the Tyer electric tablet system, which for many years after its introduction prevented the dreadful collisions on single-track lines which had occurred when two trains travelling in opposite directions entered the same section: but at Abermule in 1921 the combination of many tiny lapses by several individuals subverted what had appeared to be an infallible system.

Equally unlucky was the Hull Paragon accident in 1927, when two apparently independent slips by signalmen interacted in an extremely unlikely way to subvert the signalling system which protected the trains (the photo above comes from

As a software engineer,I felt there was a lot to be learnt from thinking about such system failures: could I be confident that my own system could not fail in some unlikely combination of circumstances, when the accidents at Abermule and Hull Paragon show how even apparently the most secure systems can fail?

Rhese are some reasons I think (some) mistakes are worth our study.