1 00:00:00,000 --> 00:00:00,390 2 00:00:00,390 --> 00:00:02,060 PROFESSOR: So OK, what did we do last time? 3 00:00:02,060 --> 00:00:05,334 Thanks for coming back by the way. 4 00:00:05,334 --> 00:00:08,870 So last time, we did MDS codes. 5 00:00:08,870 --> 00:00:15,760 6 00:00:15,760 --> 00:00:17,600 MDS codes, and we looked at this. 7 00:00:17,600 --> 00:00:21,425 And we derived some generic properties of these things if 8 00:00:21,425 --> 00:00:22,380 they existed. 9 00:00:22,380 --> 00:00:28,025 And then eventually, we moved to Reed-Solomon codes. 10 00:00:28,025 --> 00:00:30,730 11 00:00:30,730 --> 00:00:32,759 And so indeed, they exist. 12 00:00:32,759 --> 00:00:36,170 We talked a little bit about existence altogether, the main 13 00:00:36,170 --> 00:00:39,425 conjection, MDS codes, I just wrote it down. 14 00:00:39,425 --> 00:00:41,120 And like I said, you want to be rich and 15 00:00:41,120 --> 00:00:43,890 famous, solve this. 16 00:00:43,890 --> 00:00:50,050 There's people doing geometry in math that would be 17 00:00:50,050 --> 00:00:52,460 deliriously happy if you solved it. 18 00:00:52,460 --> 00:00:54,780 So if for nothing else. 19 00:00:54,780 --> 00:00:59,240 So the last thing I wrote down last time was something about 20 00:00:59,240 --> 00:01:01,800 a matrix which somebody recognized as some Fourier 21 00:01:01,800 --> 00:01:02,890 transform matrix. 22 00:01:02,890 --> 00:01:06,530 And that's where I want to pick up here, at least quickly 23 00:01:06,530 --> 00:01:08,460 make that connection. 24 00:01:08,460 --> 00:01:12,500 So let me rewrite the definition of Reed-Solomon 25 00:01:12,500 --> 00:01:14,330 codes again. 26 00:01:14,330 --> 00:01:19,870 And so a Reed-Solomon code, the way we defined it last 27 00:01:19,870 --> 00:01:22,475 time was all field elements, we would evaluate the 28 00:01:22,475 --> 00:01:24,880 polynomial in all field elements. 29 00:01:24,880 --> 00:01:26,130 Now we do it slightly different. 30 00:01:26,130 --> 00:01:29,980 31 00:01:29,980 --> 00:01:34,590 Let me make it Solomon-Stein in order to denote that 32 00:01:34,590 --> 00:01:35,320 difference. 33 00:01:35,320 --> 00:01:46,150 And let's say this is beta 0, beta n. 34 00:01:46,150 --> 00:01:59,420 35 00:01:59,420 --> 00:02:00,730 So that's the old definition. 36 00:02:00,730 --> 00:02:11,530 Only the, let's say, the beta 0, beta 1, up to beta n, they 37 00:02:11,530 --> 00:02:13,730 are the non-zero elements now. 38 00:02:13,730 --> 00:02:17,390 And just for the heck of it, so we talked about punctured 39 00:02:17,390 --> 00:02:19,360 Reed-Solomon codes last time that it would 40 00:02:19,360 --> 00:02:20,600 still be MDS codes. 41 00:02:20,600 --> 00:02:22,185 So nothing has changed there. 42 00:02:22,185 --> 00:02:25,510 In particular, all the arguments would be the same. 43 00:02:25,510 --> 00:02:32,170 In particular, just to humor me, let's say beta i is omega 44 00:02:32,170 --> 00:02:42,920 to the i, where omega is primitive in Fq. 45 00:02:42,920 --> 00:02:46,790 So what that means, you remember that primitive means 46 00:02:46,790 --> 00:02:48,460 that the powers of omega cycle through all 47 00:02:48,460 --> 00:02:51,040 the non-zero elements. 48 00:02:51,040 --> 00:02:54,760 Remember the non-zero elements are a multiplicative group. 49 00:02:54,760 --> 00:02:55,830 And it's a cyclic group. 50 00:02:55,830 --> 00:02:57,080 And it's the generator of the group. 51 00:02:57,080 --> 00:02:59,970 52 00:02:59,970 --> 00:03:01,220 Good. 53 00:03:01,220 --> 00:03:06,020 54 00:03:06,020 --> 00:03:19,180 So once we write it like this, we can actually write down the 55 00:03:19,180 --> 00:03:23,680 whole Reed-Solomon code in some sort of transfer domain 56 00:03:23,680 --> 00:03:25,855 description in the Fourier transform. 57 00:03:25,855 --> 00:03:28,710 And the way this goes is the following. 58 00:03:28,710 --> 00:03:36,000 So from now on, I will make implicit identification 59 00:03:36,000 --> 00:03:37,950 without making them. 60 00:03:37,950 --> 00:03:39,680 So this is an identification which I 61 00:03:39,680 --> 00:03:41,360 just jump around between. 62 00:03:41,360 --> 00:03:42,790 A vector -- 63 00:03:42,790 --> 00:03:49,280 so this one would be a Fqn. 64 00:03:49,280 --> 00:03:57,604 And Fx would be maybe 0 to MDS 1. 65 00:03:57,604 --> 00:04:10,370 66 00:04:10,370 --> 00:04:11,310 Let's leave it at that. 67 00:04:11,310 --> 00:04:12,080 So I make this -- 68 00:04:12,080 --> 00:04:13,820 AUDIENCE: [INAUDIBLE]. 69 00:04:13,820 --> 00:04:18,430 PROFESSOR: Yeah, let's make this identification free. 70 00:04:18,430 --> 00:04:21,570 It's just a vector of length n and a polynomial of length n. 71 00:04:21,570 --> 00:04:24,240 And so whenever I want this to have a low degree, the 72 00:04:24,240 --> 00:04:29,010 polynomial, then I just write that expression. 73 00:04:29,010 --> 00:04:32,490 So this identification we make freely now. 74 00:04:32,490 --> 00:04:36,620 And then how can we write F? 75 00:04:36,620 --> 00:04:48,820 Let F now be code word in the Reed-Solomon code. 76 00:04:48,820 --> 00:04:50,000 And then I say Fi. 77 00:04:50,000 --> 00:04:51,620 What is Fi? 78 00:04:51,620 --> 00:04:54,390 The i is element. 79 00:04:54,390 --> 00:05:03,400 Well, we know that this is F of omega to the i. 80 00:05:03,400 --> 00:05:07,200 So this is, at the moment, counted from 0. 81 00:05:07,200 --> 00:05:09,100 So this is -- 82 00:05:09,100 --> 00:05:10,730 you write it out -- 83 00:05:10,730 --> 00:05:16,820 84 00:05:16,820 --> 00:05:32,340 Fj omega to the i to the j, which is omega i j. 85 00:05:32,340 --> 00:05:33,530 And now, at this point in time, 86 00:05:33,530 --> 00:05:34,780 everybody recognizes this. 87 00:05:34,780 --> 00:05:38,000 88 00:05:38,000 --> 00:05:41,670 This would be the discrete Fourier transform of a vector. 89 00:05:41,670 --> 00:05:45,940 This is an element of order n. 90 00:05:45,940 --> 00:05:47,840 Usually, there's e to the j and then an 91 00:05:47,840 --> 00:05:48,970 element of order n. 92 00:05:48,970 --> 00:05:50,240 Now it's in the finite field. 93 00:05:50,240 --> 00:05:53,100 But what's the difference? 94 00:05:53,100 --> 00:05:55,180 This would be the Fourier transform. 95 00:05:55,180 --> 00:05:58,450 So a code word would be the Fourier transform of a vector 96 00:05:58,450 --> 00:06:03,350 F. Let's just make sure it also goes the other direction. 97 00:06:03,350 --> 00:06:12,410 So I claim that Fl would be -- so what would be the Fourier 98 00:06:12,410 --> 00:06:16,630 transform if it, indeed, is the Fourier transform? 99 00:06:16,630 --> 00:06:25,680 It is a minus, and then it goes n minus 1 100 00:06:25,680 --> 00:06:31,450 Fj omega minus jl. 101 00:06:31,450 --> 00:06:34,560 So the question is is that true? 102 00:06:34,560 --> 00:06:37,400 Because that would be the inverse. 103 00:06:37,400 --> 00:06:38,978 Is that true? 104 00:06:38,978 --> 00:06:43,750 Well, let's do what we do with proofs of this type. 105 00:06:43,750 --> 00:06:46,860 106 00:06:46,860 --> 00:06:47,860 I need that space here. 107 00:06:47,860 --> 00:06:48,286 AUDIENCE: [INAUDIBLE]. 108 00:06:48,286 --> 00:06:48,712 PROFESSOR: Sorry? 109 00:06:48,712 --> 00:06:49,990 AUDIENCE: [INAUDIBLE]. 110 00:06:49,990 --> 00:06:50,420 PROFESSOR: Yeah. 111 00:06:50,420 --> 00:06:52,540 So let's do what we do with proofs of this type. 112 00:06:52,540 --> 00:06:56,970 That means we write it out. 113 00:06:56,970 --> 00:06:59,170 That's another beautiful thing about finite fields. 114 00:06:59,170 --> 00:07:02,790 You never have to worry about convergence. 115 00:07:02,790 --> 00:07:07,310 So for the F, we just plug that in here. 116 00:07:07,310 --> 00:07:10,310 Sum, this would be -- 117 00:07:10,310 --> 00:07:11,590 what do we call it -- 118 00:07:11,590 --> 00:07:25,970 119 00:07:25,970 --> 00:07:33,920 Fi omega to the ij. 120 00:07:33,920 --> 00:07:38,860 So this would be Fj. 121 00:07:38,860 --> 00:07:42,600 And then I want omega minus jl. 122 00:07:42,600 --> 00:07:43,535 So is that true? 123 00:07:43,535 --> 00:07:45,930 Is the identity now true? 124 00:07:45,930 --> 00:07:47,420 Well, we see two sums. 125 00:07:47,420 --> 00:07:50,200 What do we do with two sums? 126 00:07:50,200 --> 00:07:52,000 If we're compelled to exchange the order, that's 127 00:07:52,000 --> 00:07:55,570 always what we do. 128 00:07:55,570 --> 00:08:02,150 So Fi goes out. 129 00:08:02,150 --> 00:08:09,900 And then you get omega to the -- 130 00:08:09,900 --> 00:08:12,160 what do we do -- 131 00:08:12,160 --> 00:08:15,290 i minus l times j. 132 00:08:15,290 --> 00:08:23,100 133 00:08:23,100 --> 00:08:25,970 We have this. 134 00:08:25,970 --> 00:08:27,450 And so what is this? 135 00:08:27,450 --> 00:08:30,480 136 00:08:30,480 --> 00:08:33,270 How can we work this out? 137 00:08:33,270 --> 00:08:35,280 Well, you know how to express the sum. 138 00:08:35,280 --> 00:08:42,280 So this part of the sum is really just omega i minus l to 139 00:08:42,280 --> 00:08:49,472 the n minus 1 minus 1. 140 00:08:49,472 --> 00:08:51,690 Well, that's a standard formula for summing 141 00:08:51,690 --> 00:08:52,840 these things up. 142 00:08:52,840 --> 00:08:57,280 But omega is an element of order n. 143 00:08:57,280 --> 00:08:58,900 Omega was an element of order n. 144 00:08:58,900 --> 00:08:59,870 That's how we chose it. 145 00:08:59,870 --> 00:09:00,750 AUDIENCE: [INAUDIBLE]. 146 00:09:00,750 --> 00:09:01,595 PROFESSOR: It's what? 147 00:09:01,595 --> 00:09:04,040 AUDIENCE: [INAUDIBLE]. 148 00:09:04,040 --> 00:09:06,680 PROFESSOR: You multiplied omega -- 149 00:09:06,680 --> 00:09:09,630 it's primitive in the field, so omega -- 150 00:09:09,630 --> 00:09:17,430 we have omega da-da-da-da-da i unequal to 1 for all i less 151 00:09:17,430 --> 00:09:22,300 than n and omega n is equal to 1. 152 00:09:22,300 --> 00:09:23,550 So OK. 153 00:09:23,550 --> 00:09:27,640 154 00:09:27,640 --> 00:09:28,570 That's fine. 155 00:09:28,570 --> 00:09:29,910 So it's an element of order n. 156 00:09:29,910 --> 00:09:31,360 That means the n-th power. 157 00:09:31,360 --> 00:09:32,610 We can interchange this. 158 00:09:32,610 --> 00:09:35,080 159 00:09:35,080 --> 00:09:39,070 So this is 1 to the some power remains 1. 160 00:09:39,070 --> 00:09:40,790 So 1 minus 1 is 0. 161 00:09:40,790 --> 00:09:41,620 The denominator -- 162 00:09:41,620 --> 00:09:44,140 well, actually, we get two results here. 163 00:09:44,140 --> 00:09:51,555 If i is unequal to l, then this is 0. 164 00:09:51,555 --> 00:09:56,720 165 00:09:56,720 --> 00:10:02,590 If i is equal to l, then this was just the sum of n once. 166 00:10:02,590 --> 00:10:05,240 So we get n here. 167 00:10:05,240 --> 00:10:05,970 i equal to 0. 168 00:10:05,970 --> 00:10:13,790 But n was q minus 1, the number of non-zero field 169 00:10:13,790 --> 00:10:17,050 elements because it was primitive in the field. 170 00:10:17,050 --> 00:10:23,990 And this one is just minus 1 in the field. 171 00:10:23,990 --> 00:10:30,190 Because q, we compute q is the power of the prime of p. 172 00:10:30,190 --> 00:10:31,220 So that would be 0. 173 00:10:31,220 --> 00:10:33,220 If we just come out as minus 1, that 174 00:10:33,220 --> 00:10:34,650 explains this minus here. 175 00:10:34,650 --> 00:10:37,000 And we can get rid of the question mark. 176 00:10:37,000 --> 00:10:39,810 177 00:10:39,810 --> 00:10:42,180 Look correct? 178 00:10:42,180 --> 00:10:42,550 All right. 179 00:10:42,550 --> 00:10:43,985 According to popular vote, it is. 180 00:10:43,985 --> 00:10:47,470 181 00:10:47,470 --> 00:10:48,740 So what do we really have here? 182 00:10:48,740 --> 00:10:51,340 We have everything we want from a Fourier transform. 183 00:10:51,340 --> 00:10:53,740 We have a Fourier transform pair. 184 00:10:53,740 --> 00:11:00,130 185 00:11:00,130 --> 00:11:04,780 We have a vector f, which we can think of as being in the 186 00:11:04,780 --> 00:11:06,030 frequency domain. 187 00:11:06,030 --> 00:11:08,800 188 00:11:08,800 --> 00:11:15,700 Then we have a vector F, which is a Fourier 189 00:11:15,700 --> 00:11:17,920 transform of that. 190 00:11:17,920 --> 00:11:31,390 This one would be in the code if the degree of this 191 00:11:31,390 --> 00:11:32,880 polynomial here would be less than k. 192 00:11:32,880 --> 00:11:36,410 193 00:11:36,410 --> 00:11:39,260 So now how can we understand Reed-Solomon codes now from an 194 00:11:39,260 --> 00:11:41,010 engineering point of view? 195 00:11:41,010 --> 00:11:43,150 Classical -- 196 00:11:43,150 --> 00:11:45,110 what about band-limited functions? 197 00:11:45,110 --> 00:11:47,936 What do we know about band-limited functions? 198 00:11:47,936 --> 00:11:54,442 Because in a sense, the degree less than k, this means that 199 00:11:54,442 --> 00:11:58,810 Fi is 0 for all i greater than k. 200 00:11:58,810 --> 00:12:01,320 201 00:12:01,320 --> 00:12:02,820 That's what it means. 202 00:12:02,820 --> 00:12:06,070 So in a sense, it's nothing but a band-limited function if 203 00:12:06,070 --> 00:12:09,060 this is a frequency domain, if you consider this as a 204 00:12:09,060 --> 00:12:10,320 frequency domain. 205 00:12:10,320 --> 00:12:14,600 So what do we know about the band-limited function? 206 00:12:14,600 --> 00:12:18,590 Well, if a function is band limited, 207 00:12:18,590 --> 00:12:20,780 it cannot be impulsive. 208 00:12:20,780 --> 00:12:22,000 We know that. 209 00:12:22,000 --> 00:12:25,940 It's a part of the frequency, and the frequency domain is 210 00:12:25,940 --> 00:12:30,520 inversely relational to the support of the function. 211 00:12:30,520 --> 00:12:32,660 So the whole idea of Reed-Solomon codes, in a 212 00:12:32,660 --> 00:12:35,540 sense, can actually be understood, at least 213 00:12:35,540 --> 00:12:37,960 intuitively, from Fourier transform and the duality 214 00:12:37,960 --> 00:12:40,162 between time and frequency. 215 00:12:40,162 --> 00:12:41,094 Yeah. 216 00:12:41,094 --> 00:12:43,430 AUDIENCE: Was q a prime number? 217 00:12:43,430 --> 00:12:47,722 PROFESSOR: q is not prime. q is a power of a prime. 218 00:12:47,722 --> 00:12:49,000 q to the n. 219 00:12:49,000 --> 00:12:50,250 AUDIENCE: [INAUDIBLE]. 220 00:12:50,250 --> 00:12:52,930 221 00:12:52,930 --> 00:12:54,840 PROFESSOR: There always is. 222 00:12:54,840 --> 00:12:55,400 Oh, sorry. 223 00:12:55,400 --> 00:12:56,350 AUDIENCE: [INAUDIBLE] 224 00:12:56,350 --> 00:12:59,820 or because for any q, there would be always a primitive? 225 00:12:59,820 --> 00:13:02,740 PROFESSOR: Why there's always a primitive element 226 00:13:02,740 --> 00:13:03,990 in the field -- 227 00:13:03,990 --> 00:13:06,350 228 00:13:06,350 --> 00:13:07,360 yeah, sorry. 229 00:13:07,360 --> 00:13:08,820 I thought you had gone through that. 230 00:13:08,820 --> 00:13:11,710 231 00:13:11,710 --> 00:13:15,370 It's because the non-zero elements in a field always 232 00:13:15,370 --> 00:13:18,110 make up a multiplicative group. 233 00:13:18,110 --> 00:13:21,640 And it's always a cyclic multiplicative group. 234 00:13:21,640 --> 00:13:25,690 So it's a cyclic multiplicative group. 235 00:13:25,690 --> 00:13:28,932 And it's just the generator of that group. 236 00:13:28,932 --> 00:13:30,700 AUDIENCE: [INAUDIBLE] it was a -- 237 00:13:30,700 --> 00:13:32,800 PROFESSOR: It's the same statement as saying, a cyclic 238 00:13:32,800 --> 00:13:34,050 group has a generator. 239 00:13:34,050 --> 00:13:38,394 240 00:13:38,394 --> 00:13:43,024 AUDIENCE: If Fq, for example, was a z, zq, 241 00:13:43,024 --> 00:13:46,680 then q has to be prime. 242 00:13:46,680 --> 00:13:47,290 PROFESSOR: Yeah. 243 00:13:47,290 --> 00:13:49,480 Yeah, in order for it to be a field, q has to be prime. 244 00:13:49,480 --> 00:13:49,905 Right. 245 00:13:49,905 --> 00:13:51,180 That's true. 246 00:13:51,180 --> 00:13:52,030 That's true. 247 00:13:52,030 --> 00:13:55,490 But we are not worried about -- 248 00:13:55,490 --> 00:13:58,150 There's also a beautiful theory [UNINTELLIGIBLE PHRASE] 249 00:13:58,150 --> 00:14:01,950 rings if this would not be a prime, very nice theory, 250 00:14:01,950 --> 00:14:03,775 becomes a little bit more technical. 251 00:14:03,775 --> 00:14:05,855 You see, more technical, then more difficult. 252 00:14:05,855 --> 00:14:09,960 253 00:14:09,960 --> 00:14:13,210 I just wanted to give you this correspondence on the Fourier 254 00:14:13,210 --> 00:14:16,170 transform because it's, from an engineering point of view, 255 00:14:16,170 --> 00:14:19,200 a very nice insight. 256 00:14:19,200 --> 00:14:21,510 One of the reasons one can understand that Reed-Solomon 257 00:14:21,510 --> 00:14:24,220 codes have a good minimum distance is because it has a 258 00:14:24,220 --> 00:14:25,790 transform of a band-limited function. 259 00:14:25,790 --> 00:14:29,890 260 00:14:29,890 --> 00:14:31,170 So that's what I wanted to say about the 261 00:14:31,170 --> 00:14:33,240 Fourier transforms here. 262 00:14:33,240 --> 00:14:34,820 I do not want to spend too much time. 263 00:14:34,820 --> 00:14:36,145 I have to get through decoding here. 264 00:14:36,145 --> 00:14:40,280 265 00:14:40,280 --> 00:14:42,820 Since we have now this Fourier transform correspondence, we 266 00:14:42,820 --> 00:14:43,740 can do another thing. 267 00:14:43,740 --> 00:15:00,720 We can, namely, say, well, F is in the code if and only if 268 00:15:00,720 --> 00:15:02,420 the Fourier transform -- 269 00:15:02,420 --> 00:15:05,740 so that was the back transform here. 270 00:15:05,740 --> 00:15:09,340 271 00:15:09,340 --> 00:15:11,480 Also now, the code word, we can interpret the code word as 272 00:15:11,480 --> 00:15:12,180 a polynomial. 273 00:15:12,180 --> 00:15:15,460 And the inverse transform is just evaluating 274 00:15:15,460 --> 00:15:19,980 it at an omega again. 275 00:15:19,980 --> 00:15:26,010 F is in the code if and only the transform of a code word 276 00:15:26,010 --> 00:15:34,385 is 0 for all i greater than k up to n minus 1. 277 00:15:34,385 --> 00:15:34,850 Yeah. 278 00:15:34,850 --> 00:15:36,100 AUDIENCE: [INAUDIBLE]. 279 00:15:36,100 --> 00:15:38,790 280 00:15:38,790 --> 00:15:41,375 PROFESSOR: So it basically just means the support. 281 00:15:41,375 --> 00:15:46,400 282 00:15:46,400 --> 00:15:49,650 If this one is band limited, then this one cannot have 283 00:15:49,650 --> 00:15:51,610 arbitrarily small support. 284 00:15:51,610 --> 00:15:55,110 That's what it means. 285 00:15:55,110 --> 00:15:56,460 That's really all I wanted to say. 286 00:15:56,460 --> 00:16:02,510 287 00:16:02,510 --> 00:16:09,620 i greater than k and less than n. 288 00:16:09,620 --> 00:16:15,470 So we have that F is in the code if and only the 289 00:16:15,470 --> 00:16:20,700 polynomial evaluates to 0 at a bunch of points. 290 00:16:20,700 --> 00:16:23,060 Now that leads to something interesting. 291 00:16:23,060 --> 00:16:28,700 Because now we can say, well, so what if we've just 292 00:16:28,700 --> 00:16:34,860 construct our set of vectors F so that they evaluate to 0 293 00:16:34,860 --> 00:16:37,190 somewhere where we want them to zero. 294 00:16:37,190 --> 00:16:40,630 We construct them somewhat differently than here. 295 00:16:40,630 --> 00:16:48,250 And in particular, let's define g as a product of i 296 00:16:48,250 --> 00:16:58,560 equal k up to n minus 1 of x minus omega minus i. 297 00:16:58,560 --> 00:17:00,950 So it's a polynomial. 298 00:17:00,950 --> 00:17:07,369 This is a polynomial which satisfies this. 299 00:17:07,369 --> 00:17:16,210 So in particular, we have g of omega minus i is equal to 0 300 00:17:16,210 --> 00:17:20,481 for all i less than n less than -- 301 00:17:20,481 --> 00:17:21,864 I'm sorry -- 302 00:17:21,864 --> 00:17:23,250 and greater than k. 303 00:17:23,250 --> 00:17:26,540 304 00:17:26,540 --> 00:17:30,700 So this is a code word, right? 305 00:17:30,700 --> 00:17:33,116 We are agreed this is a code word? 306 00:17:33,116 --> 00:17:33,940 Good. 307 00:17:33,940 --> 00:17:36,330 So we found a code word without going through this 308 00:17:36,330 --> 00:17:40,020 here, without going through the evaluation map. 309 00:17:40,020 --> 00:17:42,000 We found it straight away. 310 00:17:42,000 --> 00:17:44,210 But not only did we find this. 311 00:17:44,210 --> 00:17:48,470 This has degree n minus k. 312 00:17:48,470 --> 00:17:51,190 This has degree n minus k. 313 00:17:51,190 --> 00:17:53,990 So maybe there's another interpretation. 314 00:17:53,990 --> 00:17:59,000 Now we can give a whole new definition of the Reed-Solomon 315 00:17:59,000 --> 00:18:08,110 code, namely, as a set of polynomials, which are sort of 316 00:18:08,110 --> 00:18:17,490 implicitly identified with a set of vectors such that times 317 00:18:17,490 --> 00:18:30,830 this g of x and h of x is less then k again. 318 00:18:30,830 --> 00:18:35,330 So what we have here, it's again, you take a vector space 319 00:18:35,330 --> 00:18:38,050 of functions the h. 320 00:18:38,050 --> 00:18:40,800 It's a k dimensional vector space. 321 00:18:40,800 --> 00:18:43,426 And we multiplied with this g. 322 00:18:43,426 --> 00:18:46,280 It's again a linear map, this multiplication with a fixed 323 00:18:46,280 --> 00:18:47,530 polynomial. 324 00:18:47,530 --> 00:18:49,220 325 00:18:49,220 --> 00:18:52,340 A linear map of this vector space gives us, again, a 326 00:18:52,340 --> 00:18:54,810 vector space of dimension k. 327 00:18:54,810 --> 00:19:01,260 And all elements in this vector space evaluate to 0 for 328 00:19:01,260 --> 00:19:04,270 all omega to the minus i. 329 00:19:04,270 --> 00:19:06,140 That's just the same again, just the 330 00:19:06,140 --> 00:19:07,570 Reed-Solomon code again. 331 00:19:07,570 --> 00:19:12,140 So it's a very nice complementary description to 332 00:19:12,140 --> 00:19:17,210 the same Reed-Solomon code we could define up here, we have 333 00:19:17,210 --> 00:19:18,665 found again down here. 334 00:19:18,665 --> 00:19:23,300 335 00:19:23,300 --> 00:19:24,550 What is so nice about this? 336 00:19:24,550 --> 00:19:30,350 337 00:19:30,350 --> 00:19:33,830 Yeah, what do you think is so nice about this? 338 00:19:33,830 --> 00:19:35,080 About this description? 339 00:19:35,080 --> 00:19:39,960 340 00:19:39,960 --> 00:19:42,344 So now you have to think as engineers. 341 00:19:42,344 --> 00:19:43,710 AUDIENCE: You can still evaluate it. 342 00:19:43,710 --> 00:19:47,930 There, we have to evaluate it at end points of function. 343 00:19:47,930 --> 00:19:48,930 PROFESSOR: Yeah, exactly. 344 00:19:48,930 --> 00:19:51,710 This is so easy to implement. 345 00:19:51,710 --> 00:19:55,730 So now we think a little bit about encoder. 346 00:19:55,730 --> 00:20:04,320 An encoder for a Reed-Solomon code. 347 00:20:04,320 --> 00:20:05,570 How would we do that? 348 00:20:05,570 --> 00:20:07,710 349 00:20:07,710 --> 00:20:08,760 You look at this here. 350 00:20:08,760 --> 00:20:09,950 Hey, let's do this. 351 00:20:09,950 --> 00:20:11,550 Let's exactly do this. 352 00:20:11,550 --> 00:20:18,810 Meaning in VLSI, we do something like -- 353 00:20:18,810 --> 00:20:36,720 354 00:20:36,720 --> 00:20:38,450 and here, you would write -- and this is 355 00:20:38,450 --> 00:20:41,700 just a delay element. 356 00:20:41,700 --> 00:20:48,290 This one would be g n minus k. 357 00:20:48,290 --> 00:20:49,540 This one -- 358 00:20:49,540 --> 00:20:54,150 359 00:20:54,150 --> 00:20:56,120 so these would be the coefficients. 360 00:20:56,120 --> 00:20:58,990 This polynomial, we can evaluate once and for all. 361 00:20:58,990 --> 00:21:01,790 We do that once before we start our communication. 362 00:21:01,790 --> 00:21:04,040 We evaluate that polynomial once and for all. 363 00:21:04,040 --> 00:21:06,050 We know these coefficients. 364 00:21:06,050 --> 00:21:10,770 So these are multipliers which multiply with those 365 00:21:10,770 --> 00:21:12,060 corresponding coefficients. 366 00:21:12,060 --> 00:21:19,450 And we feed into here the coefficients of this 367 00:21:19,450 --> 00:21:20,160 polynomial. 368 00:21:20,160 --> 00:21:22,430 This is our information symbols, which we simply feed 369 00:21:22,430 --> 00:21:25,930 into this circuitry. 370 00:21:25,930 --> 00:21:30,410 And into this circuit, out comes F, out comes the 371 00:21:30,410 --> 00:21:32,290 coefficient. 372 00:21:32,290 --> 00:21:34,300 Polynomial multiplication. 373 00:21:34,300 --> 00:21:37,200 If you show that to a VLSI designer, they 374 00:21:37,200 --> 00:21:39,330 are deliriously happy. 375 00:21:39,330 --> 00:21:40,470 They say, you know what? 376 00:21:40,470 --> 00:21:41,690 I implement you this thing. 377 00:21:41,690 --> 00:21:45,940 I implement you in 5,000 gates, which is close to 378 00:21:45,940 --> 00:21:47,190 nothing nowadays. 379 00:21:47,190 --> 00:21:49,760 380 00:21:49,760 --> 00:21:50,240 Maybe not. 381 00:21:50,240 --> 00:21:53,690 Maybe 10,000. 382 00:21:53,690 --> 00:21:56,500 And there you get to the second reason that 383 00:21:56,500 --> 00:21:58,680 Reed-Solomon codes are so extremely 384 00:21:58,680 --> 00:22:00,540 important in practice. 385 00:22:00,540 --> 00:22:04,660 On the one hand, they are MDS codes, meaning they are about 386 00:22:04,660 --> 00:22:07,820 as good as it gets. 387 00:22:07,820 --> 00:22:10,615 And on the other hand, they are algorithms. 388 00:22:10,615 --> 00:22:15,725 They are circuitry for these things whose cost is close to 389 00:22:15,725 --> 00:22:18,970 nothing at least today. 390 00:22:18,970 --> 00:22:21,770 When they were invented, that was quite different. 391 00:22:21,770 --> 00:22:25,250 In the '60s, that would have not been implementable with 392 00:22:25,250 --> 00:22:27,680 transistors on a board or something like that. 393 00:22:27,680 --> 00:22:29,920 But today, the cost is close to nothing. 394 00:22:29,920 --> 00:22:32,380 So the whole algorithmic treatment of Reed-Solomon 395 00:22:32,380 --> 00:22:36,000 codes is very well developed. 396 00:22:36,000 --> 00:22:37,570 The encoder you could do like this. 397 00:22:37,570 --> 00:22:38,886 Yeah. 398 00:22:38,886 --> 00:22:40,983 AUDIENCE: Question about why do you still require that 399 00:22:40,983 --> 00:22:43,546 degree [INAUDIBLE]? 400 00:22:43,546 --> 00:22:45,095 PROFESSOR: You don't need to do that. 401 00:22:45,095 --> 00:22:47,160 But then the mapping is not one-to-one anymore. 402 00:22:47,160 --> 00:22:50,580 403 00:22:50,580 --> 00:22:52,550 Then the mapping is not one-to-one anymore. 404 00:22:52,550 --> 00:22:56,120 405 00:22:56,120 --> 00:22:58,170 Let's put it other ways. 406 00:22:58,170 --> 00:23:00,280 You want code words of length n. 407 00:23:00,280 --> 00:23:03,590 If the degree is larger, you run over. 408 00:23:03,590 --> 00:23:06,250 In order to still get a code word, then you have to take it 409 00:23:06,250 --> 00:23:08,840 modular x to the n minus 1. 410 00:23:08,840 --> 00:23:11,340 And that would fold the coefficients back. 411 00:23:11,340 --> 00:23:13,890 And still, it gives you a valid code word then, but this 412 00:23:13,890 --> 00:23:16,900 is not one-to-one anymore. 413 00:23:16,900 --> 00:23:19,980 Anyway, the short answer is if you allow more, then they 414 00:23:19,980 --> 00:23:22,160 become longer than n. 415 00:23:22,160 --> 00:23:25,410 416 00:23:25,410 --> 00:23:29,860 So what's the time? 417 00:23:29,860 --> 00:23:31,050 OK. 418 00:23:31,050 --> 00:23:32,880 So this is a nice encoder. 419 00:23:32,880 --> 00:23:39,730 There even is a nicer encoder, which I just want to give the 420 00:23:39,730 --> 00:23:41,950 formula for. 421 00:23:41,950 --> 00:23:44,540 The one reason that people still have a problem with this 422 00:23:44,540 --> 00:23:46,860 is it's not systematic. 423 00:23:46,860 --> 00:23:52,185 People like to see the symbols in the code words themselves. 424 00:23:52,185 --> 00:23:54,226 They want the systematic part. 425 00:23:54,226 --> 00:23:56,890 How could we achieve that? 426 00:23:56,890 --> 00:24:00,150 Well, we go from the same description here. 427 00:24:00,150 --> 00:24:06,530 We say, well, let h of x be given. 428 00:24:06,530 --> 00:24:09,970 429 00:24:09,970 --> 00:24:23,060 Then compute x to the n minus k times h of x modular g of x. 430 00:24:23,060 --> 00:24:28,910 So we divide this polynomial by this polynomial g -- 431 00:24:28,910 --> 00:24:29,860 it has a name. 432 00:24:29,860 --> 00:24:32,240 It's called the generator polynomial. 433 00:24:32,240 --> 00:24:34,790 We divide it by g. 434 00:24:34,790 --> 00:24:43,960 And out comes some polynomial r of x of some low degree, 435 00:24:43,960 --> 00:24:45,210 degree less than g. 436 00:24:45,210 --> 00:24:47,960 437 00:24:47,960 --> 00:24:56,900 And degree r of x less than n minus k in particular. 438 00:24:56,900 --> 00:24:59,100 So and then we can form a code word. 439 00:24:59,100 --> 00:25:05,110 I claim F of x, no, F is -- 440 00:25:05,110 --> 00:25:12,040 and here we write r, and here we write h. 441 00:25:12,040 --> 00:25:15,220 The coefficient vector of h and the 442 00:25:15,220 --> 00:25:17,870 coefficient vector of r. 443 00:25:17,870 --> 00:25:20,870 Why is that a code word? 444 00:25:20,870 --> 00:25:21,850 Why is that a code word? 445 00:25:21,850 --> 00:25:23,190 Maybe minus here. 446 00:25:23,190 --> 00:25:25,270 I'm always thinking characteristic 2 anyway. 447 00:25:25,270 --> 00:25:28,180 So why is this a code word? 448 00:25:28,180 --> 00:25:29,430 Anybody, it's clear? 449 00:25:29,430 --> 00:25:32,534 450 00:25:32,534 --> 00:25:42,970 What this is in terms of F of x is r of x plus h of x. 451 00:25:42,970 --> 00:25:45,545 452 00:25:45,545 --> 00:25:48,000 Oh, minus r of x. 453 00:25:48,000 --> 00:25:50,240 That's because we wrote it like this. 454 00:25:50,240 --> 00:25:59,870 If we now take the F of x modular g of x, well, this 455 00:25:59,870 --> 00:26:02,400 part has degree low. 456 00:26:02,400 --> 00:26:05,130 It's not affected by this modular operation. 457 00:26:05,130 --> 00:26:10,820 This would be minus r of x plus this one, modular g of x, 458 00:26:10,820 --> 00:26:13,940 which is r of x. 459 00:26:13,940 --> 00:26:16,860 So the whole thing is 0. 460 00:26:16,860 --> 00:26:22,000 If this is 0, that means g of x is a factor of F. Hence, 461 00:26:22,000 --> 00:26:23,930 it's a code word. 462 00:26:23,930 --> 00:26:25,650 So we have a code word here. 463 00:26:25,650 --> 00:26:32,150 And in the code word, pop up our symbols right away, our 464 00:26:32,150 --> 00:26:33,960 encoded information symbols right away. 465 00:26:33,960 --> 00:26:37,770 So we get some nice systematic encoding going. 466 00:26:37,770 --> 00:26:40,500 This division circuit by g is pretty much the 467 00:26:40,500 --> 00:26:41,790 same size as this. 468 00:26:41,790 --> 00:26:45,060 It's not larger at all. 469 00:26:45,060 --> 00:26:46,790 So there, we get beautiful algorithms. 470 00:26:46,790 --> 00:26:48,736 This is actually what's implemented. 471 00:26:48,736 --> 00:26:51,610 If we go to any disc drive [UNINTELLIGIBLE], that is 472 00:26:51,610 --> 00:26:56,610 usually what is implemented in there, exactly this. 473 00:26:56,610 --> 00:26:57,990 Algorithms. 474 00:26:57,990 --> 00:27:00,850 Algorithmic treatment of Reed-Solomon codes. 475 00:27:00,850 --> 00:27:03,590 Do you have any questions about any of this? 476 00:27:03,590 --> 00:27:04,015 Yeah. 477 00:27:04,015 --> 00:27:05,370 AUDIENCE: I have a question about do any these 478 00:27:05,370 --> 00:27:09,555 Reed-Solomon codes map [INAUDIBLE]? 479 00:27:09,555 --> 00:27:11,990 PROFESSOR: They are very costly map. 480 00:27:11,990 --> 00:27:14,940 Usually, it depends a lot on the application. 481 00:27:14,940 --> 00:27:17,180 If you think disc drives, [UNINTELLIGIBLE] as just being 482 00:27:17,180 --> 00:27:21,330 mapped, you take Reed-Solomon codes over a characteristic 2. 483 00:27:21,330 --> 00:27:22,760 Then each field element is 484 00:27:22,760 --> 00:27:25,840 represented as a binary vector. 485 00:27:25,840 --> 00:27:30,460 And that binary vector is mapped into on-off keying. 486 00:27:30,460 --> 00:27:32,230 Straight off the bat. 487 00:27:32,230 --> 00:27:34,560 Nothing more fancy. 488 00:27:34,560 --> 00:27:40,090 That is for disc drives. 489 00:27:40,090 --> 00:27:42,710 And as you do this, the satellite standard, where it's 490 00:27:42,710 --> 00:27:48,510 mapped onto the 256-QAM field elements [UNINTELLIGIBLE]. 491 00:27:48,510 --> 00:27:51,490 So it's many different ways. 492 00:27:51,490 --> 00:27:53,328 Many different ways. 493 00:27:53,328 --> 00:27:55,640 AUDIENCE: But to prove some performance [UNINTELLIGIBLE] 494 00:27:55,640 --> 00:27:58,980 in the [UNINTELLIGIBLE], we need to have mappings, right? 495 00:27:58,980 --> 00:28:01,030 PROFESSOR: In order to prove performance mode, we need to 496 00:28:01,030 --> 00:28:02,110 have mappings. 497 00:28:02,110 --> 00:28:05,700 And the Hamming distance bounds that we get from here 498 00:28:05,700 --> 00:28:09,060 give you bounds on the minimum Euclidean distance. 499 00:28:09,060 --> 00:28:12,400 If these are good bounds or not depends a lot on the 500 00:28:12,400 --> 00:28:14,150 modulation scheme. 501 00:28:14,150 --> 00:28:17,620 And to be perfectly honest, they usually are not. 502 00:28:17,620 --> 00:28:21,850 They usually are not very good, the bounds. 503 00:28:21,850 --> 00:28:26,350 But it's a very difficult problem to design a code or to 504 00:28:26,350 --> 00:28:31,010 find a representation of the fields that maps nicely onto a 505 00:28:31,010 --> 00:28:31,965 modulation scheme. 506 00:28:31,965 --> 00:28:34,725 Very difficult problem. 507 00:28:34,725 --> 00:28:37,210 AUDIENCE: How do we know how to think that 508 00:28:37,210 --> 00:28:38,210 this is a good code? 509 00:28:38,210 --> 00:28:42,030 PROFESSOR: The code itself is excellent in terms of MDS, the 510 00:28:42,030 --> 00:28:43,010 MDS property. 511 00:28:43,010 --> 00:28:45,070 AUDIENCE: But why does MDS mean good codes? 512 00:28:45,070 --> 00:28:46,696 PROFESSOR: In respect to modulation? 513 00:28:46,696 --> 00:28:47,580 AUDIENCE: Yes. 514 00:28:47,580 --> 00:28:49,490 PROFESSOR: It doesn't. 515 00:28:49,490 --> 00:28:52,374 It doesn't. 516 00:28:52,374 --> 00:28:55,390 It's a bit like this. 517 00:28:55,390 --> 00:28:59,080 It's really not easy to define codes in Euclidean space. 518 00:28:59,080 --> 00:29:07,170 So all that we do is we find ways to do that and guarantee 519 00:29:07,170 --> 00:29:12,120 some performance, some sort of performance. 520 00:29:12,120 --> 00:29:15,400 It's not easy to spread out -- 521 00:29:15,400 --> 00:29:15,910 I don't know -- 522 00:29:15,910 --> 00:29:24,080 2 to the 1,000 points in 1,500 dimensions. 523 00:29:24,080 --> 00:29:25,380 These would be typical numbers really. 524 00:29:25,380 --> 00:29:29,090 525 00:29:29,090 --> 00:29:31,240 It's not easy. 526 00:29:31,240 --> 00:29:35,350 And since that problem is practically daunting, it's a 527 00:29:35,350 --> 00:29:39,530 daunting task, you have to develop all sort of crutches 528 00:29:39,530 --> 00:29:40,210 to do that. 529 00:29:40,210 --> 00:29:42,290 And this is really one. 530 00:29:42,290 --> 00:29:46,620 So how to code MDS codes playing a 531 00:29:46,620 --> 00:29:48,120 part in this mapping. 532 00:29:48,120 --> 00:29:52,230 If you want to be more fancy about that, then you put a 533 00:29:52,230 --> 00:29:55,440 convolutional code or some other code also in there and 534 00:29:55,440 --> 00:29:56,690 do a combine scheme. 535 00:29:56,690 --> 00:29:59,670 536 00:29:59,670 --> 00:30:02,910 I think Professor Forney will talk about that more. 537 00:30:02,910 --> 00:30:05,060 So here, it's just the coding theoretic 538 00:30:05,060 --> 00:30:07,550 groundwork of these things. 539 00:30:07,550 --> 00:30:10,610 540 00:30:10,610 --> 00:30:11,090 Anything else? 541 00:30:11,090 --> 00:30:11,565 Yeah. 542 00:30:11,565 --> 00:30:12,900 AUDIENCE: [INAUDIBLE] 543 00:30:12,900 --> 00:30:15,390 of the [INAUDIBLE] n minus 1. 544 00:30:15,390 --> 00:30:17,507 Close, very close [INAUDIBLE]. 545 00:30:17,507 --> 00:30:18,757 PROFESSOR: Yeah, thanks. 546 00:30:18,757 --> 00:30:24,050 547 00:30:24,050 --> 00:30:28,780 So the algorithmic treatment of Reed-Solomon codes is 548 00:30:28,780 --> 00:30:29,980 extremely elegant. 549 00:30:29,980 --> 00:30:34,675 And that's the second main reason they are so much used. 550 00:30:34,675 --> 00:30:37,990 It doesn't cost so much to implement them. 551 00:30:37,990 --> 00:30:40,210 Well, at least we've seen that for the encoder. 552 00:30:40,210 --> 00:30:42,130 That's a fairly small circuit. 553 00:30:42,130 --> 00:30:43,380 So what about decoding? 554 00:30:43,380 --> 00:30:48,950 555 00:30:48,950 --> 00:30:51,650 Decoding. 556 00:30:51,650 --> 00:30:53,350 How do we decode these things? 557 00:30:53,350 --> 00:30:57,990 558 00:30:57,990 --> 00:31:00,400 How could we possibly decode them? 559 00:31:00,400 --> 00:31:02,390 And I give you -- 560 00:31:02,390 --> 00:31:04,840 AUDIENCE: Fourier? 561 00:31:04,840 --> 00:31:05,660 PROFESSOR: Right, that's true. 562 00:31:05,660 --> 00:31:06,930 We could do the Fourier transform. 563 00:31:06,930 --> 00:31:13,026 But it doesn't help us so much because we receive something. 564 00:31:13,026 --> 00:31:16,540 And we receive a vector, say, y. 565 00:31:16,540 --> 00:31:20,962 566 00:31:20,962 --> 00:31:23,323 From now on, let's say x is a code word. 567 00:31:23,323 --> 00:31:27,760 568 00:31:27,760 --> 00:31:28,750 rs, right. 569 00:31:28,750 --> 00:31:32,590 So x, it's usually a code word from now on. 570 00:31:32,590 --> 00:31:37,190 So this is a code word plus an error. 571 00:31:37,190 --> 00:31:39,740 So in particular, if we take the Fourier transform, we take 572 00:31:39,740 --> 00:31:42,110 the Fourier transform of the code word, which is fine. 573 00:31:42,110 --> 00:31:43,590 But then we get the Fourier transform of the error. 574 00:31:43,590 --> 00:31:46,780 So that destroys all the fun. 575 00:31:46,780 --> 00:31:49,370 576 00:31:49,370 --> 00:31:50,110 What else could we do? 577 00:31:50,110 --> 00:31:54,250 Here's typical parameters of a code. 578 00:31:54,250 --> 00:32:01,740 255, 239, 256. 579 00:32:01,740 --> 00:32:04,100 And you immediately see that, OK, any sort of 580 00:32:04,100 --> 00:32:05,350 group force is out. 581 00:32:05,350 --> 00:32:08,820 582 00:32:08,820 --> 00:32:10,490 How many code words do we have here? 583 00:32:10,490 --> 00:32:13,622 We have 8 to the 239 code words. 584 00:32:13,622 --> 00:32:16,042 Now you don't want to search that. 585 00:32:16,042 --> 00:32:18,386 You definitely don't want to search that. 586 00:32:18,386 --> 00:32:22,690 587 00:32:22,690 --> 00:32:25,536 So how could we possibly decode these things? 588 00:32:25,536 --> 00:32:28,790 589 00:32:28,790 --> 00:32:32,070 Turns out, to decode them in some sort of optimal fashion, 590 00:32:32,070 --> 00:32:33,160 maximum likelihood [INAUDIBLE] 591 00:32:33,160 --> 00:32:37,220 actually, it's an NP-hard problem. 592 00:32:37,220 --> 00:32:41,140 Maybe last year, actually, it has been shown that it's an 593 00:32:41,140 --> 00:32:44,190 NP-hard problem to decode Reed-Solomon codes. 594 00:32:44,190 --> 00:32:47,110 It was known that decoding in general was NP-hard. 595 00:32:47,110 --> 00:32:51,930 But this is now the constraint to Reed-Solomon 596 00:32:51,930 --> 00:32:55,200 codes is still hard. 597 00:32:55,200 --> 00:32:56,940 So what do we do? 598 00:32:56,940 --> 00:32:59,640 Yes, OK, what do we do? 599 00:32:59,640 --> 00:33:01,800 Let's say x is a code word. 600 00:33:01,800 --> 00:33:05,170 We know that. 601 00:33:05,170 --> 00:33:09,560 And set rate e, let's just call it t. 602 00:33:09,560 --> 00:33:16,680 603 00:33:16,680 --> 00:33:23,390 So what happens if you don't have an error? 604 00:33:23,390 --> 00:33:24,640 Just thought experiment. 605 00:33:24,640 --> 00:33:28,630 606 00:33:28,630 --> 00:33:34,520 Thought experiment, if you don't have an error, then yi 607 00:33:34,520 --> 00:33:46,640 in all the positions is equal to F of xi for 608 00:33:46,640 --> 00:33:49,500 some F of x of degree. 609 00:33:49,500 --> 00:33:59,000 610 00:33:59,000 --> 00:34:02,520 In particular, since we know the x's, we know 611 00:34:02,520 --> 00:34:03,770 the positions -- 612 00:34:03,770 --> 00:34:09,440 613 00:34:09,440 --> 00:34:14,600 sorry, oh, sorry. 614 00:34:14,600 --> 00:34:17,050 That's not what I wanted to write. 615 00:34:17,050 --> 00:34:18,864 This is definitely not what I wanted to write. 616 00:34:18,864 --> 00:34:21,820 617 00:34:21,820 --> 00:34:38,870 Let's keep that as c as a code word and position i in c is 618 00:34:38,870 --> 00:34:49,679 associated with xi in the fields. 619 00:34:49,679 --> 00:34:57,340 So meaning ci would be F of xi. 620 00:34:57,340 --> 00:34:59,310 That's really what I wanted to write. 621 00:34:59,310 --> 00:35:01,810 It makes more sense. 622 00:35:01,810 --> 00:35:03,710 So thought experiment. 623 00:35:03,710 --> 00:35:04,960 No errors. 624 00:35:04,960 --> 00:35:07,080 625 00:35:07,080 --> 00:35:16,170 Then yi is F of xi for some F. If they ran no errors, then we 626 00:35:16,170 --> 00:35:21,900 could just solve this linear system of equations to find 627 00:35:21,900 --> 00:35:26,360 the coefficient of F. And the coefficient of F, say, were 628 00:35:26,360 --> 00:35:28,286 our information circuits. 629 00:35:28,286 --> 00:35:32,100 Is it clear that this is a linear system of equations? 630 00:35:32,100 --> 00:35:34,380 Yeah? 631 00:35:34,380 --> 00:35:40,680 You could write it out as y0, y1, y2 equal to -- 632 00:35:40,680 --> 00:35:56,490 633 00:35:56,490 --> 00:36:01,260 and here we have f0, f1, up to fk-1. 634 00:36:01,260 --> 00:36:03,110 This is the linear system of equations. 635 00:36:03,110 --> 00:36:04,510 We know the xi's. 636 00:36:04,510 --> 00:36:05,960 This is a linear system of equation we have to solve. 637 00:36:05,960 --> 00:36:11,170 638 00:36:11,170 --> 00:36:13,560 If there are no errors, then life is easy. 639 00:36:13,560 --> 00:36:15,360 That seems to be reasonable. 640 00:36:15,360 --> 00:36:17,820 So what happens if we do have errors? 641 00:36:17,820 --> 00:36:23,810 Somehow, we have to make sure that the errors that we get do 642 00:36:23,810 --> 00:36:27,590 not cause any problem for us. 643 00:36:27,590 --> 00:36:33,950 And then we do something very ingenious. 644 00:36:33,950 --> 00:36:37,825 We define something called an error locator which is a 645 00:36:37,825 --> 00:36:55,470 polynomial x such that x minus xi. 646 00:36:55,470 --> 00:37:01,400 So it's a polynomial which is 0 in all error positions. 647 00:37:01,400 --> 00:37:04,700 648 00:37:04,700 --> 00:37:07,270 Well, you might say, we do not know the error positions. 649 00:37:07,270 --> 00:37:09,750 Well, OK, that's true. 650 00:37:09,750 --> 00:37:12,480 Basically, this is, in the end, what we want to find, 651 00:37:12,480 --> 00:37:13,150 this polynomial. 652 00:37:13,150 --> 00:37:14,835 But nonetheless, this polynomial exists. 653 00:37:14,835 --> 00:37:18,080 654 00:37:18,080 --> 00:37:25,990 We can cast, actually, the coding problem -- 655 00:37:25,990 --> 00:37:29,170 this is form 1 s. 656 00:37:29,170 --> 00:37:32,695 657 00:37:32,695 --> 00:37:35,032 Yes, what? 658 00:37:35,032 --> 00:37:36,282 AUDIENCE: [INAUDIBLE PHRASE]. 659 00:37:36,282 --> 00:37:42,130 660 00:37:42,130 --> 00:37:43,480 PROFESSOR: Yeah, it's an additive error model. 661 00:37:43,480 --> 00:37:46,510 662 00:37:46,510 --> 00:37:48,330 But you can cast pretty much anything in the 663 00:37:48,330 --> 00:37:49,140 [UNINTELLIGIBLE]. 664 00:37:49,140 --> 00:37:52,440 If a position is altered, you can always model that as if 665 00:37:52,440 --> 00:37:53,754 something was added to it. 666 00:37:53,754 --> 00:37:56,480 667 00:37:56,480 --> 00:38:09,670 Decoding problem one is find lambda of x of minimal degree 668 00:38:09,670 --> 00:38:30,800 such that lambda of xi, is 0 for all xi and 669 00:38:30,800 --> 00:38:35,230 degree f less than k. 670 00:38:35,230 --> 00:38:41,750 So I claim if you solve this problem, namely, this is a 671 00:38:41,750 --> 00:38:44,570 problem I give you. 672 00:38:44,570 --> 00:38:47,000 I give you vector y. 673 00:38:47,000 --> 00:38:48,335 I give you vector y. 674 00:38:48,335 --> 00:38:48,890 Here it is. 675 00:38:48,890 --> 00:38:50,380 Here is vector y. 676 00:38:50,380 --> 00:38:53,500 And I give you vector x which corresponds to the field 677 00:38:53,500 --> 00:38:56,310 elements where you evaluated that in order to 678 00:38:56,310 --> 00:38:57,540 get the code word. 679 00:38:57,540 --> 00:39:02,760 And then I said, given y and x, find two polynomials lambda 680 00:39:02,760 --> 00:39:09,180 and f such that f has maximum degree k and lambda has 681 00:39:09,180 --> 00:39:12,730 minimum degree, the smaller degree possible so 682 00:39:12,730 --> 00:39:15,360 that this is true. 683 00:39:15,360 --> 00:39:19,140 And I claim this solves the decoding problem. 684 00:39:19,140 --> 00:39:22,340 This would solve the decoding problem because once we have 685 00:39:22,340 --> 00:39:24,910 found this, then we can take lambda to 686 00:39:24,910 --> 00:39:27,140 be the error locator. 687 00:39:27,140 --> 00:39:32,480 And we can basically read off the information 688 00:39:32,480 --> 00:39:35,180 symbols from the f. 689 00:39:35,180 --> 00:39:38,810 So this decoding formulation now brings it, at least, into 690 00:39:38,810 --> 00:39:42,780 the algebraic ground, brings the whole decoding problem, 691 00:39:42,780 --> 00:39:45,072 makes it something algebraically. 692 00:39:45,072 --> 00:39:49,220 But now the question becomes, is that easy? 693 00:39:49,220 --> 00:39:50,890 Or can we do this? 694 00:39:50,890 --> 00:39:52,140 This problem here. 695 00:39:52,140 --> 00:39:54,440 696 00:39:54,440 --> 00:39:56,670 Do you see any hope for solving this problem? 697 00:39:56,670 --> 00:40:02,270 698 00:40:02,270 --> 00:40:05,290 I guess the only answer that -- 699 00:40:05,290 --> 00:40:06,660 OK, anybody says no? 700 00:40:06,660 --> 00:40:10,072 Anybody does not see any hope? 701 00:40:10,072 --> 00:40:10,950 All right. 702 00:40:10,950 --> 00:40:11,750 This is great. 703 00:40:11,750 --> 00:40:14,940 You all see hope here. 704 00:40:14,940 --> 00:40:18,380 You all see hope here, which seems to make you an 705 00:40:18,380 --> 00:40:20,166 opportunistic bunch. 706 00:40:20,166 --> 00:40:21,360 Not opportunistic. 707 00:40:21,360 --> 00:40:22,350 What's the word? 708 00:40:22,350 --> 00:40:22,930 Optimistic. 709 00:40:22,930 --> 00:40:24,180 Optimistic bunch. 710 00:40:24,180 --> 00:40:26,470 711 00:40:26,470 --> 00:40:27,270 Let's put it like this. 712 00:40:27,270 --> 00:40:29,333 What is the problem in solving this? 713 00:40:29,333 --> 00:40:31,991 714 00:40:31,991 --> 00:40:34,270 It's not linear. 715 00:40:34,270 --> 00:40:35,890 You get the coefficients of lambda. 716 00:40:35,890 --> 00:40:38,390 Multiply the coefficients of f. 717 00:40:38,390 --> 00:40:44,900 That whole thing becomes a nonlinear problem, where we 718 00:40:44,900 --> 00:40:51,490 say in the end, find the solution to a set of 719 00:40:51,490 --> 00:40:57,400 polynomial equations in a field, which is a multivariate 720 00:40:57,400 --> 00:41:00,390 polynomial equations, where the coefficients of lambda and 721 00:41:00,390 --> 00:41:02,680 f are the variables. 722 00:41:02,680 --> 00:41:03,540 You can do that. 723 00:41:03,540 --> 00:41:06,400 You could use techniques like Grobner basis or so, and you 724 00:41:06,400 --> 00:41:07,720 could do that. 725 00:41:07,720 --> 00:41:09,020 But this is very difficult. 726 00:41:09,020 --> 00:41:11,805 This is computationally tedious. 727 00:41:11,805 --> 00:41:15,710 728 00:41:15,710 --> 00:41:18,930 So is that clear why this is nonlinear, and why this is 729 00:41:18,930 --> 00:41:20,780 hard to solve a nonlinear problem here? 730 00:41:20,780 --> 00:41:24,740 731 00:41:24,740 --> 00:41:27,830 If not, then you have to say something now, or forever hold 732 00:41:27,830 --> 00:41:29,080 your peace. 733 00:41:29,080 --> 00:41:36,880 734 00:41:36,880 --> 00:41:38,350 So what do we do with hard problems? 735 00:41:38,350 --> 00:41:41,820 736 00:41:41,820 --> 00:41:44,920 Once you take the optimization classes, there's almost like a 737 00:41:44,920 --> 00:41:47,320 reflex, there is a relax time. 738 00:41:47,320 --> 00:41:49,870 We find the proper relaxation of the problem. 739 00:41:49,870 --> 00:41:53,450 Now the proper relaxation of this problem is the following. 740 00:41:53,450 --> 00:42:00,690 741 00:42:00,690 --> 00:42:03,150 Decoding problem two. 742 00:42:03,150 --> 00:42:17,865 Find lambda of x of minimal degree such that -- 743 00:42:17,865 --> 00:42:21,760 it's almost the same, almost the same -- 744 00:42:21,760 --> 00:42:39,460 lambda fi yi minus h of xi is 0, where the degree of h is 745 00:42:39,460 --> 00:42:48,820 less than k plus degree lambda. 746 00:42:48,820 --> 00:42:52,370 So all that we did from this formulation, which would give 747 00:42:52,370 --> 00:42:55,560 us a clean solution to the whole thing, right now, we 748 00:42:55,560 --> 00:43:00,350 multiply in this lambda which gives here, it keeps the 749 00:43:00,350 --> 00:43:02,060 lambda times y. 750 00:43:02,060 --> 00:43:05,370 And here, we get a new polynomial, lambda times f, 751 00:43:05,370 --> 00:43:11,800 which now has degree at most k plus degree lambda. 752 00:43:11,800 --> 00:43:15,760 And then we say, let's instead solve this problem. 753 00:43:15,760 --> 00:43:18,130 Let's solve this problem. 754 00:43:18,130 --> 00:43:32,800 In particular, the question now becomes well, we do not 755 00:43:32,800 --> 00:43:35,000 require this anymore. 756 00:43:35,000 --> 00:43:39,870 In this relaxed formulation, we do not require this. 757 00:43:39,870 --> 00:43:41,800 And that makes all the difference. 758 00:43:41,800 --> 00:43:45,836 It makes a world of difference because this one -- 759 00:43:45,836 --> 00:43:49,470 look at it -- it's a linear problem. 760 00:43:49,470 --> 00:43:50,760 It's a linear program. 761 00:43:50,760 --> 00:43:51,880 Why is it a linear problem? 762 00:43:51,880 --> 00:43:53,375 Do you see it's a linear problem? 763 00:43:53,375 --> 00:43:56,020 764 00:43:56,020 --> 00:44:00,180 Could you write down the equation, the matrix equation? 765 00:44:00,180 --> 00:44:01,430 It's pretty straight, right? 766 00:44:01,430 --> 00:44:04,690 767 00:44:04,690 --> 00:44:05,730 It's pretty straight. 768 00:44:05,730 --> 00:44:09,340 You could, for example, write it like, here, a 769 00:44:09,340 --> 00:44:14,285 diagonal matrix yn. 770 00:44:14,285 --> 00:44:16,790 771 00:44:16,790 --> 00:44:18,280 Here, you would get something. 772 00:44:18,280 --> 00:44:26,688 773 00:44:26,688 --> 00:44:28,590 I think that seems to be all right. 774 00:44:28,590 --> 00:44:35,710 775 00:44:35,710 --> 00:44:39,070 And here, just the evaluation of the h. 776 00:44:39,070 --> 00:45:00,330 So up to hk plus degree lambda. 777 00:45:00,330 --> 00:45:03,070 That's a linear system of equations. 778 00:45:03,070 --> 00:45:04,330 We can certainly solve this. 779 00:45:04,330 --> 00:45:08,340 Well, we do not know really what the lambda is, what 780 00:45:08,340 --> 00:45:10,180 degree the lambda has. 781 00:45:10,180 --> 00:45:12,720 But we're just hypothesizing on all the possible degrees. 782 00:45:12,720 --> 00:45:15,920 783 00:45:15,920 --> 00:45:21,915 Well, we could say, OK, let's assume the degree lambda is 0. 784 00:45:21,915 --> 00:45:24,740 It's a constant, which would be the same as saying there 785 00:45:24,740 --> 00:45:27,520 are no errors. 786 00:45:27,520 --> 00:45:29,120 Then we can look at the system of equations. 787 00:45:29,120 --> 00:45:30,120 Does it have a solution? 788 00:45:30,120 --> 00:45:31,380 Well, yes, no. 789 00:45:31,380 --> 00:45:34,300 If no, then we say, all right, let's assume it's 1. 790 00:45:34,300 --> 00:45:35,370 Well, does it have a solution? 791 00:45:35,370 --> 00:45:36,250 Yes, no. 792 00:45:36,250 --> 00:45:36,860 And so on. 793 00:45:36,860 --> 00:45:38,110 Then we can move on. 794 00:45:38,110 --> 00:45:41,480 795 00:45:41,480 --> 00:45:43,210 So we can solve this relaxed problem. 796 00:45:43,210 --> 00:45:46,610 797 00:45:46,610 --> 00:45:48,580 Does that help us? 798 00:45:48,580 --> 00:45:50,500 It's nice to solve a relaxed problem. 799 00:45:50,500 --> 00:45:52,540 And in the end, we get two vectors out of it, two 800 00:45:52,540 --> 00:45:57,620 polynomials, lambda and h. 801 00:45:57,620 --> 00:45:58,870 Does it really help us? 802 00:45:58,870 --> 00:46:02,290 803 00:46:02,290 --> 00:46:06,635 Well, yes. 804 00:46:06,635 --> 00:46:08,390 Why? 805 00:46:08,390 --> 00:46:09,240 Because -- 806 00:46:09,240 --> 00:46:10,490 let's put it like this. 807 00:46:10,490 --> 00:46:12,930 808 00:46:12,930 --> 00:46:16,960 We could easily check if this is true. 809 00:46:16,960 --> 00:46:20,860 Once we have our h, we can easily check if this is true. 810 00:46:20,860 --> 00:46:25,760 And if it is true, then we have solved this problem. 811 00:46:25,760 --> 00:46:28,430 If it is true, we have solved this problem, which is the 812 00:46:28,430 --> 00:46:31,350 problem we wanted to solve. 813 00:46:31,350 --> 00:46:32,600 Good. 814 00:46:32,600 --> 00:46:40,170 815 00:46:40,170 --> 00:46:41,870 So is that all we need to know about this? 816 00:46:41,870 --> 00:46:50,390 817 00:46:50,390 --> 00:46:51,950 We want to give guarantees. 818 00:46:51,950 --> 00:46:55,380 We want to give guarantees that we correct up to so many 819 00:46:55,380 --> 00:46:56,991 errors, t errors, right? 820 00:46:56,991 --> 00:46:59,580 821 00:46:59,580 --> 00:47:03,390 So we have to guarantee that if there are not more than t 822 00:47:03,390 --> 00:47:08,600 errors, whatever t will turn out to be, we can guarantee 823 00:47:08,600 --> 00:47:12,460 that A, we will find a solution, and 824 00:47:12,460 --> 00:47:15,570 B, this will hold. 825 00:47:15,570 --> 00:47:17,815 So two things to prove. 826 00:47:17,815 --> 00:47:18,880 Is that clear? 827 00:47:18,880 --> 00:47:21,360 That we have to prove those two things? 828 00:47:21,360 --> 00:47:24,020 So the first one first. 829 00:47:24,020 --> 00:47:27,430 830 00:47:27,430 --> 00:47:34,970 When do we find a solution? 831 00:47:34,970 --> 00:47:36,465 And are we guaranteed to find it? 832 00:47:36,465 --> 00:47:41,200 833 00:47:41,200 --> 00:47:50,280 Can we guarantee the existence of a solution? 834 00:47:50,280 --> 00:47:55,400 835 00:47:55,400 --> 00:47:58,050 Well, when can we do that? 836 00:47:58,050 --> 00:48:00,390 Let's look at this. 837 00:48:00,390 --> 00:48:02,240 These are n constraints. 838 00:48:02,240 --> 00:48:05,390 839 00:48:05,390 --> 00:48:09,350 This is a system of linear equations with n constraints. 840 00:48:09,350 --> 00:48:17,420 If the total number of degrees of freedom exceeds n, then we 841 00:48:17,420 --> 00:48:19,790 are left with something non-trivial after we solve the 842 00:48:19,790 --> 00:48:21,060 system of equations. 843 00:48:21,060 --> 00:48:23,880 So what's the total number of degrees of freedom? 844 00:48:23,880 --> 00:48:26,760 845 00:48:26,760 --> 00:48:28,100 The number of degrees of freedom -- 846 00:48:28,100 --> 00:48:33,100 847 00:48:33,100 --> 00:48:39,920 so we get the lambda as a degree of freedom, so which is 848 00:48:39,920 --> 00:48:44,030 degree lambda plus 1. 849 00:48:44,030 --> 00:48:46,720 And the other one is plus -- 850 00:48:46,720 --> 00:48:49,510 851 00:48:49,510 --> 00:48:51,910 what is this one -- 852 00:48:51,910 --> 00:48:58,930 plus k plus degree lambda. 853 00:48:58,930 --> 00:49:04,140 This is the total number of degrees of freedom here. 854 00:49:04,140 --> 00:49:08,550 And the reason is that this one should be minus 1. 855 00:49:08,550 --> 00:49:09,800 Sorry. 856 00:49:09,800 --> 00:49:11,400 857 00:49:11,400 --> 00:49:13,320 So this is total number of degrees of freedom. 858 00:49:13,320 --> 00:49:18,505 859 00:49:18,505 --> 00:49:21,580 If this is greater than n, then we can guarantee the 860 00:49:21,580 --> 00:49:23,445 existence of a solution, a nontrivial solution. 861 00:49:23,445 --> 00:49:26,690 Then this thing will have a solution. 862 00:49:26,690 --> 00:49:28,620 It's a homogeneous system of equations. 863 00:49:28,620 --> 00:49:30,110 So the 0 is always a solution. 864 00:49:30,110 --> 00:49:33,200 But that's not much good to us. 865 00:49:33,200 --> 00:49:35,458 So what do we get here? 866 00:49:35,458 --> 00:49:37,930 Degree lambda. 867 00:49:37,930 --> 00:49:44,580 To a degree lambda greater than n minus k plus minus 868 00:49:44,580 --> 00:49:49,130 1 or n minus k. 869 00:49:49,130 --> 00:49:52,470 870 00:49:52,470 --> 00:49:58,770 So the degree lambda greater than n minus k over 2 -- does 871 00:49:58,770 --> 00:50:00,100 that remind you of anything here? 872 00:50:00,100 --> 00:50:04,770 873 00:50:04,770 --> 00:50:14,950 So this one is d minus 1 over 2. 874 00:50:14,950 --> 00:50:16,700 So very interesting, right? 875 00:50:16,700 --> 00:50:20,460 Once upon a time, you learned that if you make less than d/2 876 00:50:20,460 --> 00:50:23,760 errors, you can correct that. 877 00:50:23,760 --> 00:50:24,040 Very nice. 878 00:50:24,040 --> 00:50:26,780 It pops up here. 879 00:50:26,780 --> 00:50:29,520 It pops up here out of the blue. 880 00:50:29,520 --> 00:50:32,260 The reason that it pops up here is, of course, the same 881 00:50:32,260 --> 00:50:36,730 statement, that as long as we stay within d/2 errors, we are 882 00:50:36,730 --> 00:50:38,580 guaranteed to be able to decode this. 883 00:50:38,580 --> 00:50:41,200 884 00:50:41,200 --> 00:50:42,030 So this is one. 885 00:50:42,030 --> 00:50:45,630 So we know this one was the number of errors. 886 00:50:45,630 --> 00:50:48,540 If t is greater or equal than this, then -- 887 00:50:48,540 --> 00:50:58,010 888 00:50:58,010 --> 00:51:01,220 let's forget about the t. 889 00:51:01,220 --> 00:51:03,810 If you proceed in this algorithm hypothesizing the 890 00:51:03,810 --> 00:51:09,100 degrees of lambda, once we've reached this number in the 891 00:51:09,100 --> 00:51:11,150 degree, there will be a solution. 892 00:51:11,150 --> 00:51:12,650 And we don't have to go further than that. 893 00:51:12,650 --> 00:51:16,380 894 00:51:16,380 --> 00:51:18,190 So that's the first one. 895 00:51:18,190 --> 00:51:21,880 So the second thing we have to prove is that -- 896 00:51:21,880 --> 00:51:23,130 I shouldn't have done this -- 897 00:51:23,130 --> 00:51:29,190 898 00:51:29,190 --> 00:51:30,320 that for some t -- 899 00:51:30,320 --> 00:51:30,784 Yeah? 900 00:51:30,784 --> 00:51:33,104 AUDIENCE: [INAUDIBLE] 901 00:51:33,104 --> 00:51:36,360 standard degree of freedom or less constraints? 902 00:51:36,360 --> 00:51:38,310 PROFESSOR: You want to guarantee a solution. 903 00:51:38,310 --> 00:51:41,750 If you have more constraints than degrees of freedom, then, 904 00:51:41,750 --> 00:51:44,670 since it's homogeneous, you usually would be stuck with a 905 00:51:44,670 --> 00:51:45,490 zero solution. 906 00:51:45,490 --> 00:51:49,520 Everything's 0, which is no good to us. 907 00:51:49,520 --> 00:51:52,510 It solves this problem, but it doesn't give us any 908 00:51:52,510 --> 00:51:55,305 information. 909 00:51:55,305 --> 00:51:56,622 Is that all right? 910 00:51:56,622 --> 00:52:00,066 911 00:52:00,066 --> 00:52:02,772 AUDIENCE: Why does it have to be the condition that degrees 912 00:52:02,772 --> 00:52:06,970 of freedom has to be greater than the constraints? 913 00:52:06,970 --> 00:52:09,400 PROFESSOR: No, no, the degrees of freedom -- 914 00:52:09,400 --> 00:52:13,460 well, OK, it's true. 915 00:52:13,460 --> 00:52:16,580 We could get lucky. 916 00:52:16,580 --> 00:52:20,030 We could have redundancy in this system of equations. 917 00:52:20,030 --> 00:52:24,780 And if we get lucky, that's just for the better. 918 00:52:24,780 --> 00:52:29,260 And actually, you can show that you do get lucky if very 919 00:52:29,260 --> 00:52:31,250 few errors happen. 920 00:52:31,250 --> 00:52:34,260 Then this would have low rank. 921 00:52:34,260 --> 00:52:35,370 You can show that. 922 00:52:35,370 --> 00:52:39,430 But short of knowing much, we want to guarantee -- 923 00:52:39,430 --> 00:52:42,380 I just want, at this point in time, to guarantee that there 924 00:52:42,380 --> 00:52:44,370 is a solution. 925 00:52:44,370 --> 00:52:47,590 There is a non-zero solution to this system of equations, 926 00:52:47,590 --> 00:52:50,710 and the degree of lambda is not more than d 927 00:52:50,710 --> 00:52:53,460 minus 1 over 2. 928 00:52:53,460 --> 00:52:56,690 There is a solution with a degree of lambda being upper 929 00:52:56,690 --> 00:52:58,324 bounded by this. 930 00:52:58,324 --> 00:52:59,800 AUDIENCE: So [INAUDIBLE] 931 00:52:59,800 --> 00:53:01,280 less constraints? 932 00:53:01,280 --> 00:53:02,530 PROFESSOR: Yeah, no, no. 933 00:53:02,530 --> 00:53:06,550 934 00:53:06,550 --> 00:53:08,660 Once this is satisfied, I guarantee 935 00:53:08,660 --> 00:53:10,260 you there is a solution. 936 00:53:10,260 --> 00:53:14,420 That means, the smallest solution is guaranteed not to 937 00:53:14,420 --> 00:53:15,670 be larger than that. 938 00:53:15,670 --> 00:53:19,090 939 00:53:19,090 --> 00:53:20,150 But there are, of course, many, 940 00:53:20,150 --> 00:53:21,570 many more larger solutions. 941 00:53:21,570 --> 00:53:25,723 There are many solutions of larger degree here, which we 942 00:53:25,723 --> 00:53:27,550 are not interested in since we are interested 943 00:53:27,550 --> 00:53:30,370 in the minimal degree. 944 00:53:30,370 --> 00:53:32,750 So this is an upper bound on the minimal degree lambda. 945 00:53:32,750 --> 00:53:37,200 946 00:53:37,200 --> 00:53:38,300 So now the other one. 947 00:53:38,300 --> 00:53:46,630 So now we want to make the statement about this one here. 948 00:53:46,630 --> 00:53:52,990 When can we guarantee that our relaxation didn't matter? 949 00:53:52,990 --> 00:53:56,930 Despite our relaxation, our solution that we find that in 950 00:53:56,930 --> 00:54:00,110 the solution that we find lambda divides h. 951 00:54:00,110 --> 00:54:03,430 How can we guarantee this? 952 00:54:03,430 --> 00:54:04,860 So how can we guarantee this? 953 00:54:04,860 --> 00:54:06,110 How can we guarantee this? 954 00:54:06,110 --> 00:54:10,080 955 00:54:10,080 --> 00:54:20,310 Let's look at lambda xi yi minus h of xi. 956 00:54:20,310 --> 00:54:24,610 And we know this is 0 for all xi. 957 00:54:24,610 --> 00:54:25,860 We know that. 958 00:54:25,860 --> 00:54:29,210 959 00:54:29,210 --> 00:54:38,780 We know that this guy here can actually be written as ci plus 960 00:54:38,780 --> 00:54:43,630 ei minus h of xi. 961 00:54:43,630 --> 00:54:47,690 962 00:54:47,690 --> 00:54:50,040 This is just expanding this guy. 963 00:54:50,040 --> 00:55:00,790 We also know that we can write lambda xi times ci alone minus 964 00:55:00,790 --> 00:55:08,051 f of xi lambda xi. 965 00:55:08,051 --> 00:55:08,520 This is 0. 966 00:55:08,520 --> 00:55:10,932 We know that this is true too. 967 00:55:10,932 --> 00:55:12,780 AUDIENCE: For some f. 968 00:55:12,780 --> 00:55:13,320 PROFESSOR: For some f. 969 00:55:13,320 --> 00:55:17,220 The text is to f, so that this is true too. 970 00:55:17,220 --> 00:55:22,500 Then let's just subtract these two guys. 971 00:55:22,500 --> 00:55:25,480 Let's just subtract these two things here. 972 00:55:25,480 --> 00:55:36,460 And then we know that lambda xi times ei -- 973 00:55:36,460 --> 00:55:38,250 so the first two cancel -- 974 00:55:38,250 --> 00:55:51,646 minus h of xi minus So we know this is true too. 975 00:55:51,646 --> 00:55:53,550 AUDIENCE: [INAUDIBLE]. 976 00:55:53,550 --> 00:55:56,210 PROFESSOR: Yeah, sorry. 977 00:55:56,210 --> 00:55:57,460 Just in time. 978 00:55:57,460 --> 00:56:01,220 979 00:56:01,220 --> 00:56:02,480 So what can we learn from this? 980 00:56:02,480 --> 00:56:05,510 So what is the degree of this? 981 00:56:05,510 --> 00:56:07,780 What is the degree of this? 982 00:56:07,780 --> 00:56:09,570 Well, this guy here -- 983 00:56:09,570 --> 00:56:10,820 we'll write it somewhere else -- 984 00:56:10,820 --> 00:56:37,550 985 00:56:37,550 --> 00:56:47,320 well, this guy had degree h was less than n minus k plus 986 00:56:47,320 --> 00:56:57,310 degree lambda less than k plus degree lambda. 987 00:56:57,310 --> 00:57:00,760 That's because we set up that problem that way. 988 00:57:00,760 --> 00:57:10,740 And we know that this guy degree lambda. 989 00:57:10,740 --> 00:57:13,780 990 00:57:13,780 --> 00:57:15,740 We know that. 991 00:57:15,740 --> 00:57:28,390 So this whole thing, let's call it S. We know it's 0 for 992 00:57:28,390 --> 00:57:35,360 degree S less than degree lambda. 993 00:57:35,360 --> 00:57:39,080 994 00:57:39,080 --> 00:57:41,730 So why does that help us? 995 00:57:41,730 --> 00:57:44,740 Well, let's look at the vector. 996 00:57:44,740 --> 00:57:48,060 Now let's look at all the positions. 997 00:57:48,060 --> 00:57:53,380 Let's look at the vector where we had, in the vector, we have 998 00:57:53,380 --> 00:57:56,770 lambda xi ei. 999 00:57:56,770 --> 00:58:02,620 1000 00:58:02,620 --> 00:58:05,480 And now the fundamental question. 1001 00:58:05,480 --> 00:58:09,450 What is the rate of this vector? 1002 00:58:09,450 --> 00:58:10,700 At most? 1003 00:58:10,700 --> 00:58:13,400 1004 00:58:13,400 --> 00:58:15,147 What's the rate of this guy at most? 1005 00:58:15,147 --> 00:58:18,883 1006 00:58:18,883 --> 00:58:20,133 It's 12 seconds, [UNINTELLIGIBLE]? 1007 00:58:20,133 --> 00:58:25,740 1008 00:58:25,740 --> 00:58:28,860 Well, the rate of this vector -- 1009 00:58:28,860 --> 00:58:37,030 1010 00:58:37,030 --> 00:58:40,410 it's definitely not more than the rate of the error. 1011 00:58:40,410 --> 00:58:44,260 Because every time the error is 0, the rate drops out. 1012 00:58:44,260 --> 00:58:45,510 That's at most t. 1013 00:58:45,510 --> 00:58:48,890 1014 00:58:48,890 --> 00:58:52,660 What is the rate of this vector? 1015 00:58:52,660 --> 00:59:01,170 So here we have a vector on the other side, S of xi, a 1016 00:59:01,170 --> 00:59:04,240 vector on the other side. 1017 00:59:04,240 --> 00:59:05,490 What's the rate of this guy? 1018 00:59:05,490 --> 00:59:08,790 1019 00:59:08,790 --> 00:59:13,810 That's just the polynomial of degree at most k plus degree 1020 00:59:13,810 --> 00:59:15,640 lambda minus 1. 1021 00:59:15,640 --> 00:59:29,940 So we have that the rate of this vector is n minus k plus 1022 00:59:29,940 --> 00:59:35,617 degree lambda minus 1 plus 1 because of the minus. 1023 00:59:35,617 --> 00:59:39,230 AUDIENCE: Greater than or equal to? 1024 00:59:39,230 --> 00:59:41,660 PROFESSOR: It's greater than or equal, sorry. 1025 00:59:41,660 --> 00:59:43,580 Otherwise, I would have been in trouble in a second here. 1026 00:59:43,580 --> 00:59:46,350 1027 00:59:46,350 --> 00:59:47,800 Yeah, so what does that mean? 1028 00:59:47,800 --> 00:59:51,710 So actually, this one is nice to rewrite is equal to d n 1029 00:59:51,710 --> 00:59:55,865 minus t plus 1 d -- 1030 00:59:55,865 --> 01:00:00,320 I really should have done it like this in order not to -- 1031 01:00:00,320 --> 01:00:05,010 it's d minus degree lambda. 1032 01:00:05,010 --> 01:00:08,230 1033 01:00:08,230 --> 01:00:09,550 So what can we learn from that? 1034 01:00:09,550 --> 01:00:12,960 1035 01:00:12,960 --> 01:00:19,300 So we know this is true for all the positions. 1036 01:00:19,300 --> 01:00:24,060 So if this is true for all positions, then -- 1037 01:00:24,060 --> 01:00:30,070 so if d minus degree lambda -- 1038 01:00:30,070 --> 01:00:34,480 actually, this is t because the rate was defined. 1039 01:00:34,480 --> 01:00:37,250 t was the number of errors. 1040 01:00:37,250 --> 01:00:39,830 And the error locator was just defined to have degree t. 1041 01:00:39,830 --> 01:00:43,650 1042 01:00:43,650 --> 01:00:45,390 Right? 1043 01:00:45,390 --> 01:00:49,480 The error locator was just x minus xi over all positions 1044 01:00:49,480 --> 01:00:50,890 where we had an error, so there 1045 01:00:50,890 --> 01:00:51,950 are t of those positions. 1046 01:00:51,950 --> 01:00:55,550 The degree of lambda is equal to t. 1047 01:00:55,550 --> 01:00:56,490 So now we take this. 1048 01:00:56,490 --> 01:01:07,410 If d minus t is greater than t, so if the rate of this 1049 01:01:07,410 --> 01:01:13,720 vector is greater than the rate of this vector, then we 1050 01:01:13,720 --> 01:01:18,030 have a problem because that cannot be. 1051 01:01:18,030 --> 01:01:19,840 Of course, by this identity, the rate of these 1052 01:01:19,840 --> 01:01:22,520 two vectors is equal. 1053 01:01:22,520 --> 01:01:23,770 So what is the way out? 1054 01:01:23,770 --> 01:01:26,660 1055 01:01:26,660 --> 01:01:27,550 What's the way out? 1056 01:01:27,550 --> 01:01:28,800 AUDIENCE: [INAUDIBLE] 1057 01:01:28,800 --> 01:01:33,286 1058 01:01:33,286 --> 01:01:33,770 PROFESSOR: Yeah. 1059 01:01:33,770 --> 01:01:53,090 So if this is true, then S of xi I claim has to be 0 and 1060 01:01:53,090 --> 01:02:01,100 lambda of xi times ei has to be 0 too for all i. 1061 01:02:01,100 --> 01:02:03,860 1062 01:02:03,860 --> 01:02:06,460 That's the only way out of this. 1063 01:02:06,460 --> 01:02:08,760 Because, obviously, this was allowed. 1064 01:02:08,760 --> 01:02:11,760 If we really did find what we wanted to find, namely, an 1065 01:02:11,760 --> 01:02:15,530 error locator here, then this vector -- 1066 01:02:15,530 --> 01:02:17,410 we said it has to be less than t. 1067 01:02:17,410 --> 01:02:18,570 It can be less. 1068 01:02:18,570 --> 01:02:22,460 In particular, it can be 0 if this is, 1069 01:02:22,460 --> 01:02:24,710 indeed, an error locator. 1070 01:02:24,710 --> 01:02:28,820 And if our relaxation didn't matter -- 1071 01:02:28,820 --> 01:02:34,800 that means the h that we find factors as that -- 1072 01:02:34,800 --> 01:02:38,480 if the relaxation didn't matter, then S would be 0 too. 1073 01:02:38,480 --> 01:02:39,830 So that is a fair solution. 1074 01:02:39,830 --> 01:02:41,970 That's a possibility. 1075 01:02:41,970 --> 01:02:48,450 And if d minus t is greater than t, then this proves this 1076 01:02:48,450 --> 01:02:51,300 is the only solution that is feasible. 1077 01:02:51,300 --> 01:02:54,180 That's the only solution you have. 1078 01:02:54,180 --> 01:03:03,480 So what that means is if t less than t/2, then the 1079 01:03:03,480 --> 01:03:20,040 relaxation doesn't matter and h of xi is equal to lambda of 1080 01:03:20,040 --> 01:03:21,568 xi times f of xi. 1081 01:03:21,568 --> 01:03:32,600 1082 01:03:32,600 --> 01:03:35,040 So is that clear? 1083 01:03:35,040 --> 01:03:44,380 That's two very simple, yet nice ways to prove things. 1084 01:03:44,380 --> 01:03:45,750 Here, we guarantee the solution. 1085 01:03:45,750 --> 01:03:49,450 1086 01:03:49,450 --> 01:03:51,610 Here, we guarantee the solution. 1087 01:03:51,610 --> 01:03:55,330 Here, we guarantee that solution is correct, namely, 1088 01:03:55,330 --> 01:03:59,760 if not too many errors happen, if less than t/2 errors 1089 01:03:59,760 --> 01:04:06,370 happens, then relaxing the original problem here to this 1090 01:04:06,370 --> 01:04:08,360 other form, which we could solve, does 1091 01:04:08,360 --> 01:04:11,690 not change the solution. 1092 01:04:11,690 --> 01:04:12,940 That's what's proved there. 1093 01:04:12,940 --> 01:04:16,960 1094 01:04:16,960 --> 01:04:21,270 But about one-third looks puzzled. 1095 01:04:21,270 --> 01:04:23,130 About half looks puzzled, I would think. 1096 01:04:23,130 --> 01:04:29,490 1097 01:04:29,490 --> 01:04:30,900 Half looks puzzled. 1098 01:04:30,900 --> 01:04:33,870 Is there any way I can explain that better? 1099 01:04:33,870 --> 01:04:35,120 Think. 1100 01:04:35,120 --> 01:04:42,790 1101 01:04:42,790 --> 01:04:46,980 Let's just go through the steps quickly. 1102 01:04:46,980 --> 01:04:50,640 We had problem number one. 1103 01:04:50,640 --> 01:04:56,350 Problem number one, which is a nonlinear problem, but you see 1104 01:04:56,350 --> 01:04:59,170 that if you could solve this, you could solve 1105 01:04:59,170 --> 01:05:01,800 the decoding problem. 1106 01:05:01,800 --> 01:05:03,760 So you see that. 1107 01:05:03,760 --> 01:05:06,760 Anybody who doesn't see that? 1108 01:05:06,760 --> 01:05:07,090 All right. 1109 01:05:07,090 --> 01:05:08,340 You're smart guys. 1110 01:05:08,340 --> 01:05:11,130 1111 01:05:11,130 --> 01:05:13,740 If we can solve problem number one, we are home free. 1112 01:05:13,740 --> 01:05:15,300 We have solved the decoding problem. 1113 01:05:15,300 --> 01:05:16,270 Fine, we cannot solve it. 1114 01:05:16,270 --> 01:05:17,640 It's a nonlinear problem. 1115 01:05:17,640 --> 01:05:21,110 Well, we can solve it in exponential time, but that's 1116 01:05:21,110 --> 01:05:23,410 little fun. 1117 01:05:23,410 --> 01:05:24,320 So we relax it. 1118 01:05:24,320 --> 01:05:28,730 We relax it into problem number two. 1119 01:05:28,730 --> 01:05:31,444 All that we do, we multiply things out. 1120 01:05:31,444 --> 01:05:37,510 And we do not require, once we solve the 1121 01:05:37,510 --> 01:05:38,760 problem, this anymore. 1122 01:05:38,760 --> 01:05:46,530 1123 01:05:46,530 --> 01:05:48,490 Now we have solved this problem. 1124 01:05:48,490 --> 01:05:51,520 We have solved this linear system of equations. 1125 01:05:51,520 --> 01:05:59,640 And after doing so, we have found lambda and h. 1126 01:05:59,640 --> 01:06:02,470 They are lying on the table and looking at us. 1127 01:06:02,470 --> 01:06:03,610 Now what? 1128 01:06:03,610 --> 01:06:04,820 Are they any good? 1129 01:06:04,820 --> 01:06:08,950 In particular, since a priori we cannot guarantee that this 1130 01:06:08,950 --> 01:06:13,170 relaxation didn't completely destroy everything. 1131 01:06:13,170 --> 01:06:14,410 We have solved the system. 1132 01:06:14,410 --> 01:06:17,040 Now those two things are lying on the table, looking at us, 1133 01:06:17,040 --> 01:06:19,650 and asking, what am I? 1134 01:06:19,650 --> 01:06:23,380 And in general, if there's an arbitrary amount of errors 1135 01:06:23,380 --> 01:06:27,430 happening near the channel, actually, 1136 01:06:27,430 --> 01:06:29,340 they do not mean much. 1137 01:06:29,340 --> 01:06:32,900 They do not mean much. 1138 01:06:32,900 --> 01:06:38,286 But now I claim that, well, if not too many errors happened, 1139 01:06:38,286 --> 01:06:43,490 but if the number of errors is bounded to be this, less than 1140 01:06:43,490 --> 01:06:47,610 half the minimum distance, then, actually, I claim it did 1141 01:06:47,610 --> 01:06:49,870 not matter if we solved the relaxation or 1142 01:06:49,870 --> 01:06:52,260 the original problem. 1143 01:06:52,260 --> 01:06:55,880 And the argument is roughly this. 1144 01:06:55,880 --> 01:06:58,135 It goes like this. 1145 01:06:58,135 --> 01:06:59,890 Here, we start. 1146 01:06:59,890 --> 01:07:01,460 We have solved this. 1147 01:07:01,460 --> 01:07:06,370 We have two polynomials lambda and h, so that this is true 1148 01:07:06,370 --> 01:07:07,620 for all xi. 1149 01:07:07,620 --> 01:07:10,380 1150 01:07:10,380 --> 01:07:12,440 We know that we can write it like this. 1151 01:07:12,440 --> 01:07:15,290 That's just by definition of yi, just 1152 01:07:15,290 --> 01:07:18,980 expanding the yi into this. 1153 01:07:18,980 --> 01:07:22,400 We know that this is true by the definition of the code. 1154 01:07:22,400 --> 01:07:27,500 The ci is the evaluation of f, of some polynomial f. 1155 01:07:27,500 --> 01:07:31,770 So we can write this just by definition of the code. 1156 01:07:31,770 --> 01:07:36,430 So once we have these two guys here, we can subtract them 1157 01:07:36,430 --> 01:07:37,680 [UNINTELLIGIBLE] here. 1158 01:07:37,680 --> 01:07:39,930 1159 01:07:39,930 --> 01:07:44,500 So we know that we have solved the following problem. 1160 01:07:44,500 --> 01:07:49,000 We have found lambda and h. 1161 01:07:49,000 --> 01:07:57,580 So that there is guaranteed to exist the polynomial f, so 1162 01:07:57,580 --> 01:08:02,580 that this whole thing, namely, S of xi, that S is a 1163 01:08:02,580 --> 01:08:04,470 polynomial of degree at most -- 1164 01:08:04,470 --> 01:08:06,130 what did we have -- 1165 01:08:06,130 --> 01:08:09,790 k plus degree lambda minus 1. 1166 01:08:09,790 --> 01:08:12,880 1167 01:08:12,880 --> 01:08:18,550 So that's a semi-hairy step here. 1168 01:08:18,550 --> 01:08:24,700 Is that clear that we can guarantee the existence of a 1169 01:08:24,700 --> 01:08:34,340 polynomial S of degree at most k plus degree lambda minus 1? 1170 01:08:34,340 --> 01:08:38,320 So that this equation holds. 1171 01:08:38,320 --> 01:08:43,229 1172 01:08:43,229 --> 01:08:45,609 Once we have solved this, we can guarantee the 1173 01:08:45,609 --> 01:08:46,890 existence of this. 1174 01:08:46,890 --> 01:08:48,939 That's what we're saying. 1175 01:08:48,939 --> 01:08:51,029 We can guarantee the existence of this. 1176 01:08:51,029 --> 01:08:53,819 So now look at this. 1177 01:08:53,819 --> 01:08:58,319 If you write this out for all i's and put it in a vector, 1178 01:08:58,319 --> 01:09:00,620 what's the rate of this vector? 1179 01:09:00,620 --> 01:09:05,630 Well, it's at most t because all the other e's are 0. 1180 01:09:05,630 --> 01:09:08,890 If lambda is an error locator, it is 0. 1181 01:09:08,890 --> 01:09:10,740 But we do not know that yet. 1182 01:09:10,740 --> 01:09:12,330 All we know, it's at most t. 1183 01:09:12,330 --> 01:09:15,149 1184 01:09:15,149 --> 01:09:18,939 This is on this side, so that vector has a rate at most t. 1185 01:09:18,939 --> 01:09:25,660 On this side, the rate of this vector is at least this. 1186 01:09:25,660 --> 01:09:28,939 Just by evaluating a polynomial of this degree, 1187 01:09:28,939 --> 01:09:31,193 this is the maximum number of 0's we can get. 1188 01:09:31,193 --> 01:09:34,350 1189 01:09:34,350 --> 01:09:41,740 So now we have two equalities, this one and this one. 1190 01:09:41,740 --> 01:09:45,330 But obviously, the two vectors must be the same. 1191 01:09:45,330 --> 01:09:49,880 So how can these two vectors be the same and still satisfy 1192 01:09:49,880 --> 01:09:53,250 these two inequalities? 1193 01:09:53,250 --> 01:09:53,950 Good question. 1194 01:09:53,950 --> 01:09:56,320 How can they be the same and still satisfy this inequality? 1195 01:09:56,320 --> 01:10:10,720 1196 01:10:10,720 --> 01:10:15,070 If t is less than d/2, then the rate of this vector would 1197 01:10:15,070 --> 01:10:18,000 have to be larger than the rate of this. 1198 01:10:18,000 --> 01:10:19,250 If they are non-zero. 1199 01:10:19,250 --> 01:10:22,530 1200 01:10:22,530 --> 01:10:25,030 If they are non-zero, this would have to be larger than 1201 01:10:25,030 --> 01:10:30,250 this because then d minus t would be greater than t. 1202 01:10:30,250 --> 01:10:32,340 If this is true, this implies this. 1203 01:10:32,340 --> 01:10:36,890 1204 01:10:36,890 --> 01:10:40,980 If this is true, this implies this which implies that the 1205 01:10:40,980 --> 01:10:44,270 rate of this vector would be larger than the rate of this 1206 01:10:44,270 --> 01:10:45,670 vector if they are non-zero. 1207 01:10:45,670 --> 01:10:48,840 1208 01:10:48,840 --> 01:10:50,890 But how can that be? 1209 01:10:50,890 --> 01:10:53,210 Answer is cannot. 1210 01:10:53,210 --> 01:10:56,080 Cannot be, hence, they must be 0. 1211 01:10:56,080 --> 01:11:00,150 Both vectors must be 0 completely, which means this 1212 01:11:00,150 --> 01:11:02,250 is an error locator. 1213 01:11:02,250 --> 01:11:08,180 Because otherwise, this wouldn't be 0, and this one -- 1214 01:11:08,180 --> 01:11:09,430 where did I write it? 1215 01:11:09,430 --> 01:11:11,910 1216 01:11:11,910 --> 01:11:13,160 Somewhere I wrote it. 1217 01:11:13,160 --> 01:11:18,640 1218 01:11:18,640 --> 01:11:21,292 Where did I write it? 1219 01:11:21,292 --> 01:11:22,750 Oh, here. 1220 01:11:22,750 --> 01:11:27,300 So this S has to be 0 too. 1221 01:11:27,300 --> 01:11:33,640 If this S is 0, then h of xi is exactly this, means factors 1222 01:11:33,640 --> 01:11:36,870 in the way you want it to. 1223 01:11:36,870 --> 01:11:40,270 So that's all I can say. 1224 01:11:40,270 --> 01:11:43,810 I could say it again, but it's exactly the same words. 1225 01:11:43,810 --> 01:11:47,324 And there's a limited benefit to even the repetition code. 1226 01:11:47,324 --> 01:11:50,290 1227 01:11:50,290 --> 01:11:51,880 So beautiful, right? 1228 01:11:51,880 --> 01:11:54,750 We have brought down the entire decoding problem for 1229 01:11:54,750 --> 01:12:01,300 Reed-Solomon codes to solving a linear system of equations, 1230 01:12:01,300 --> 01:12:06,940 namely, this one here or this one in short form, which, 1231 01:12:06,940 --> 01:12:11,130 well, it's no problem at all in the grand scheme of things. 1232 01:12:11,130 --> 01:12:13,250 And that's the other thing that makes Reed-Solomon codes 1233 01:12:13,250 --> 01:12:14,080 so beautiful. 1234 01:12:14,080 --> 01:12:17,674 They're access encoding, they're access decoding, 1235 01:12:17,674 --> 01:12:19,370 they're everything that we want. 1236 01:12:19,370 --> 01:12:35,380 1237 01:12:35,380 --> 01:12:38,660 Let me do one more thing about the decoding just to bring it 1238 01:12:38,660 --> 01:12:42,850 down a little bit, to talk a little bit about complexity. 1239 01:12:42,850 --> 01:12:50,560 Solving this linear system of equations has been subject to 1240 01:12:50,560 --> 01:12:56,850 research for 30 years, 40 years. 1241 01:12:56,850 --> 01:13:01,520 So it started out with an algorithm which essentially 1242 01:13:01,520 --> 01:13:04,976 solved that linear system directly. 1243 01:13:04,976 --> 01:13:08,030 It was formulated a bit different, but 1244 01:13:08,030 --> 01:13:08,680 that's what it is. 1245 01:13:08,680 --> 01:13:08,980 It's called the 1246 01:13:08,980 --> 01:13:10,750 Peterson-Gorenstein-Zierler algorithm. 1247 01:13:10,750 --> 01:13:14,560 1248 01:13:14,560 --> 01:13:20,850 They realized it was a polynomial time decoding 1249 01:13:20,850 --> 01:13:23,500 algorithm, a nice decoding algorithm. 1250 01:13:23,500 --> 01:13:24,060 Then Berlekamp -- 1251 01:13:24,060 --> 01:13:25,320 I should write down the name. 1252 01:13:25,320 --> 01:13:30,190 1253 01:13:30,190 --> 01:13:31,760 Berlekamp came up with a fast 1254 01:13:31,760 --> 01:13:33,420 algorithm and square algorithm. 1255 01:13:33,420 --> 01:13:40,030 1256 01:13:40,030 --> 01:13:44,700 Massey had his own formulation of that algorithm, which was a 1257 01:13:44,700 --> 01:13:46,095 bit more streamlined I think. 1258 01:13:46,095 --> 01:13:48,810 1259 01:13:48,810 --> 01:13:53,020 Then there was a later version, Berlekamp-Welch. 1260 01:13:53,020 --> 01:13:58,230 1261 01:13:58,230 --> 01:14:01,070 The complexity of these algorithms is all roughly the 1262 01:14:01,070 --> 01:14:03,920 same, is all n squared roughly, 1263 01:14:03,920 --> 01:14:06,430 which solved this here. 1264 01:14:06,430 --> 01:14:08,910 And then there's roughly nothing 1265 01:14:08,910 --> 01:14:10,280 happening for 30 years. 1266 01:14:10,280 --> 01:14:13,170 1267 01:14:13,170 --> 01:14:21,630 And after 30 years, then Madhu Sudan made the next serious 1268 01:14:21,630 --> 01:14:25,820 dent in the decoding history of Reed-Solomon codes. 1269 01:14:25,820 --> 01:14:32,885 So he found a way to solve this problem even beyond half 1270 01:14:32,885 --> 01:14:35,700 the minimum distance. 1271 01:14:35,700 --> 01:14:41,230 And in hindsight, it's a very nice and very simple trick 1272 01:14:41,230 --> 01:14:42,480 that he used. 1273 01:14:42,480 --> 01:14:46,160 1274 01:14:46,160 --> 01:14:54,945 So we started with the following. 1275 01:14:54,945 --> 01:15:03,490 We started that, well, if we have no errors, then the pairs 1276 01:15:03,490 --> 01:15:13,110 of points xi, yi lie on this curve. 1277 01:15:13,110 --> 01:15:16,940 That's another way to formulate what we said that yi 1278 01:15:16,940 --> 01:15:20,760 minus f of xi has to be 0. 1279 01:15:20,760 --> 01:15:23,480 We said, well, if there are no errors, all the points that we 1280 01:15:23,480 --> 01:15:26,260 receive lie on this curve. 1281 01:15:26,260 --> 01:15:31,300 Because there are errors, we have to multiply this with an 1282 01:15:31,300 --> 01:15:39,570 error locator and say this is 0 for all xi, yi. 1283 01:15:39,570 --> 01:15:41,430 So this was problem number one. 1284 01:15:41,430 --> 01:15:57,280 The relaxed form was lambda xy minus h of x 0 xi, yi. 1285 01:15:57,280 --> 01:15:59,270 That's the way we do it. 1286 01:15:59,270 --> 01:16:00,690 So what did Madhu do? 1287 01:16:00,690 --> 01:16:01,330 Very clever. 1288 01:16:01,330 --> 01:16:06,490 He said, all that we have to do is annihilate the effect of 1289 01:16:06,490 --> 01:16:09,380 the error right in this. 1290 01:16:09,380 --> 01:16:12,070 The whole reason for that lambda was to annihilate -- 1291 01:16:12,070 --> 01:16:16,270 so to take out the error influence out of this 1292 01:16:16,270 --> 01:16:20,800 interpolation formula, to allow for a few errors to 1293 01:16:20,800 --> 01:16:23,180 happen, which we can put in lambda. 1294 01:16:23,180 --> 01:16:27,520 Well, Madhu said, well, what about we take a polynomial in 1295 01:16:27,520 --> 01:16:28,770 two variables? 1296 01:16:28,770 --> 01:16:30,570 1297 01:16:30,570 --> 01:16:36,790 A polynomial in two variables, then same thing. 1298 01:16:36,790 --> 01:16:43,030 If no errors happen, then all the points xi, yi will lie on 1299 01:16:43,030 --> 01:16:44,580 that curve. 1300 01:16:44,580 --> 01:16:50,690 If a few errors happen, then let's find a lambda xy, two 1301 01:16:50,690 --> 01:16:55,790 variables of some minimal degree, some very small degree 1302 01:16:55,790 --> 01:16:57,715 so that this is still satisfied. 1303 01:16:57,715 --> 01:17:02,082 1304 01:17:02,082 --> 01:17:04,420 And the problem is entirely the same. 1305 01:17:04,420 --> 01:17:07,820 1306 01:17:07,820 --> 01:17:12,420 And this one, you cannot solve either. 1307 01:17:12,420 --> 01:17:14,160 You cannot solve either. 1308 01:17:14,160 --> 01:17:19,950 But again, you can solve the relaxation minus -- 1309 01:17:19,950 --> 01:17:27,550 1310 01:17:27,550 --> 01:17:29,280 again, you can solve the relaxation. 1311 01:17:29,280 --> 01:17:31,890 This is, again, a linear system of equations. 1312 01:17:31,890 --> 01:17:33,830 And the coefficients of lambda and psi now. 1313 01:17:33,830 --> 01:17:36,960 1314 01:17:36,960 --> 01:17:40,020 Once you solve this linear system of equations -- 1315 01:17:40,020 --> 01:17:43,565 actually, this one you can more handily write simply -- 1316 01:17:43,565 --> 01:17:46,270 now there is no way to distinguish the y anymore 1317 01:17:46,270 --> 01:17:50,090 since both sides anyway depend on y. 1318 01:17:50,090 --> 01:17:56,590 Find a polynomial in two variables such that this is 0 1319 01:17:56,590 --> 01:17:59,930 for all xi, yi. 1320 01:17:59,930 --> 01:18:02,030 This is his central problem. 1321 01:18:02,030 --> 01:18:03,160 This is his relaxation. 1322 01:18:03,160 --> 01:18:05,350 Find a polynomial in two variables, which he 1323 01:18:05,350 --> 01:18:06,600 evaluates to 0. 1324 01:18:06,600 --> 01:18:09,140 1325 01:18:09,140 --> 01:18:15,440 And then he has, essentially, the same proofs we have here, 1326 01:18:15,440 --> 01:18:20,360 a bit more technical, but not much. 1327 01:18:20,360 --> 01:18:22,710 I'm sure you can come up with this if you sit down at home. 1328 01:18:22,710 --> 01:18:26,930 1329 01:18:26,930 --> 01:18:27,610 Let's put it like this. 1330 01:18:27,610 --> 01:18:29,180 There's no heavy machinery in it. 1331 01:18:29,180 --> 01:18:30,870 There's no heavy math in it. 1332 01:18:30,870 --> 01:18:33,710 There's a lot of being clever in it, but there's no heavy 1333 01:18:33,710 --> 01:18:34,960 math in it. 1334 01:18:34,960 --> 01:18:40,690 1335 01:18:40,690 --> 01:18:52,280 He can now guarantee that q of xy, if t is less than n minus 1336 01:18:52,280 --> 01:18:55,700 square root of 2k -- 1337 01:18:55,700 --> 01:18:57,570 is that right -- 1338 01:18:57,570 --> 01:19:06,280 2kn, then you can guarantee that y minus fx is 1339 01:19:06,280 --> 01:19:09,420 a factor q of xy. 1340 01:19:09,420 --> 01:19:12,736 The same thing we wanted to guarantee. 1341 01:19:12,736 --> 01:19:19,170 And like I said, the proof is very clever, but no heavy 1342 01:19:19,170 --> 01:19:19,830 machinery in it. 1343 01:19:19,830 --> 01:19:22,176 It's no heavy algebraic geometry or any of 1344 01:19:22,176 --> 01:19:23,426 this stuff in that. 1345 01:19:23,426 --> 01:19:25,940 1346 01:19:25,940 --> 01:19:29,110 It's high school algebra. 1347 01:19:29,110 --> 01:19:34,200 Well, freshman college algebra. 1348 01:19:34,200 --> 01:19:35,460 So that's what happens here. 1349 01:19:35,460 --> 01:19:39,056 1350 01:19:39,056 --> 01:19:41,310 It took 30 years and a computer scientist to solve 1351 01:19:41,310 --> 01:19:42,560 that problem. 1352 01:19:42,560 --> 01:19:50,380 1353 01:19:50,380 --> 01:19:55,110 That was not all I wanted to say, but that's 1354 01:19:55,110 --> 01:19:57,425 all I have time for. 1355 01:19:57,425 --> 01:19:59,720 There's one minute left, so there's no point in starting 1356 01:19:59,720 --> 01:20:01,060 something now. 1357 01:20:01,060 --> 01:20:02,603 Do you have any questions about any of this? 1358 01:20:02,603 --> 01:20:08,882 1359 01:20:08,882 --> 01:20:14,640 I should say that this 2 one can get rid of, but that takes 1360 01:20:14,640 --> 01:20:15,890 a little bit more machinery. 1361 01:20:15,890 --> 01:20:18,330 1362 01:20:18,330 --> 01:20:20,785 The 2 one can get rid of, but that's a bit more heavy. 1363 01:20:20,785 --> 01:20:24,544 1364 01:20:24,544 --> 01:20:25,040 All right. 1365 01:20:25,040 --> 01:20:27,530 So thanks so much. 1366 01:20:27,530 --> 01:20:28,910 That's it. 1367 01:20:28,910 --> 01:20:30,160 That's it. 1368 01:20:30,160 --> 01:20:36,948