字幕表 動画を再生する 英語字幕をプリント The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high-quality educational resources for free. To make a donation or view additional materials from hundreds of MIT courses, visit MIT OpenCourseWare at ocw.mit.edu. PROFESSOR: Now generally speaking, a proof is going to have seven characteristics that you want to keep in mind. Good proofs are correct-- that's obviously important-- complete-- you've got to have all the details there. All of the key steps have to be there. They should be clear so we can understand what's going on. Brief is good. You don't want to crush somebody with all the details. You want to get to the key points, and be crisp. It's really nice if they're elegant. Now, that means clever. It's the mathematician's notion of beauty. Like you go to the art museum, and the artists will say, wow, that's a beautiful painting. In mathematics, you say, wow, that's an elegant proof. It's crisp, clever, short, to the point. And it's really the highest compliment you can get from a mathematician, anyway. And there's a lot of judgment that goes into that. Just like in art-- there's judgment over what is great art. The proof should be well organized. For example, use lemmas the same way you would use subroutines in writing code-- helps to make it clear. And the proof should be in order. Sometimes you'll see proofs where things are done in a haphazard fashion. All the pieces are there, but they're in the wrong order. Sometimes-- and they teach this in some high schools-- they teach you to do proofs backwards. And the classic thing there is, say you're trying to prove a equals b. Well, the proof sometimes will start with what you're trying to prove. And then they'll do a bunch of steps. And then you'll end up with 1 equals 1, and you'll write a check, because you went from a equals b to 1 equals 1. And that's, of course, true. Now, that's not a good thing to do. It can be correct if the implications go this way. Because really, you're starting with a fact-- 1 equals 1-- and deriving a equals b. So if, in fact, the implications work this way, then your proof is right. But most people, especially as you get farther along, think about it going from top to bottom. So don't use this technique, because it'll confuse people. You're liable to make a mistake. Just start with 1 equals 1 and work your way from there-- top down for being in order. Now, good proofs are very much like good code. In fact, one of the reasons we care so much about teaching you how to write a good proof in computer science is so that later on, you'll be able to prove that your programs are doing what you expect-- what they're supposed to do. Now, there are many famous examples where programs did not do what they were supposed to do, with disastrous consequences. The Airbus A300 was one of the first commercial jets totally operated by software. It could take off, fly, and land totally by software. It was a major advance in the airline industry. The only problem was, that on one of the first flights of the A300, the software accidentally opened the rear door just before landing. And the plane crashed as a result. It was the first plane crash in commercial history because of a software bug. There's a famous radiation device for cancer patients called the Therac-25. It's famous because it got into a race condition occasionally, which caused the device to just slam the patient with radiation-- so much so, it killed the patient. And they had multiple examples of this, and of course, a lot of lawsuits afterwards. How many of you all remember the 2000 election? A few of you do. OK, this will probably be the last class that remembers that. But that's where Al Gore was going up against George Bush-- very close election-- all came down to recounting the votes in Florida. But in fact, Al Gore got negative 16,000 votes in one county because of a software bug in the electronic voting booths, which I think they got rid of a lot of them in the election after that. Because the software was buggy. So poor Al had enough problem which chads and funny business in Florida. But getting negative 16,000 votes certainly didn't help his chances. Several years ago, a single faulty command in a computer system used by United and American Airlines grounded the entire fleets to both airlines for close to a day. Because they couldn't do anything. They're all run by computer, and the whole thing was screwed up. So there's lots more examples. We run into this issue all the time at Akamai. Akamai is a company started by MIT folks-- by myself, and Danny Lewin, and a dozen undergrads in the late 1990s. And we deliver a lot of the content you get on the web-- Facebook, all the search engines. A lot of the stuff you go to comes from our servers. So we've got to be very careful that we don't have software bugs. Now, in fact we do. And we catch them every once in awhile. But if we got a bad one, it would bring down all the sites you go to you. You wouldn't be able to go to those sites anymore. And everybody would notice. It would be sort of embarrassing. Now, this really does matter. And this is going to sound a little scary, but someday-- probably 30, 20 years from now, somewhere in there-- it's possible that all of us, our lives may depend on the software that some of you write. In fact, to bring this home how scary it is, look at the person sitting next to you. And imagine that in 25 years, your life depends on whether their code does what it's supposed to do-- little scary. That's why we are very motivated to help you learn how to make rock-solid arguments, so you don't have code that fries one of your classmates someday, or puts him in a bad plane situation. Now unfortunately, writing rock-solid proofs is a very hard thing to do. Even the world's best mathematicians mess them up on a regular basis. In fact, it's estimated that one third of all published proofs have bugs, have flaws, that render the proof incorrect. The trouble often arises because we get lazy. We don't write down all the details or all the steps. Because, wow, it's clear. Let's just move on. Now, this can be OK. Not such a good practice, but it dramatically increases the chances of making a mistake. And there's some very famous examples in the math literature from the world's most famous mathematicians. Gauss-- and we'll talk about Gauss later during the term-- he's one of the most famous mathematicians ever. He wrote his PhD thesis in 1799. And it's usually referred to as the first rigorous proof of the fundamental theorem of algebra. And that says that every polynomial has a 0 over the complex numbers-- something probably a lot of you learned in high school. You get a polynomial. You can find roots of the polynomial over the complex numbers. But his thesis contains the following quote, "If a branch of an algebraic curve enters a bounded region, it must necessarily leave again. Nobody, to my knowledge, has ever doubted this fact." Warning signs-- buzzers-- should be going off in your brain. "But if anybody desires it, then on another occasion, I intend to give a demonstration which will leave no doubt." So he's using something that he believes to be true. He sort of thinks it's clear, that everybody knows it. But he writes this down. And when you're writing that down, you know there's a problem. And in fact, there's another Fields medalist-- we talked about Fields medals last week-- Stephen Smale writes that this was an immense gap in the proof that was not filled until 1920-- more than 100 years later. So Gauss never could give the proof, and nobody did for over a century more. Remember the Poincare conjecture from last week? We had Colbert talking about that. In 1900, Poincare claimed it was a simple fact. Four years later, he decided it wasn't so simple, and he demoted his claim to the status of a conjecture. And of course, this became the famous Poincare conjecture, which took another century to solve. So when you think you see yourself doing this, famous mathematicians do it too, and it catches them. So you want to not try to do that. Now, in fact, just to really bring home the point, we've made a top 10 list of proof techniques you should not use in 6.042. So everybody go to the handout here. In fact, there's lot of them on the back, too, but on the front page, there's the top 10. So we're going to go through these. These are the ones we've most observed in 6.042 over the years. Number 10-- proof by throwing in the kitchen sink. The author writes down every theorem known to mankind, and then adds a few more for good measure. Now, this is good, because when you're questioned later-- you're trying to get a better score on your exam-- you say, look, the proof contains all the key facts. They're all here. And so that does help. You get extra credit if all the facts are there. We are literally seen students copy over their crib sheet, if they got enough time, for a problem they're not knowing how to solve, just to get all of the facts in there. Number nine-- proof by example-- the author gives the case n equals 2 and suggests it contains most of the ideas of the general proof. In fact, a student before a class was telling me on one of the homework problems, he talked about it to his non-math friends, and they gave examples, not the proof. Number eight-- proof by vigorous hand-waving-- one of my favorites-- I get up here and wave my hands. And it must be true. Number seven-- proof by cumbersome notation-- here the reader gets hopelessly confused, gives up, and says OK. In fact, I once had a grad student, and we called him the encryptor, because he could take the simplest proof and so encrypt it in notation and God knows what, you could never understand the proof and figure out if it was really right or wrong. That goes well with number six-- proof by exhaustion-- so does throwing in the kitchen sink. Number five-- proof by omission-- you will see that a lot, also by faculty-- "The reader may easily supply the details. The other cases are analogous-- trivial." Experts use that all the time. You can find a lot of my papers online. "The proof is trivial"-- very bad. Every once in a while, it turned out not to be so trivial. Number four-- proof by picture-- we've seen those, saw one on Tuesday. Number three-- proof by vehement assertion-- sort of like the hand-waving. The more forceful you are in your argument, the higher you raise your voice, the more intimidating you become, doesn't make it more true. Number two-- proof by appeal to intuition-- you say, "any moron knows that." Well, you're sort of reluctant to now question it. And then number one-- proof by reference to eminent authority. I saw Fermat on the elevator and he said he had a proof. I don't think so. Fermat's been dead for over 300 years. And he was not so reliable in the first place. In fact, he has one of the most famous assertions that turned into a conjecture, called Fermat's last theorem. And it was not really a theorem by the time he died. How many people have heard of Fermat's last theorem? Raise your hand. Yeah, pretty famous. It's the one theorem he proved that actually, he didn't prove. It says, for all n bigger than 2, there does not exist an x, y, and z in the natural numbers plus the positive natural numbers such that x to the n plus y to the n equals z to the n. Now of course, for n equals 2, that's just the Pythagorean theorem. You can find three, four, and five, when you square them satisfy that. But it says this does not work for any higher value, any higher power, than 2. Now in 1637, Fermat wrote in the margin of a block that he had discovered a proof of this result, but the proof was too long to fit in the margin. And so he wasn't going to supply the details there. And he never did supply the details. And it took 350 years and 100s and 100s of pages. A fellow named Andrew Wiles-- took him personally over 10 years. He more or less locked himself in his room for 10 years, produced 100s of pages, and he finally did prove Fermat's Last Theorem. So Fermat was right about one thing-- it would not fit in the margin. At least, there's no proof that we know of that would fit in the margin of a book. Any questions on proof technique? We're going to pound a lot on this over the next few weeks. All right, next we're going to look at a class of puzzles that was very popular in the late 1800s. Now, in these puzzles, you have a grid of letters or numbers. And you've got to slide the letters and numbers around to put them in order. And so as an example, here's the problem on a three by three grid, or an eight puzzle. You want to find a sequence of moves to go from this configuration. I'll do a three by three case. I have a here, b here, c, d, e, f. And I've put g and h out of order. And that square is blank, and I can move tiles or letters into it. I'm going to start here. And I eventually want to get to the configuration where the letters are all in alphabetical order. So g and h are in order. Now, a legal move means you slide a letter into an adjacent blank square. And you can go in a row or a column. OK, everybody understand the game, what you're supposed to do? You slide these things. That could go down. That could go across. How many people played a game like this before? Good, a lot of you. OK, so I need some volunteers who are good at solving puzzles that can do this, have played games like this, that are pretty quick at it. So I've got it here. Who would like to come down? There are prizes if you can solve this. What we're going to do is solve this. And see if you can solve it in three minutes. But I need three students to come on down and do this. Who'd like to volunteer? Who thinks they can handle puzzles under pressure? So you have the g and h out of order. So it's not so hard. You move the f down there. I don't know, play around like that. So I need some volunteers. Who'd like to come down and do this? You can win candy. I've got candy here. There's even a prize if you don't make it in three minutes. Who wants some candy? Nobody? Is there a prize if we don't make it? What's that? Is there a prize if we don't make it? There is. Come on down. All right, now, who's going to help him out? I need a couple more people here just to mess him up, because by himself-- there we go-- good. Anybody else like to come on down? Because if we get three, it really gets hard, because you fight over what moves to make. Now, what I'd like you all to do is sort of scream out possibilities for him. Like he figures it out there, you scream out, that'll really screw him up. OK, now, you can't pick them up. You've just got to slide them around. And you can go, and we'll go to 2:56, and see if you can solve it. If you can solve it, you guys get candy. And if you can figure it out out there, let them know. Slide to the gray area. No, you can't use the gray area. All right, you've got about two minutes. They have the g and h in order. Everything else is pretty well screwed up, though. What do you got? A, b, c, d, e, f, h g-- no, no, no, that's where you started, guys. That's not it. It was close, just one was out of order is all. Just one letter at a time. There you go. I think they need help. We got about a minute ago. Cannot see anything. You can't see anything. Well, I don't know if it would help. You want to show them where you are? This is not looking good. We're pretty close to the end here, guys. A, b, c, f, e, d, g, h-- g, h is good. F is not so good. All right, you got about 30 seconds. Whoa, what are you guys doing? One at a time here. One at the time. In fact, I think time is up here. All right, 2:56. Oh, no, no. That we don't do. No diagonal moves-- no, no, no, no. All right, well, you guys were good sports, so you do get a prize. It's not the candy, but I have these wonderful plastic Nerd Pride pocket protectors for you. There you go, very good sports. Thank you, well done. All right. [APPLAUSE] Now, I was a little cruel to these guys, for a lot of reasons. It's impossible? You think? [INDISTINCT CHATTER] Yeah it is impossible. This is impossible to do. Let's see if we can prove it's impossible. Because it doesn't seem so hard, necessarily. But let's take that as a theorem. There is no sequence of legal moves-- diagonal moves makes this a lot easier-- to invert g and h and also return all the other letters to their original order or position. Now, to prove this, we're going to use what's called an invariant. It's a very powerful and commonly used concept in computer science, very closely tied to induction, as we'll see. In order to show that your system can never reach a particular special state, it is sufficient to show there's some property called the invariant that holds at the initial state, and that is preserved by every legal move, and is not present-- does not hold-- in that special state. The idea is, if you get this magic property called the invariant and it holds at the start, and it holds across every step, then the only states you can reach have to have to have the property, be invariant. And if the special state doesn't have that property, you can't reach it. All right, so there is going to be some property we're going to look for that held at the beginning here-- and the beginning had this set up-- that holds, is preserved, by every move, every legal move, but does not hold in this state. And therefore, you can never reach this state legally. So they were doomed. So we've got to figure out what that property is. And that's always the trick in analyzing systems or algorithms-- is what's that key property, the invariant property? So to figure out the invariant, we sort of have to look at what happens during a move in this system-- a transition. Well, there's two kinds of moves. There's a row move. And an example of a row move is you might have a, b, c, d, g, e, f, h. And I'm going to move the g its row to the blank square. So it would become this state. So g moves rightward into the blank, and the rest stays the same. Now, when I make a row move, did the relative order of the items change? No. Of course, to be precise, I better define what relative order means, or the natural order. So by the natural order, I mean this ordering-- 1, 2 3, 4, 5, 6, 7, 8, 9. So if I look at the order here, g moved from 5 to 6, but didn't change order with respect to any of the other guys. Let's state that as a lemma. Because that'll be very useful. Lemma 1-- a row move does not change the order of the items or the letters. Proof-- well, it's obvious. No, you can't let me get away with that, right? Because I'm not to let you get away with that on homework. That's not so good. So we've got to be a little more careful in the proof here. Otherwise, we just head down the path to trouble. So let's sort of specify, what does a row move mean-- just get a little bit of math and specification around it. Well, in a row move, we move an item-- a letter-- from some cell i, whatever i-- it could be anything 1 to 9-- into an adjacent cell. What are the possibilities for the adjacent cell? Plus or minus 1, yeah, into cell i minus 1 or i plus 1. Nothing else moves. Hence, the order of the items is preserved. Because if you're going with i to i plus 1, everything else is in i minus 1 or less, i plus 2 or more. Relative order does not change in this case. And I'll claim that's enough. You know that I've thought about it a little bit. I've really quantified that i goes to i minus 1 or i plus 1. Nothing else moves. Therefore, we're done. Now, I could've added some more sentences here, like I talked about. But this is probably enough in this case, for this guy. So in fact, if we only had row moves, there's not much that happens. The order never changes with row moves. So we never get there. But column moves are more interesting. So as an example of a column move, a, b, c, d, f, h, e, g-- say I move the g up. Then I would get this one-- a, b, c, d, f, g-- because g moved up-- h, e. So g went to there. Did the ordering change for this move? Yeah. How so? What things changed order? Which pairs of letters changed order? AUDIENCE: G changed [INAUDIBLE]. PROFESSOR: G changed by three-- moved three in the order. And what letters did it change relative order with? AUDIENCE: [INAUDIBLE]. AUDIENCE: The two preceding it. PROFESSOR: Yeah, the two preceding it. g used to be after h and e. Now it's before h and e. All right, so it changed relative order with two items. It changed its position by three. It moved up three in the ordering. And so it changed order with the two in between. Let's look at another one. Because we're really doing these examples to hunt for an invariant, is what we're trying to do here-- something that will let us prove we can never get to the desired state. Let's look at this one. a, b, c, d, g, h, e, f goes to-- I'm going to move b down this time-- a, c, d, b, g, h, e, f. So b moves down. The relative order changes. Which pairs got changed in the relative order? AUDIENCE: b. PROFESSOR: b changed with-- AUDIENCE: c and [INAUDIBLE]. PROFESSOR: c and d. b used to be before c and d. when it moves down here, it goes after c and d. Any guess about what Lemma Two is going to be? What happens when we make a column move? AUDIENCE: [INAUDIBLE]. PROFESSOR: Change the order of-- AUDIENCE: [INAUDIBLE]. PROFESSOR: Good, so a column move changes the order of a guy with the previous two or the next two, which means the relative order of two pairs change. So let's take that as Lemma Two. When we say don't do proof by example, we don't mean don't try examples. Because by trying examples, you find out what you're trying to prove. So that's good to do. A column move changes the relative order of precisely two pairs of items. So let's prove that. In a column move, we move an item in cell i for some i to a blank spot in cell what? AUDIENCE: [INAUDIBLE]. PROFESSOR: i minus 3 or i plus 3? AUDIENCE: [INAUDIBLE]. PROFESSOR: OK, and just to see that, let's draw out the natural order. I've got 1 2, 3, 4, 5, 6, 7, 8, 9. Column moves could be here-- 1 to 4, and 4 to 1, 2 and 5, 3 and 6, 4 and 7, 5 and 8, 6 and 9. All 12 possible column moves, this works for. They're always separated by 3. And when an item moves three positions, it changes relative order with two other items. And you can even write down what they are. It's i minus 1, i minus 2, or i plus 1, i plus 2. Those are the guys it changes order with. All right, we've got two lemmas here. That one's done now. In a row move, order does not change. In a column move, two pairs of letters get flipped. That's all you can do with this puzzle now. So can anybody think of something we can work with to get an invariant here-- something that won't change? What we should be focusing on? Yeah. AUDIENCE: You can only switch two pairs of items at a time. So if you don't have an even number [INAUDIBLE] switch [INAUDIBLE]. PROFESSOR: Yeah, that's good. So really, to focus in on there is, if you have an even number of things out of order to start, you're going to have an even number forever, because you can only change two at a time. That's a great idea. Let's really specify that now, and define that. A pair of letters or items, call them L1 and L2-- they form an inversion, also known as an inverted pair, if L1 precedes L2 in the alphabet, but L1 appears after L2 in the puzzle. All right, so that is an inversion. So for example, let's see how many inversions do we have in this case? We've got a, b, c, f, d, g, e, h. How many inversions are there in that state of the puzzle? Yeah? AUDIENCE: Three. PROFESSOR: Three, good. And what are they? AUDIENCE: d is after f. PROFESSOR: Yeah, d, f is an inversion. e, f is an inversion. And what's the last one? AUDIENCE: e, g. PROFESSOR: e, g is an inversion. Yes, so the answer is there's three inversions in this puzzle. And if I keep doing row and column moves to this, what do I know about the parity of the number of inversions? AUDIENCE: [INAUDIBLE]. PROFESSOR: Will always be odd-- that's sort of interesting. OK, now, how many inverted pairs are there in the start state way back over here? How many inverted pairs here? One inversion. How many inversions here? Zero. All right, and can you see where we're going to head here now? If I started with one, that's odd. And every time I do a row move or column move, it's going to stay odd. And I can never get here. Is that clear what we're trying to do? So let's keep doing it. Let's go over here. All right, so now we'll use Lemma One and Lemma Two create this notion that we only change the number of inversions by an even number. And Lemma Three-- during a move, the number of inversions can only increase by two, decrease by two, or stay the same. And this proof is pretty easy. There's a couple of cases. In a row move, what happens? How does the number of inversions change in a row move? AUDIENCE: Stays the same. PROFESSOR: Stays the same-- no changes-- and that's by Lemma One. Now, in a column move, there's three cases. But we know two pairs change order-- that we know. That's Lemma Two. All right, by Lemma Two, we know that. But the three cases are-- let me start on the next board. So Case A is that both of the inverted pairs were in order originally, before the column move. What happens to the number of inversions in this case, as a result of the column move? AUDIENCE: [INAUDIBLE]. PROFESSOR: Goes up by two. Case B is that both pairs were inverted before I made the column move. What happens to the number of inversions in that case? AUDIENCE: Decreases by two. PROFESSOR: Decreases by two-- they were in order, so they were inverted. Now when I flop them, they become in order. So inversions drops by two. And Case C is there's one of each. One of the pairs was inverted. The other wasn't. What happens to the number of inversions in that case? AUDIENCE: [INAUDIBLE]. PROFESSOR: Yes, stays the same. All right, and we're done. That's what the lemma says-- I can go up by two, down by two, or stay the same. All right, now a simple corollary of this is that during a move, the parity-- i.e. even or odd of the number of inversions stays the same. It can't change at all. During a move, the parity-- and the parity means even, odd. Sometimes it's called 0, 1, but the evenness and the oddness of the number of inversions does not change. AUDIENCE: Instead of two pairs you mean one pair, right? PROFESSOR: Where? AUDIENCE: [INAUDIBLE] pairs. PROFESSOR: Oops, I mean one pair's inverted, one pair's not. AUDIENCE: [INAUDIBLE]. PROFESSOR: No, I mean two pairs change order in a column move. Let's go back and look at that. So I'm doing a column move. For example, g goes up. g, h changes order. g, e changes order. g changes order with these two guys, so there's two pairs that got flipped. So in a column move, two pairs reverse their order. If they were in order, they become inverted. If they were inverted, they become in order. Any other questions? Yeah. AUDIENCE: So we're saying that letters can be numbers in more than one pair? PROFESSOR: Yes, a letter can be in-- a letter is in seven pairs, because there's seven other letters. And in fact, we're looking at a space of 8 times 7 divided by 2-- 28 pairs of letters. So there could be 28 inversions if they're all out of order. Any other questions? OK, well, we're getting there. We're almost done. I've got to prove this corollary that during a move, the evenness or oddness of the number of inversions does not change. And that's because adding or subtracting 2 from a number does not change its parity. It stays odd or stays even. So adding or subtracting 2 does not change the parity. All right, now we're ready to state the invariant. Anybody tell me what the invariant is going to be? What's the invariant going to be in this system? AUDIENCE: [INAUDIBLE]. PROFESSOR: Yeah, the parity of the number of inversions is odd, because it starts that way. It's preserved. And it won't hold in the desired end state that we're looking at. So we can state that as follows. In every state or configuration reachable from the start state, which is a, b, c, d, e, f, h, g-- which are out of order-- the parity of the number of inversions is odd. And the proof will be by induction. And invariant proofs are always by induction. And the inductive hypothesis-- and this is very typical in a proof by using invariants-- is, so P of n is after any sequence of n moves from the start state-- in fact, just the rest of this is what it is. All right, so our inductive hypothesis is P of n, after any sequence of n moves-- so n is the number of moves you took to get there-- from the start state, the parity of the number of inversions is odd. That is the inductive hypothesis. This is the invariant. And they become one and the same. And the parameter n is the number of moves you've taken. And that's how you set up a proof using an invariant. It always looks just like this. OK, so we're doing a proof by induction. We've got the inductive hypothesis. What's the next step? AUDIENCE: Base case. PROFESSOR: Base case. And in these circumstances, where the proof by invariant, the base case is always 0. We haven't made any moves yet. Now in this case, if we haven't made moves, the number of inversions in the start state now is 1. That means the parity is odd, and the hypothesis is satisfied. P of 0 is true, because in any sequence of zero moves, after this-- i.e. in this state-- you've got one inversion. That's odd. The last step is the inductive step. And here we need to show for any n bigger or equal to 0, we need to show P of n implies p of n plus 1 is true-- the standard thing. So let's look at P n plus 1. That's talking about where we are after a sequence of n plus 1 moves in the puzzle, from the start state. So let's consider any sequence of n plus 1 moves. And call these moves-- label them by M1 all the way to M n plus 1. Those are the moves we made. Now, by the inductive hypothesis, because of P n, we know that after the first n moves, the parity is still odd. That's what P n says. That's P n. After any sequence of n moves from here, the parity of the number of inversions is odd. So we could say by the inductive hypothesis, or we could say by P n, we know that the parity after moves M1 out to M n is odd. Now, by Corollary One-- do we still have Corollary One? [INAUDIBLE] AUDIENCE: [INAUDIBLE]. PROFESSOR: [INAUDIBLE], yeah, good, we've got Corollary One. During any move, the parity doesn't change. That says from after the nth move to after the n plus 1st move-- one extra move-- doesn't change the parity. So it's still odd. So next, by Corollary One, we know that the parity of the number of inversions does not change during M n plus 1. Therefore, this implies that the parity after all n plus 1 moves-- these guys-- is odd. It started odd. It stayed odd after the first n. It stayed odd during the n plus 1st. So it's odd. And that's exactly the statement of P n plus 1. So we've completed the induction. We've shown that P n implies P n plus 1. All right, so now, any questions so far on this? Yeah. AUDIENCE: What's the difference between a lemma and a corollary? PROFESSOR: Really, there's not a lot of difference. Corollary usually is something that's a simple consequence of something else. And the corollary had a pretty short proof. Usually when you see corollary, that's not a 10-page proof there. A lemma is something that you're going to use as a tool for a bigger thing, often a theorem or another lemma. In fact, now we're going to get to the theorem, which is sort of the final thing-- the thing we're really after. And that's sort of the big deal. And now the proof will be simple, because we've done all these lemmas and corollaries. Any other questions? All right. In fact, the theorem is up here, right? There is no sequence of legal moves to invert g and h. In other words, the students were screwed. They couldn't do it fairly. So let's prove the theorem now. The parity of the number of inversions in the desired state-- i.e. in order-- the target state-- is even. Nothing's out of order. There's zero inversions. By Lemma Four, the desired state cannot be reached from the start state, because its parity is odd, using legal moves. So we're done. So the proof of the theorem-- by now, it's short, because we did four lemmas, a corollary, and lots of argument. Could you have solved the puzzle if I allow the blank to be somewhere else at the end? Is the puzzle solvable then? No. Why not? Doesn't impact the parity at all, so you can't do that. Again, the idea here-- and you'll get some practice in homework-- is you're looking for a property that holds at the beginning, is preserved by every step, but is not present in the target state. Now actually, this puzzle was enormously popular in the late 1880s. In fact there was $1,000 prize offered for anybody who could solve the larger version. Back then, it was the 15 puzzle, which you can still buy today-- same problem on a 4 by 4 grid-- exactly the same problem. A pair is out of order. You've got to get them in order. You can't do it. Now, the proof you can't do it is a little harder-- same idea-- one extra idea in it-- one extra lemma. And that's for homework. So you'll go through and see exactly the structure with one extra little trick it. But back then, I guess most people didn't-- of course, most people didn't realize it wasn't doable. So they could offer this price safely. $1,000 then is probably worth a quarter million dollars today. Any questions on the eight puzzle? Yeah. AUDIENCE: The inductive steps-- when you said, "by inductive hypothesis," [INAUDIBLE] parity after, shouldn't the first term be M0? PROFESSOR: Let's see. No, the first move is M1. The second is M2. Now, when I talk about zero moves, that means no moves are taking place. I'm still in the start state. So a move is a transition between states. So you could have state 0. That's the start state. State one would be the move after move one. Have I got that right here? So the inductive step, I need to show P0 zero implies P1. P1 implies P2, and so forth. And P n is the parity of inversions after n moves. So you could have state s0. We didn't label the states here, but you could have state s0. Yeah. AUDIENCE: So in this problem, we assume that everything should be defined as rows or columns. How do we know when the assumptions are valid? PROFESSOR: That's a good question. OK, so really, there's two cases. To be really precise, we should have argued there's only two types of moves, a row move and a column move. And in fact, if you look at what can move into a blank square, there's four guys that can do it-- the guy above, the guy to the right, the guy to the left, and the guy below. Two of those are row moves, two are columns. So that's right-- to really pin down the details, we should have checked those are the only two possible moves. And if there was a third kind of move that I hadn't considered, this proof would be bogus. That's a good question. Any other questions? OK. Now, I think probably, you see why the invariants are important. But say that someday, you're building software to run a nuclear reactor. Now, there's a certain state you'd really like to avoid-- meltdown. And you'd like to be able to prove that, in any sequence of moves that happen in your reactor program, you never reach the meltdown state. Well you'd use invariants to do that. Or if you're building software for an airplane, you'd like to never reach the crash state. Or if you're building a radiation device, you never want to get in the state that fries the patient. So this is an important notion. So for the rest of the day, we're going to talk about a different kind of induction called strong induction. It's very similar to ordinary induction, but it's a little easier to use when solving certain problems. Now like regular induction, strong induction can be expressed with an axiom. So let me show you the strong induction axiom. You have a predicate, P n, like before. If P0 is true-- your base case-- and for all n, it's not P n implies P n plus 1, it's P0 and P1 and dot, dot, dot, and P n are all true, then P n plus 1. If this is true for all n, then P n is true for all n. Now, the only difference between strong induction and ordinary induction that we did last time is this part. In ordinary induction, you're showing that P n implies P n plus 1. In strong induction, you're showing that all these facts put together imply P n plus 1. Now, to show implication, remember, you get to assume that all these things are true. So you know how in ordinary induction, we say, "assume P n is true and you're going to prove P n plus 1?" In strong induction, you get to say, "assume P n is true, P n minus 1 is true, dot, dot, dot, P1 is true, and P0 is true. You get to assume a lot more. So it's a stronger proof technique, because it allows you to do more-- or so you would think. Now in fact, any proof you can do with strong induction, you can do with ordinary induction. It just might be harder. So you can't prove any more with it, but it makes your proofs much easier. And we're going to do an example in a minute where the proof is much easier by getting to assume all of these things are true in order to prove P n plus 1. Are there any questions about the difference here with strong induction-- that now you get to assume all these are true as part of the inductive step? All right. Our first example of a strong induction is going to be a simple game. We've got a stack of eight blocks here. Now, in this game, what you're going to do is divide the stack into two sub-stacks. So I just took eight, and split it into three and five. For that move, you get 15 points-- 3 times 5. Let's write that down. OK, so this is called the Unstacking Game. And in the first move, we went 8 split to 5 and 3. And that's worth 15 points. Now in the next move, I'm going to split the stack of five into four and one. And for that, you get 4 points-- 4 times 1. And I keep on going until I have a stacks of height one. And the last move, I'll be splitting a two into two ones. That'll give me one point. Then I add up all the points, and that's your score. And the goal is to get the most number of points when you add up the entire score. Now, just so this game is clear, we're going to play it. And I'm going to raise the stakes here. What we're going to do is we're going to have a competition between three members of the class and the TAs. Now, if the class team wins-- they get more points-- we're going to give everybody in the class candy. And I've got lots of candy here. If the TAs beat you, they get the candy. AUDIENCE: What if it's a tie? PROFESSOR: We'll figure that out. We'll come to that later. But you want to win this thing. So I need some volunteers from the class who think they can do well. Yeah, come on down. You two guys come on down. All right, TAs come on up. Now, I want you to make some noise if you think your three class reps here can beat the TAs. [CHEERS AND APPLAUSE] All right, how many people-- make some noise you think the TAs are going to win. AUDIENCE: Ooh. PROFESSOR: Ooh, that's nasty. It must've been a rough recitation last week on Wednesday. All right, so let's see. I think we're going to let the class go first. This is your stack. Now think about what move you want to make first, because that matters. And you guys can give them some advice if you want, as to the move they should make first. And I'm going to keep score over here. Oh, OK, they went for the maximum move. That's good. They realized 4 times 4 is 16-- very good. So let's write that up here. You're Off to a good start. In fact, that's the maximum number of points for the first move, I think-- good job. All right, so here's the class here. And here are the TAs. And the class went 8 into 4 by 4, and they got 16. Now, the TAs are working hard here, as you can see. And they've got a move. That's a pretty pathetic first move for the TAs. Looking good for the candy for you guys. They got 7 points for the TAs. Class, what would you like to do for your next move? AUDIENCE: [INAUDIBLE]. PROFESSOR: You can't start over now-- too late for that. [SIDE CONVERSATION] A lot of people counting on you guys. [SIDE CONVERSATION] Oh, no, no, one at a time. No, just one. One stack gets split-- either one. AUDIENCE: [INAUDIBLE]. PROFESSOR: There you go. Oh, well, what do you do now? [SIDE CONVERSATION] AUDIENCE: Their strategy's obviously better than ours. AUDIENCE: Yeah, but we've figured it out already. AUDIENCE: We're going to lose. PROFESSOR: The TAs are convinced they're going to lose. Three and one, OK, good, interesting. So we have three and one. That gives you 3 points. All right, TAs, we need a move. All right, so they've gone six and one-- 6 points. Class, you think you're dead already? So you've gotten three and one now, again, for 3. So you're up to 22. You're way ahead-- 22 to 13. All right, TAs. They look a little disorganized to me. What do you think? AUDIENCE: [INAUDIBLE]. PROFESSOR: Another one-- you can tell where they're headed here-- five and one. They have 5 points. They're up to 18. They're 4 behind you. All right, class. All right, you got 2 points. TAs-- you really think they know how to do this best? I don't know. AUDIENCE: [INAUDIBLE]. PROFESSOR: Oh, big change in strategy there. All that thinking, and that's what we got. OK, 4 points. Class. All right, they pick up 2 more here. The three just got split into two and one for 2 points. How are you doing? You've got 19, 22, 24, up to 26. 13, 18, 22-- you're still doing good. TAs are behind. Let's see what they've got up their sleeves here. All right, they definitely have a strategy going here. That's 3 points. Ooh, there's not much option left for you guys. Yeah. [SIDE CONVERSATION] AUDIENCE: Choose the right. AUDIENCE: Air blocks. PROFESSOR: No, no, no, that'll be a 0. All right, that gave you a point-- two went to one and one-- 1 point. Not a lot of choice for you guys either, I guess. There's only one way to split that stack. All right, 2 points, and your final move for the class and all the candy. You get 1 more point. Let's see what your total is. You've got 22, 24, 26, 27, 28. And the TAs are going to get one last move for the TAs. All right, and you got 2, 1, 1, 2. That's interesting. 1, 2, 3, 4, 5, 6, 7-- 7 times 8 over 2-- no, that's not right. Did I do that right? Oh, 28-- we got a tie. Oh, geez. I tell you what-- I'll give you guys one more chance to start over. You've seen that. You've got to beat them. You tied them. You've got to beat them. One more chance here. [SIDE CONVERSATION] You got to beat them, though. You got 28. You already tied them. They came from behind and tied you. You've got to beat them. You got off to a good start, but then they caught up. [SIDE CONVERSATION] Now, your class reps had an interesting thought here. They ask, is it possible that any strategy gives 28? Hmm. I wouldn't do that to you, would I? [LAUGHTER] Yeah, probably. Any ideas? Can you beat 28? They're already eating the candy. In fact, you can't beat 28. And you can't do worse than 28, either. Because every strategy gives 28. So I guess we're going to have to throw it to the class to vote who should get the candy. So if you think your reps really should win this and you should get the candy, make some noise. [CHEERS AND APPLAUSE] If you think your TAs should get the candy make some noise. [CHEERS AND APPLAUSE] All right, so you get the candy. Here, help pass out the candy here. We've got plenty of bags and baskets. Take it all up on both sides, and pass it out. [SIDE CONVERSATION] OK, is everybody getting some candy up there? We should have enough for everybody, unless somebody got really hungry down here in front. OK, so while you're doing that, let's try to prove this theorem. So the theorem is that all strategies for the n-block game produce the same score. It wasn't a coincidence for 8. And the score, we'll call it S of n for the n-block game. So for example, we're trying to show that S of 8 was 28. So what strategy do you think we're going to use for the proof? AUDIENCE: Strong induction. PROFESSOR: Strong induction-- so you want to write that down-- proof by strong induction. What's the next step in a proof by any kind of induction? AUDIENCE: Base case. PROFESSOR: Base case-- not yet. AUDIENCE: The predicate. PROFESSOR: The predicate-- what's the predicate here? All right, so for the inductive hypothesis, the predicate-- any guesses as to what P of n is going to be? AUDIENCE: [INAUDIBLE]. PROFESSOR: What's that? AUDIENCE: n should be 2n minus 1 by 2. PROFESSOR: Yeah, that's part of it, but we're going to use this as a predicate to start with. You've gone a step ahead there. So I'm going to start with this as being a predicate, because I'm trying to show they're all the same. And I haven't figured out what the scores going to be. But I think you're already on a good track here for what the score is going to be. Now we do the base case. So we take n equals 1-- the one-block game. S of 1 is 0. We never took a move. We never got a score. There was only one block. We ended before we started. So that's OK. And now we have the inductive step. And here we get to assume P1, P2, all the way up to P n, to prove P n plus 1. And so now we look at n plus 1 blocks, because that's we're starting. So we have n plus 1, and we split it somehow. And it could be any split. We might have K on one side, then n plus 1 minus K on the other side for any K between 1 and n. And let's figure out our score for that scenario. Well, we get the product of these numbers for the first step. We get K times n plus 1 minus K for the first step. And then as we recurse, and we split up that block of K blocks, how many points do we get for splitting that all the way down? AUDIENCE: P of K. PROFESSOR: P of K, because that's the induction. We assume that as part of the induction hypothesis. And how many points do we get for splitting this stack all the way down? Yeah, P of n plus 1 minus K. And you see why strong induction's coming in handy here? For the TA's strategy, K would be 1. We know P of 1 is 0. And you would just need ordinary induction. This would be P of n. But for a general strategy, it could be any split. So we need to have all these assumed here. It makes it much easier when using strong induction. All right, so this is our total score for the game for n plus 1 blocks. And we're trying to show it just depends on n, and that it doesn't depend on K. Does that depend on K? Looks like it to me, right? I got K in every single term. So I'm not there. I'm stuck. You see why I'm stuck? Because I'd like to be able to say that the score I get for the n plus one block game-- this is S n plus 1-- is the same for any sequence of moves. It doesn't even depend on K. But I can't do that. What do you do when you're stuck with an induction proof? What's one of the tricks? AUDIENCE: Make it stronger. PROFESSOR: Make it stronger, which means I get a stronger induction hypothesis. Now, somebody gave me one up there before. How could I strengthen my induction hypothesis here? AUDIENCE: [INAUDIBLE]. PROFESSOR: Give the formula for S n-- that would make it stronger. I tell you what it is. What's a good guess for the formula here? AUDIENCE: Factorial. PROFESSOR: Factorial-- Well, is S of 8 equal 8 factorial? No, not so good. [SIDE CONVERSATION] AUDIENCE: n equals n minus 1 over 2. PROFESSOR: Yeah, that's a better guess-- equals n times n minus 1 over 2. And in fact, what's 8 times 7 over 2? It's 28. It works here. Let's check another one. What's S of 2? AUDIENCE: 1. PROFESSOR: 1-- well, 2 times 1 over 2-- it works. What's S of 3? 2 the first move, then 1 more. 3-- 3 times 2 over 2 is 3-- looks good. So now I've got a stronger induction hypothesis. Not only is it always the same, it is that number is your score. Let's see if that works. Let's plug that in now. So base case-- let's check it out-- is 1 times 1 minus 1 over 2 equal to 0. Yes. Let's plug it in here now. P of K would be now K, K minus 1 over 2. This would be n plus 1 minus K, n minus K over 2 plus this one here. All right, I've got to add all these things up, and see if it equals that expression for n plus 1. Let's do that. All right, I get 2 K n plus 2 K minus 2 K squared. I'm putting all this over 2-- one giant mess over 2 here-- plus K squared minus K plus n squared. Well, let's write it just as n plus 1 times n, minus K n, minus K, minus K n, all over 2. And now let's cancel. Two K n's here cancel K n, K n. 2K cancels K and K. 2K squared minus 2 K squared cancels K squared. And I forgot, plus K squared from here and here. So I'm left with n plus 1 times n over 2. That is S n plus 1. And the K disappears. We've established, now, the stronger induction hypothesis. So not only did we prove that every set of unstackings gives you the same score. We proved the score is, for n blocks, n times n minus 1 over 2. That's was pretty good for strong induction. It lets you do some pretty powerful things. OK, very good, that's it for today.
A2 初級 米 Lec 3|MIT 6.042J コンピュータサイエンスのための数学, 2010年秋学期 (Lec 3 | MIT 6.042J Mathematics for Computer Science, Fall 2010) 461 11 Dou Lin に公開 2021 年 01 月 14 日 シェア シェア 保存 報告 動画の中の単語