What Happens When Projective Geometry Meets Information Theory? (II)
Published on August 19, 2022 by Hemanth
--
In my previous essay on what happens when projective geometry meets information theory, I covered the notion of error detecting codes and error correcting codes. After landing your space vehicle on Mars, you were trying to transmit error corrective signal to course correct your misguided Mars drone.
We were trying to make sense of how the Hamming code and the Fano plane are related. At the same time, as your drone was hurtling towards a Martian rock, I ended the essay on a cliffhanger.
In this essay, I aim to set things straight. Not only will we be answering the question of how the Hamming code and Fano plane are related, but we will also figure out a way to save your Mars drone.
In case you haven’t read the first essay yet, I urge you to do so now, as we will building upon those concepts in this essay. Without any further ado, let us begin.
Let us strip the Fano plane first and study its individual components. As I had explained in the previous essay, the Fano plane consists of seven points and seven lines (including the curved line).
In the following image, you will see that I have numbered the points starting from 1 to 7:
The Fano Plane — Illustration created by the author
Based on this numbering, you will also notice that any Fano line can be represented using 3 points. Consequently, the following is the list of all the lines in the Fano plane:
124
135
167
257
347
236
456
With this list of lines in our books, let us shift our focus now toward the Hamming code.
Comparing the Fano Plane with the Hamming Code
In my previous essay, I covered how Richard Hamming (Shannon’s Bell Labs colleague) invented the Hamming code. Furthermore, I listed the Hamming code’s combination for any three-digit (binary) combination as follows:
000 → 0000000
001 → 0010111
010 → 0101011
011 → 0111100
101 → 1011010
110 → 1100110
100 → 1001101
111 → 1110001
Now, let us say that we are interested in transforming the list of the Fano lines we just saw into binary code as well. Instead of converting the numbers directly into binary, I’m going to use simple yet specific logic.
Let “xxxxxxx” be the generic binary code for any line in the Fano plane. The ‘x’ on the left-most end represents the point number ‘1’ and the ‘x’ on the right-most end represents point number ‘7’. On any given line, if a point ‘x’ is present, we replace ‘x’ with zero. If not, we replace it with a ‘1’.
Consequently, the list of Fano lines gets transformed into binary code as follows:
124 → 0010111
135 → 0101011
167 → 0111100
257 → 1011010
347 → 1100110
236 → 1001101
456 → 1110001
Do you see what is going on here? Except for the missing point (0000000), this list is the same as the Hamming code. So, why did Hamming specifically choose these numbers? And why is the list of lines in Fano’s plane the same? Let us find out.
Projective Geometry Meets Information Theory
Just as a reminder, Richard Hamming was trying to scratch his own itch with the hamming code. His goal was to design an information transmission system that self-corrects any corruption/errors/bit-flips in the input.
Let us say that you transmit your course-corrective signal to your mars drone using the Hamming code as follows:
10101 → 010 101 → 0101011 1011010
Hamming’s worst nightmare is a situation where a bit flip would transform one of his codes into another. In your corrective signal, you have two of Hamming’s code blocks side by side. How many bits would you need to flip to transform one code block into another?
The answer is 4. Herein lies the genius of Richard Hamming. While others could not see geometry in binary signals, he could. He came up with the notion of the Hamming distance.
The Hamming distance measures the number of bit flips required to transform one block of Hamming code into another block. If you play around with Hamming’s code list, you will notice that any two blocks are at least4 units/bits of Hamming distance away from each other.
Neither Gino Fano nor Richard Hamming had intended for these two fields to come together (as far as I could research). But later generations of mathematicians figured out the connection between Hamming codes and projective planes.
Usually, when such connections are established, it leads to a bunch of new innovations. In a plot twist, this connection was used by a bunch of MIT students to game a state lottery, thus netting them millions of dollars.
I know what you must be thinking:
“Why would I be thinking of lotteries when my Mars drone is about to crash and burn?”
I get you. So, let us skip the lottery and focus on your problem.
How to Save Your Mars Drone?
The Hamming Code follows a linear error-correcting algorithm. It can easily detect up to two-bit errors and can correct one-bit errors. This is fine for applications like ECC-RAM (Error Correcting Code — Random Access Memory), but what about your Mars drone?
Without reinventing some of the historically more advanced error correcting codes, here are a couple of options we could consider:
1. The version of the Hamming code we have used so far involves (2^r — 1) bits, where r=3. You could just increase the value of r, thereby increasing redundancy and reducing the probability of signal corruption. But note that signal transmission speed also decreases correspondingly.
2. You could repeat the Hamming code signal thrice and tell the drone to return a copy of the input signal to you. If it matches, you could send a shortened (agreed) confirmation signal for the drone to execute your planned corrective manoeuvre.
With these options, the most important point that I wish to push across is this: with error correcting codes, we may, at best, reduce the probability of signal corruption, but we can never eliminate it completely.
So, depending upon your requirement (say that you wish to send the fastest input signal to your Mars drone), pick your pill and hope for the best.
Projective Geometry Meets Information Theory — II
Here is a simplified version of the nature of the problem we are up against: imagine that you are organising a party. Your challenge is to invite and get as many guests as possible into your party hall. At the same time, your challenge is to make sure that EACH party guest is as far away from EVERY other party guest as possible.
It turns out that the notion of projective geometry is very useful and efficient to solve such a problem. The notion of the Fano plane was useful for us to get to solve the Hamming code.
But in practice, mathematicians/scientists use higher dimensional geometries to solve for more advanced party/error-correcting algorithms.
Closing Comments
Back when Richard Hamming invented the Hamming code, his employer (Bell Labs) perhaps understood the value of the invention more than Hamming himself. Bell Labs resisted Hamming’s attempts to patent the invention.
In an ironic plot twist, Swiss mathematician Marcel Golay heard about Hamming’s ideas from Shanon and discovered his own versions of error-correcting code. And Golay published first, which has led to a lasting controversy about who gets the credit.
In the end, due to an antitrust settlement, Bell Labs lost the right to charge for the license on Hamming codes anyway.
Epilogue
As your drone is hurtling towards the rock, you decide that signal speed is your most important criterium. So, you go for the vanilla 7–4-Hamming code (the one we just covered) and hope for the best.
With just seconds to spare, your drone gets the correct transmission and lives another Martian day as it now travels towards Mount Olympus, the tallest mountain on Mars (its original destination).
Mars Drone — Illustrative art created by the author
You breathe a sigh of relief, and realise the role of luck and randomness in all of this! All you could do was minimise the probability of error/corruption, given your requirement for the fastest possible transmission signal.
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Duration
Description
cookielawinfo-checkbox-advertisement
1 year
Set by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Advertisement" category .
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
CookieLawInfoConsent
1 year
Records the default button state of the corresponding category & the status of CCPA. It works only in coordination with the primary cookie.
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Cookie
Duration
Description
_gat
1 minute
This cookie is installed by Google Universal Analytics to restrain request rate and thus limit the collection of data on high traffic sites.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Cookie
Duration
Description
__gads
1 year 24 days
The __gads cookie, set by Google, is stored under DoubleClick domain and tracks the number of times users see an advert, measures the success of the campaign and calculates its revenue. This cookie can only be read from the domain they are set on and will not track any data while browsing through other sites.
_ga
2 years
The _ga cookie, installed by Google Analytics, calculates visitor, session and campaign data and also keeps track of site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognize unique visitors.
_ga_R5WSNS3HKS
2 years
This cookie is installed by Google Analytics.
_gat_gtag_UA_131795354_1
1 minute
Set by Google to distinguish users.
_gid
1 day
Installed by Google Analytics, _gid cookie stores information on how visitors use a website, while also creating an analytics report of the website's performance. Some of the data that are collected include the number of visitors, their source, and the pages they visit anonymously.
CONSENT
2 years
YouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Cookie
Duration
Description
IDE
1 year 24 days
Google DoubleClick IDE cookies are used to store information about how the user uses the website to present them with relevant ads and according to the user profile.
test_cookie
15 minutes
The test_cookie is set by doubleclick.net and is used to determine if the user's browser supports cookies.
VISITOR_INFO1_LIVE
5 months 27 days
A cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface.
YSC
session
YSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages.
yt-remote-connected-devices
never
YouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
yt-remote-device-id
never
YouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
Comments