http://faculty.chemeketa.edu/ascholer/cs160/Files/ecGrid.html
Error Detection and Correction Fixing 0101X011
Computer Errors RAM isn't perfect
Computer Errors Networks aren't either
Computer Errors How the heck do you read 1s and 0's off this?
A message 4 bit message: 1
A message 4 bit message: An errror: 1 1
Trick 1 : Repetition To avoid misunderstanding, repeat yourself… Copy 1 Copy 2 Copy 3 1
Trick 1 : Repetition An error: Copy 1 Copy 2 Copy 3 1
Trick 1 : Repetition Most common message wins: Copy 1 Copy 2 Copy 3 1
Trick 1 : Repetition What if every message is wrong: Copy 1 Copy 2 1
Trick 1 : Repetition Most common bit wins: Copy 1 Copy 2 Copy 3 1 1 Corrected 1
Trick 1 : Repetition More errors: Copy 1 Copy 2 Copy 3 1 "Corrected" 1
Trick 1 : Repetition Best 3 out of 5? Copy 1 Copy 2 Copy 3 Copy 4 1 Corrected 1
Overhead 1 Message size : 4 bits Including repetition : 12 bits
Overhead Message size : 4 bits Including repetition : 12 bits Message size : 4 bits Including repetition : 12 bits 200% overhead 10Mb download is now 30Mb!
Trick 2 : Redundancy Redundancy : more information than strictly required Common linguistic trick: He took his seat She took her seat They took their seats
Trick 2 : Redundancy Redundancy : more information than strictly required Common linguistic trick: He took his seat She took her seat They took their seats
Trick 2 : Redundancy Repetion is redundancy Can we be redundant more efficently?
Hamming Distance Hamming Distance : number of different bits 1010 1 2 3 4 1010 0010, 1110, 1000, 1011 0110, 0000, 0011, 1100, 1111, 1001 1101, 0001, 0111, 0100 0101
Normal Binary 4 bits : 16 possible values: 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Normal Binary Using all patterns – any error looks like a different message 1 bit errors for 1010 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Normal Binary Only use half the patterns All "good" patterns have a distance of 2 from each other 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Normal Binary "Good" patterns have distance of 2: 1 bit error is obviously an error 1 bit errors for 1010 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Hamming Code Message Coded Message 0000 0001 0010 0011 0000000 Use extra bits to "space out" messages 4 bit message with 3 error correction bits: Message Coded Message 0000 0001 0010 0011 0000000 0001011 0010111 0011100
Hamming Code 7 bits could be 27 = 128 codes Only use 16 of them 0000000 1000110 0001011 1001101 0010111 1010001 0011100 1011010 0100101 1100011 0101110 1101000 0110010 1110100 0111001 1111111
Hamming Code Every good message has distance of 3+ from other good messages: 0000000 1000110 0001011 1001101 0010111 1010001 0011100 1011010 0100101 1100011 0101110 1101000 0110010 1110100 0111001 1111111
Our Message We get: 0110110 Which message was it meant to be? 0000000 1000110 0001011 1001101 0010111 1010001 0011100 1011010 0100101 1100011 0101110 1101000 0110010 1110100 0111001 1111111
Errors Assuming Then Started with valid code word Only one error 1 bit from one valid word 2+ bits from another valid code word Valid Code A Valid Code B Valid Code C Error
Our Message We get: 0110110 Find the code with distance of 1 0000000 1000110 0001011 1001101 0010111 1010001 0011100 1011010 0100101 1100011 0101110 1101000 0110010 1110100 0111001 1111111
Errors Assuming 1 error bit, we can identify correct message: Received codes After decoding 0000000, 0000001, 0000010 0000100, 0001000, 0010000 0100000, 1000000 0 0 0 0 0 0 0
Hamming Code Overhead Message size : 4 bits Code word: 7 bits 512bit message can be encoded with 522bits: 2% overhead!
Trick 3 : Checksums Parity 1 extra bit used to make odd num of 1's Odd or even number of 1's 1 extra bit used to make odd num of 1's data checkbit 10011 00100 00001 11100
Trick 3 : Checksums Message: 00001 All 1 bit errors: 10001 01001 00101 00011 00000
Trick 3 : Checksums Checksum for decimal number: Message: 46756 Add digits, mod by 10: Message: 46756 4 + 6 + 7 + 5 + 6 = 28 28 mod (clock size) 10 = 8 Coded message: 467568
Trick 3 : Checksums Coded message: 467568 Error message: 461568 4 + 6 + 1 + 5 + 6 = 22 22 mod (clock size) 10 = 2!!! we have a problem
Two Errors Coded message: 467568 Error message: 421568 Check: 421568 4 + 2 + 1 + 5 + 6 = 18 18 mod (clock size) 10 = 8!!! we missed it
Staircse Code Multiply each digit by its place: 12345 Message: 46756 4 x 1 + 6 x 2 + 7 x 3 + 5 x 4 + 6 x 5 = 87 87 mod (clock size) 10 = 7 Coded message: 467567
Two Errors w Stair Case Coded message: 467567 Error message: 421567 12345 Check: 421567 4 x 1 + 2 x 2 + 1 x 3 + 5 x 4 + 6 x 5 = 61 61 mod (clock size) 10 = 1!!! we caught it
Real Life Stair Case ISBN – books: http://www-math.ucdenver.edu/~wcherowi/jcorner/isbn.html
Trick 4: Pinpoint How did I do it?
Trick 4: Pinpoint How did I do it? Every Row & Col should have odd # of black squares
Trick 4: Pinpoint How did I do it? Every Row & Col should have odd # of black squares
Trick 4: Pinpoint Message / Checksum
Trick 4 : Pinpoint With decimal values: 4 7 1 3 9 2 6
Trick 4 : Pinpoint With decimal values: 4 7 1 5 9 2 6
Trick 4 : Pinpoint With decimal values: 4 7 1 5 9 2 6 4 9
4 9 4 7 1 3 9 2 6 Trick 4 : Pinpoint With decimal values: off by 2
Hamming Code Hamming Codes as pinpoint parity checks: http://www.systems.caltech.edu/EE/Faculty/rjm /SAMPLE_20040708.html
Real Life Checksum Last digit of credit card number calculated to http://tywkiwdbi.blogspot.com/2012/06/checksum-number-on-credit-card.html