# MITOCW R11. Principles of Algorithm Design

Save this PDF as:

Size: px
Start display at page:

## Transcription

1 MITOCW R11. Principles of Algorithm Design 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. It's a bit better, my heart's back in place. I'm glad that not everyone's gone. Well you mean passed out and died from the test? Yeah. OK, no there were a few students left. That's good, that's good. I think once we release the results everyone will calm down, and we'll realize that the mistake was on our part. The mistake? I mean the results are lower than what we thought. And it's because we haven't covered something that I will cover today. So we think-- well we talked about it yesterday, and we think we haven't done enough algorithm design with you guys. So today I have problems, and we're going to come up with solutions. Are you not going to tell us what [INAUDIBLE] number is? It's in the lecture notes. It's actually quite boring. I promise it's really boring. OK. And if you want to do that next time when we'll actually talk about numerics. The thing is numerics are straightforward. Once you learn the algorithms you're not going to come up with a new one. I'm pretty sure about that. Like you're not going to come up with a revolutionary way of adding two numbers. I don't know. You never know. 1

2 Well you can tell me why. Think about it and then you can tell me why you are not going to. OK, got it. OK so let's start with a problem. We know what sorted arrays look like, right? 1, 3, 5, 6, 7, 9, 12. This is a sorted array. If we're given a sorted array we know how to find the number in it, right? What's the running time for that. For any given number? Yeah. [INAUDIBLE] Well what's the best way that we know? Logarithm. Log and binary search, right? Well instead of this we're given a shifted array. And shifted means that-- say you're shifting the array by K elements. We're taking these guys. So the array is shifted to the left. So these K elements end up on the right. These N minus K elements end up on the left. So 7, 9, 12, 1, 3, 5, 6. So still N elements they are shifted by some number K. And I want to find one number, e, in the array. I don't know K by the way. We just know that it's a shifted array. This is 12. So the first thing you do is figure out how much time you have for this, right? If you're on a test, you roughly know how much time you have for a problem. If you're on an interview you have to figure out how much time the interviewer is willing to give you for problem. And spend the first, I don't, a third of the time thinking maybe. Come up with the best solution that you can. And then stop there, and start talking. 2

3 So the first thing you do, you want to make sure that when you run out of time you have something to say. The most awful thing you can say is, dude I'm going home now. Or leave the answer blank. If you leave the answer blank we're not going to give you points, right? So not good. So what's the worst answer you could give us? OK worst is a bad term. What's the brute force solution to this? The solution where we don't care about the running time, but we want the correct answer. Look everywhere. Yep. So do a linear search. Pretend we don't know anything about this array. Lose the information that it's a shifted array. Linear search running time order N. OK so this is something, at least now when your time runs out you have something. You're not going to leave empty handed. Let's start thinking now. Next step. [INAUDIBLE] can we shift it again? So the fact that it's shifted means that-- so originally it was sorted, right? But now instead of it being completely sorted, you have all the elements are shifted to the left. And then so there's a rotation thing going on here. So these elements got out of the array and then they are put back in from the other side. Why do we do that? That's how the info looks like. We don't do it. It was done to us. Oh OK. So now what do we want? We want to find an element-- Oh, I see. --despite the fact that the array looks like this. Do we know that the list that we have is shifted already? 3

4 Yes. So we're promised that this is a shifted array. So it will look like this. But we don't know what K is. If we knew what K is, could we do something fast? What would we do? Yeah, you'd just re-shift OK so if you re-shifted what's the running time? For order K OK so if we actually shifted and then do a binary search it's order K plus log N. So for big K's that's not better. Why is it not order N plus log You can say that since we don't have any promise on K it's N. It's order K if you can shift things out of both N's. With Python this would be order N, just popping out one element is order N in Python. So this is assuming a smart array. Otherwise if it's Python, good point. It's straight up order N. So now another good point. You have this solution, and you have the brute force solution. They have the same running time. You run out of time. Which one are you going to code up? Which one are you going to show? The simpler one. The simpler one, excellent. So the reason is, if you're on a test it's probably give the pseudocode, then analyze it. If you're in an interview the guy will ask you OK, what's the running time? Code it up on the board in C, Java, whatever he knows. So you want to code the simplest solution, because that reduces the chance that you'll have bugs. So that gives you the most points. So this solution shows more insight, but it doesn't have a better run time. Stick to the simple solution. However if you have this then you have some insight on the problem. So you can 4

5 keep going and hope you can come up with a better answer. So if we knew K, one thing we could do is reduce the array to an unshifted array. What's another thing we can do? So I claim that if you know K you can come up with a reasonably easy log N method. If you're doing binary search, like if you just pretend like the array is all together, but if you know K. So let's say you're looking for 6. Then you'd say oh well I'm going to split the array half, but you're actually going to start at K and then split it in half. So it's like you pretend that-- So what you want to say is you have a pretend array in your mind, right? Yes. It's [INAUDIBLE] by K. And you want to access the middle element to see if what you're looking for is bigger or smaller. Instead of looking at the middle element here, you look at the middle plus K, right? Yes. Oh, there you go. Plus K. This is one way of doing it, good running time. The problem is it's hard. You'll have to rewrite binary search and hope it works. What I would do, given that I've had a bit of time to think about it, is this is sorted. This is sorted. So two binary searched are also going to be log N time. Two binary searches, two lines of pseudocode. The running time analysis is pretty simple. Correctness is also pretty simple. And also this gives me some insight on the rest of the problem I claim. OK so if we have K we can do log N. What if we don't have K? What do we do? Yes? Figure out what K is. All right let's try to find K. We know how to do it if we have K. So let's try to find K. What-- if I want to arrive to a solution that's log N, how much time can I spend on finding K? OK so let's find K in log N time. 5

6 Binary search for minimum? Binary search-- so I like binary search, because binary search is an algorithm that runs on an array. And that runs in log N time. So if I'm able to make it work I know everything's going to be right in terms of time. So what do you run a binary search for? The smallest number possible? I guess that's kind of going through all of them, though. It doesn't really help. So if you have the min. Sorry, you can speak in one second. Oh we have the min! So no, if you can't have the min. I think it's good insight. So if you knew where the min is, you know this is K, right? Yes. So this is the minimum, that's K. OK, what were you going to say? Oh for just binary search it would not [INAUDIBLE] minimum. I was thinking that if we start at 1 we will see to our right and left. And the point where [INAUDIBLE] are ending is where we have something larger to our right and something smaller to our left. OK so there's a discontinuity here, that's what you're saying, right? So this is sorted. But then at this point this breaks. Yes, we are kind of finding that point where something to the right that's greater than [INAUDIBLE] and something to the left is also greater than OK so let's see if we can do that. So for binary search you have to go somewhere. So in our case we're trying to get K, right? And we know that it's somewhere between 1 and 10. And what binary search does is it makes a guess. 6

7 It says hey, I think it's in the middle of the array. So it will probably guess n over 2. And it makes a guess and you have to tell it was the guess too small, or was the guess too large? Because this is what allows you to recurse on either the left interval or on the right interval. The problem with a discontinuity is, if I guess here, and if I guess here, I still don't see the discontinuity. So it's good inside, but it's not enough. I need a little bit more. Yes, 2, 3 hands oh wow you guys don't got it? So I think we can arbitrarily take the halfway point instead of subtracting from the first element. And then if it's a negative number, then discontinuity will be in this half. If it's [INAUDIBLE] it will be in the other half. And then you recurse on that. OK. So let's draw this up. So in a sorted array the numbers look like this. In a shifted array we splice it here, and this guy goes to the right. So it's like this and then like this. So this picture shows me the insight that I had before, that this part is sorted and this part is sorted. The missing part, which I just heard now, is that since the whole array was originally sorted, this guy is smaller than this guy. So if I draw a horizontal line here, I can draw a horizontal line somewhere, and this and this will not cross it. So this whole thing is taller than this. So by the way, K was where the discontinuity was, right? You said discontinuity. This is K, it's somewhere here. So this is a better. So if I make my guess and I land somewhere here, I can know that my guess is too big, because it's below the line. If I make my guess and it's somewhere here, I know my guess is too small, because the number that I see here is above the line. Who sets the line? The first element here. So this is how you look at it graphically. If you don't want to look at it graphically, this was a sorted array. If this is the Kth element, then everything here is smaller than it. So all these guys are smaller than the first element. OK so honestly who understands the solution? 3, 4, OK. Oh, OK pretty good. Do we 7

8 want to code this up, or do we want to look at another problem? OK who wants to look at another problem? Clear majority, all right. Usually I have to do both choices, because not enough people are paying attention to get this. So I am happy. Yes. All right so before I start another problem, one thing I want to say. Not only do I have a solution for this problem, but I have a process that allowed me to go from nothing to a few partial solutions. And while I was doing that, I was getting insight and I was making sure that if I run out of time before I have the final solution, I don't walk out of the room empty handed. So I don't just want to show you the final solution, I want to show you the process. You can look at the notes and see the final solution. That's not everything I want you to get out of this. OK, problem 2 has a heap. And this is a minimum heap, so it looks like this. So this is a minimum heap, N elements. And I want to extract the kth smallest element in the heap. So if K equals 3, this is the third smallest element, right? K equals 4, it's this guy. 5, and 6, 1 and 2 are here. OK the good running time that we want, because this is a hard problem so we give you the running time, is K log K. However before we do that I want to hear some brute force solutions. All of them. And? OK you need to sort them first. So this heap is actually an array, right? 2, 5, 7, 6, 8, oh it's 6, 9, 8, sorry. So you're saying sort the array, then K-- OK what's the running time for this? 8

9 Log N. All right we have a solution. We're not going to leave empty handed. OK let's try to go a bit better. What's another way of going it that'll give me a better running time? You could pop 5 of the K elements off of the-- All right so this is a mean heap, right? So it has find min. And find min runs in order log N. So if I call it K times I'm going to get the K smallest elements. By the way heap sort says pop and times, and you'll have all the elements in sorted order. So we're doing a heap sort, except we stop when we lose interest after K elements. So we're down from N log N to K log N. So I would be interested in hearing a solution that's worse, because it would look like N log K. But shows me more insight. So by the way this is good. You're already K log N. So K log N, the correct answer is K log K. Small difference, right? It's a logarithm factor. At least it's not an N factor. If you code this up chances are we're not going to be able to distinguish between this. So you'll never see this on a PSet. So you're almost there. And this is just applying straight up knowledge that we had before. Let's look at this solution, if anyone sees it. Before we attempt K log K. In another case would we just pop off first K elements, why would that be in log N? Because it's actually an array, so I would think that we'd just take the K time. So this is a heap. If you don't maintain the heaping variant after you do the first pop you're not going to be able to do the second one. OK, cool. So let me give you a hint. How would we find-- if this is an array-- how do I find the minimum? 2, 5, 7, did I forget something? No. Let's pretend this array doesn't start with 2, because it's boring if it starts with 2. How do I find the minimum? I keep one variable that says the best I've seen so far, right? Let's see, N-- oh this is still boring. 9

10 Let's start here. So we start with best seen equals 7. Then when we go to 6 we see, is 6 better than best seen? If so, replace best seen with 6. If not keep going. Then I get to 9. Is 9 better than best seen? Nope, keep going. Is 8 better than best seen? Nope, keep going. So I compare every element with the best seen, and then whenever the element is better I do a replacement. And then at the end, best seen will have the smallest element. So this algorithm works for k equals 1, which isn't very useful. So can we generalize this somehow to-- so we have a running time here. That might give you a hint about how we want to generalize it, and I want to generalize it for all values of K. If you go to the power of 2 then it's less than-- the nearest power of 2 less than K-- OK. --that element, and iterate forward with your best seen. Does that make sense? If you want the kth, if you want the tenth smallest element, then it has to be after the 8th row because it's the next level in the tree. Does that make sense? That doesn't make sense. It makes sense, but I don't think it's right. So you're thinking that the tenth smallest element has to be somewhere below, right? Yeah. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, and then pretend that there are numbers here. 11, 12, 13, 14, 15, do you see what I'm saying? So this is a heap. So I can keep filling it with bigger elements, and 10 is here. However you can do something else to limit the size of the heap. It will give us a different running time, but you can do something. You can think about it. How can you chop up some of the heap? For example if I have a heap that's ten deep and I look at the fourth element, what can I do? You can think about that. And let's try to get to this. So I'll accept an 10

11 answer for either how do we limit the heap in that case, or how do we generalize this algorithm. Yes? You want us to remember the smallest K elements, you'd make a max heap [INAUDIBLE] K [INAUDIBLE] OK so I want to have-- I'll break down your solution into parts. So you want to have a bag of the smallest K elements, right? So instead of the best seen, you want to have the K best seen. And once you have a bag you want to go through your elements. And then if you have something that's better than what you have in the bag, you want to put that in the bag. Suppose I have, suppose K equals 3, and I have 2, 5, and 7 in the bag. And I see 6. Who do I want to compare it with? The biggest thing in the bag, right? So if I want the K smallest elements, if this guy is smaller than anything, these aren't the K smallest elements anymore. So I want to take the maximum in the bag, compare it with what I'm seeing right now, and if what I'm seeing is smaller I want to replace it. Because I keep doing this maximum, I keep asking this maximum question, this has to be a max heap. That's why he said max heap. So you did all these steps at once and then gave me the final answer. But this is how you do it step by step. So it looks like finding the minimum element, except you have a bag. And that bag has to be a maximum heap. And the original heap is a minimum heap. So the fact that you have to use a maximum heap is a bit nontrivial. Good answer. All right so we have K log N, and we have N log K, so choose what you want to have in your log. We have a solution for you. How about this. How are we doing here? So suppose I'm looking for the fourth element, and my heap has 10 levels. How can I chop it-- how can I reduce the number of things I'm looking at? 11

12 You can reduce it down to 4 levels. I can reduce it down to 4 levels, exactly. So this heap has log N levels. And my K is smaller than log N. I can reduce the heap down to K levels and discard everything below. And the reason for that is we have a mean heap, right? So if we go down from, on any path from the roots to a leaf, the values have to increase, right? Otherwise it's not a mean keep. Otherwise there's an invariant violation somewhere there. So as I go down on any path my numbers are going up. So these are all the paths of length 4. All of them have to go through here. All the paths of length 4 will stop here. So I know that everything here has to be bigger than the first 4 elements. So if I reduce this to K and I discard everything else, what's the running time? So if I use my find my extract min algorithm before, what was the running time? It was So it's not the-- Oh sorry it's the-- So what's one operation in a heap? If I have the height of a heap, what's an operation? How much time does it take to do one operation as a function of the height of the heap? So if my heap has h levels, in this case h happens to be log N, it's order h. So if I reduce it-- I'm not reducing it from N to K. I wish I could. I'm reducing it from log N to K. So for really tiny K's, this becomes order K. And my total running time is K squared. So I'm going to do K operations, K extract mins. OK now the reason I wanted to entertain this is I claim it's going to be useful to help 12

13 us find the answer. So everything that we have here gives us some insight into what the correct answer is. Well what our correct answer is. There might be others. So let's think for a bit, and see if we can do better. Am I covering something? I hope not. So by the way, when you have problems on your own, say you are looking at CLRS or at old exams, you want to give yourselves half an hour, an hour to think. And just this process alone is going to help you do better on a test. Because while you're thinking you're going through everything you know. And you're rearranging stuff in your brain in a way that will be easier to access it later. So now you're going to think, what do I know about heaps? What do I know that takes log N time? What do I know that takes N log N time? And your brain will be better at answering these kinds of questions later. Now we're not going to give you 30 minutes, because that would make us run out of time. You want to reduce it down to K elements. I want to only have to look at K elements, that's good. Otherwise you can't plug K into the search. Yep, OK so that's good. Which is interesting, because it's K log K, and that kind of suggests that you'd have K elements in the tree. But then you're searching for each one in the tree. So maybe I'm not going to be able to cut this heap into K elements, right? I'll have to do a bit more. Can you cut this heap into K elements and use that heap to do our [INAUDIBLE]? Let's see how we'd cut this heap. First off let's see how this keep would look like if it's cut. How do we find the first K elements here? How do we find the first element? 13

14 It's the root. Second element. What do I look at? If I want to select the second element in a heap, how many elements do I have to look at? Two, 5 and 7, because everything below will be bigger, right? OK I look at them, I compare them, I know 5 is the smallest one. Now suppose I want to find the third element. Who do I look at? 7 or the thing under 5. So 7 is still in the race for sure. And then I have to look at the children of 5. Right now we're looking at 3. Suppose this has some really large kids. As in numbers. And I find that this is the third element. Who do I look at for the fourth element? OK so this isn't in the race anymore, because it's the third. The fourth has to be either of these two guys. Or the kids here, right? And it happens to be 7. So I take it out. If I want to look at the-- if I want to find the next element, who's in the race? This guy gets out of the race. 7's kids. OK so we have something. We're not really cutting up the heap, but we are sort of computing where the blade would go if we wanted to cut it up in K elements and N minus K elements. Does this make some sense? Nods, no nods. I mean I guess you're never going to be going down farther than K. So let's just understand the concept. And then we're going to do one more pass, write pseudocode, and understand the running time. Because this is still confusing, right? We'll need one more pass, otherwise we can't write the pseudocode into it. So does the concept make sense? 14

15 So does the concept make sense? Is that K log K? Yes. So the idea here is that I have a horizon that says, what are the next elements that I'm willing to consider? And first the horizon starts with just the root, because I know that's the minimum element. And when I take an element out of the horizon I put in its children. That's what I did all the time. So given a horizon how do I know what the next elements to extract out of the horizon? The mean, OK. So I want a data structure for the horizon that can extract means quickly. OK what am I going to use for the horizon? A min heap, excellent. So let's try to go for pseudocode. Suppose we have H as our original heap. So H is a mean heap. We will make Z be our horizon. I can't use H again. It would be nice if I could, but I'll use Z because Z's also a letter in horizon. So Z's the mean heap. And then first I will insert into Z. I'll insert the heap's root, right? So Z dot insert H of 1. Remember that heaps are actually arrays. I hinted to his earlier. So these nodes have are elements in an array. So this is the first element, second, third, fourth, fifth, sixth. So we're using array backed heaps, and H of one is going to be the root. Then I'm going to compute the first K elements like this, for K in range-- sorry, for i in range K, so K is going to go from 1 to K. What I want to do? Take, compute the ith element. How do I do that? Extract min. i equals Z dot extract min. And then I want to insert the children in the horizon. Right? How do I do that? 2i and 2i plus 1. 15

16 OK so this is if I know the index, right? When I'm putting things in the heap the keys are going to be the values, so that I can take out the minimum. [INAUDIBLE] heap first and then inserted H Y. Yeah, OK. This is empty. And this is the input. OK so I need to use the numbers as the keys. So when I extract something out of the heap, so when I extract the first element it's going to say 2, it's not going to say 1. If I want to-- Why wouldn't Z dot extract [INAUDIBLE] because-- So this will give me the next key in the horizon. But-- oh I see, you're starting out with just the first one. Yeah. Oh and then you want to add in the next. So at the end of this whole thing, if I'm extracting them right, I can return this variable here. Because after K durations this is going to be the Kth element. So I return it and I'm done. The problem is I want this guy's index too, right? So I can't just store the key in the heap. I have to augment the heap to let me store values. And I have to store the index. So for this guy would have Z insert H of 1, and then it's index 1. Then when I get out the ith element I'll also get out it's index. A variable name for that? j. j. OK why would you name your variables like this? In the previous section I had a similar suggestion, i, i. So why would you name your variables like this? Job security. All right. So it's OK here. Try to not to do that when doing an exam or 16

17 an interview, because it reflects poorly on you. For an interview and for an exam you'll get us upset and we might be less lenient. Or at least explain what you're doing. So extract min is going to give us the key. And it's going to give us index in the heap. What do we do afterwards? We add to [INAUDIBLE] H of-- All right so when we take out 2-- so we start out with an horizon of 2. When we take it out 2's the only thing that's in the horizon first. Then we take it out and its two children get in the horizon. Then we take out one of the children and put its children in the horizon. So when we take out a node we want to put its children in the horizon. So we're going to say Z dot-- Insert. Insert. What do I insert? H of I times 2. j times 2. See? It's working already. The job security thing is working. And? 2j plus 1. You have to do two lines. OK, sweet. OK. Does this work? I mean does this do what we wanted it to do earlier? Wait, we're extracting oh-- All right first nod. I mean if K is small enough. Eventually you'll ask for something that is out of range. Oh so you're thinking that eventually these will run out of range. 17

18 If you have your really lopsided array eventually you'll ask for something that's OK what would we want to do in that case? Just want to check to make sure that the Yeah, but otherwise move on, right? If an element doesn't have kids, we don't add on to the horizon. So we need some bounce checks, exception checking, things like that in here. And I won't add that because that will make it look long and ugly. So this is the idea. OK what's the running time for this? Cool. So creating heaps, initializing, all order 1, insertion, this heap is almost empty now. So this is order 1. Then these happen K times. And these are all operations on the heap Z. And the heap for the heap Z, it has some number of elements. And it's not always going to have one element, because every time I'm extracting one element I'm adding two. So well how many elements is it going to have at most? K. OK why is that? Because each time you add it it's one element. So I extract one for sure. And then I add at most two elements. So the heap size grows by at most 1 in every iteration. So the heap size Z will have at most K elements. So now I know the running for all these operations. What is it? Log K. Cool. So it's K times log K. And the reason that it works, it's a bit harder to see. You have 18

19 to convince yourself maybe using this bigger tree, that whenever you're spending expanding the horizon you're expanding it the right way. So the idea is again that whatever path you take down you're going to see ascending numbers. So when you're increasing the horizon you're always pushing it down in such a way that your invariant is that all the numbers in the horizon are smaller then their children. And so on and so forth. So the horizon is always guaranteed to have the smallest number that you haven't extracted yet. And that's really the only thing you need. OK does this make some sense? It never would have occurred to me on an exam. Yeah exactly. This would not occur on an exam unless you think a lot, you're super inspired, all that. If it doesn't occur to you what do you do? Go with the N log K solution. OK, very good. Wait. K log N. OK, K log N or N log K, which one? K log N. Why? Two reasons. K log N is-- so two reasons, faster and simpler. So you write this down. And you get half score or 3/4 of the score and you're done. It's better than nothing, anything, and getting a 0, right? I mean 3/4 of a score for two lines of pseudocode is reasonable, right? Two or three lines. This is three lines probably. Also on most exams we're humans, right? We might mess them up, we might make them too long. If we make them too long, you want to get the most number of points. You'll have time to figure out one or two problems at that level. But if we give 19

20 you too many, for the rest of them you want to have something simple that gives you some of the points. Same for an interview. For most interviews most people don't really have a clue how many problems you can solve, how many problems are reasonable. So you want, for every problem you want to show some solution reasonably fast. And then see if they're happy. And if they're happy move on to the next problem. And if they're not happy only then spend more time. So this is as important as that. If you look at the recitation notes we'll have some problems and we'll have some solutions. What are going to do, memorize the solutions? Yay, you know how to solve more problems. There are probably a million problems in total. That doesn't get you very far. So what you want is to understand this process that we went through. So every time we tried something we got from some point to some point with a better running time. Well except for here. And where we had more insight on the problem. So this is the important part. And I'm going to show you one more problem, really quickly. We're probably not going to be able to solve it, because it's hard. But we are going to talk about it and see if we can get some insight. Let's see, what do I want to erase? This. I like that. All right, so we have an array random numbers, 7, 2, 5-- this time there's no order in it-- 8, 9, 4. And we tell you that the array has 2 to the N numbers, to make the problem easier. 1, 2, 3, 4, 5, 6, So you have this array. And we want to answer queries of this shape. Say this array is E, and it has N elements, and you know that N is some 2 to the K. Minimum of all the elements from i to j. So you have two phases, just like we had on a problem on the exam. You have a pre-processing stage where you get the array, you do some computation, you save some information. And then you have a querying phase, 20

21 where you have to answer these as fast as possible. I see most people have unhappy faces. Bad memories, huh? OK let's not worry about that problem. Let's look at this one. So assuming you have as much time as you want to do the pre-processing, what's the fastest way you could answer these? Yes? If you had as much time for pre-processing [INAUDIBLE] memorize it. All right. So if we compute the answers to all possible solutions, right? How would I store that? So I want to do this in order 1. So how would I store these answers? Just sort your array. OK so I sort my array. Then you want the minimum from i to j, so look at the ith element and that's your OK so figure it out? Well I mean if I can sort it I can also say hey, why don't we use this array instead? And then I'll answer the queries. You can go off a tangent trying to sort the elements and keep their keys. The important thing is if you think about it for awhile and you see that things stop making sense, back out. Look somewhere else. We spent some time trying to find a solution based on sorting in my last section. It's not going to work. So-- Can't you just take the [INAUDIBLE] from i to j? OK let's get to that in a bit. So let's keep that in mind. Because that's another point on the trade off curve. So if I want to serve my queries in order 1, then the way I do that is I will have a hash of all the arrays that look like i, j. So all the possible intervals. And I'll store the answer here. The minimum the elements from i to j. And I can do a 21

22 hash lookup in order 1 and get the answer and return the answer. How many elements so I have here? So how much storage do I have to use for this? O of N squared. OK N values for this, N values for this, so roughly N squared. What's the time for computing this? Brute force, let's not think. What's the time for computing this? N cubed. N cubed. You're thinking. So I have unsquared elements here. For every element I have to compute the minimum of potentially order N elements, right? So this is N cubed. I could reduce it to N squared by noticing that if I have the minimum of these elements, and I want to compute the minimum of these elements, really all I have to do is compute, compare this minimum with this element. So every time I start with an interval of size 1 and then I expand it by 1. So I have my two for loops here. And I keep growing my minimum. So I could get down to order of N squared times. So I have one solution that has order of N squared time and space, and then answers the queries in order 1. You had a solution you said where, what you do is, when you get a query you compute this, right? You were suggesting sorting the array. That would be N log N. I would suggest not sorting it. Do the splicing, you look through all the elements, and you find the minimum. I was saying that if the original E spans i to j and started at the-- So when you get a query the i's and j's change for every query. Otherwise we could compute the answer. So we have one answer where we take order N time to answer a query. And what do we do for pre-processing? Nothing. Order 1. So these are two ends of a trade off, right? One possible extreme 22

23 is that you pre-compute all your answers. The other possible extreme is that you don't do anything and you brute force every answer. And now we want to find a point somewhere on this line between the extremes. So the answer that we're going to show in the solutions uses order N log N space. And it answers the query by using order 1 elements in this order N log N data structure. So I have order N log N partial minima. And I will only use two of them. So the total running time isn't actually order 1. But we only use order 1 elements. Let's start thinking very quickly. Let's think for about a minute, and then we'll go through the solution. And there are multiple solutions. All of them are interesting in different ways. And there are other solutions that are equally fun and applicable with not the same running time. Let me make some space here. So like I said, thinking is a useful process on its own. So you're getting better just by doing this. [INAUDIBLE] using more than one space total? We're using N log N space. Oh and it takes constant time-- It will only look at two elements. It's actually not constant time. We're not going to worry too much about time. It turns out being log. Ok, what was the order 1 then? You only access order 1 elements. Order 1 partial minimum. Oh, OK. Does it have to do with two different K? Maybe. I don't know what to do with that. There's probably some sort of tree involved. 23

24 So you're going to want to split things, right? Into halves. And you're going to want to be able to do this all the time. And we say 2 to the K so we don't have to worry about, oh my God what happens if the halves aren't equal? You can usually solve this when you implement the problem. But it's useful to not worry about that when you come up with your first algorithm. If you're going to start dividing in halves. Um. So that leads to another useful solution. That leads to a solution that takes-- that has N log N storage and it will run in N log N time with N log N element axes. So what you thinking of is you're going to have your array of elements, right? And say you want to find the minimum from here to here. You're going to have your array split in half. So you're going to find the minimum of this, and the minimum of this. But to do that you'll have to recurse. So this is also say split in half. So you'll have to find-- so it turns out that if you do this, in the end you'll have log N minima that you have to look at. But this is more, this is a cooler and more useful thing, so I'll try to put it on a PSet or something to make you think about it. So this is-- don't tell people yet. You might have a solution to a problem. OK. So what we thought of, or the way we thought of doing it, is 6, 7, 2, 5, 3, 8, 9, 4. So we compute these partial minima. We split the array into two. And these are the minima that we compute. Sorry, this is like this, this is like this. 24

25 So everything, so all the left half then these guys, then these guys, then this guy. Everything here, then these guys, then these guys, then this guy. So if your i and j are on different sides of the middle, then you do two lookups, you're done. If they're in the same half, then you have a problem that's half the size. So you're going to have to take this array that's half the size, 2, 5. Split it into halves and do the same thing. And then we're going to have to do the same to this other one. 3, 8, 9, 4, split it into halves and do the same thing. So in the end you'll end up in someplace where your interval ages are on different sides of the middle. And you look at two elements and you're done. Let's see how much space this takes. Can someone tell me a recursion for how much space, for how many minimums I would need to keep? So space for an elements is? The first level you have 8. So go down by an order of 2. So what's the first level? Of 8 N. So order N plus? N over 2? t of N over 2? OK S because it's space. N over 2. OK. And? You're missing something. Look at this picture. So this is the whole thing. Then I have a half. And then what else do I have? 2. The other half. Oh, 2. 25

26 OK so the difference between these two is that one of them gives you order N, the other one gives you N log N. So I gave you the answer, so I can't ask you for the answer now. But where did we see this before? Pretend these are t's. Sorry? So these are t's, this is the recursion for [? more sort?]. So once you put it up you don't draw the recursion tree and solve it. You say this is what we saw in [? more sort.?] Therefore, the solution is N log N. So this is how you show you have N log N space, and it's pretty clear that you're only going to access two elements. I don't understand how How it works? So you have your i and you have your j. Let's make that one i here. If you want to find the minimum, if i and j are on different sides of the half, you have this and this. And these two partial minima cover your entire interval. Now if they're on the same side of the half then you recurse to a smaller problem. Well you don't have to there because you already have the minimum of that section. Yeah. It wouldn't work if you had 6 and 2, right? Or that. Yeah. Well why not just take 7 and 2 then? Why do you have to break up the entire panel? Assume there's more things there. Oh I see. So if you have this, now it's no longer true, right? So wherever they are here, you do that. And remember your pseudocode has to be as simple as possible to reduce the probability of bugs. So you want to do the simplest possible thing, not have special 26

27 cases. OK. By the way there's a study that shows that for good or bad programmers, if you have 1,000 lines of code, there's a constant probability of a bug. And the constants are different for good versus bad programmers, but it's still a constant. So how many mistakes you make is directly proportional to how much you write. This is why we like simple solutions. OK, any questions on this? So we have four problems. We didn't cover one. Look at the other one, look at the solution. Ideally look at the problem, think for at least half an hour, then look at the solution. What I want you to take away is not just oh, here are three problems, let's memorize how we solve them. But the whole process thing, and how we played with data structures and how we used all the hints that we possibly could to build more insights into the problem. OK, cool. 27

### MITOCW R9. Rolling Hashes, Amortized Analysis

MITOCW R9. Rolling Hashes, Amortized Analysis The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources

### MITOCW R7. Comparison Sort, Counting and Radix Sort

MITOCW R7. Comparison Sort, Counting and Radix Sort The following content is provided under a Creative Commons license. B support will help MIT OpenCourseWare continue to offer high quality educational

### MITOCW 6. AVL Trees, AVL Sort

MITOCW 6. AVL Trees, AVL Sort 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.

### MITOCW 7. Counting Sort, Radix Sort, Lower Bounds for Sorting

MITOCW 7. Counting Sort, Radix Sort, Lower Bounds for Sorting The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality

### MITOCW watch?v=-qcpo_dwjk4

MITOCW watch?v=-qcpo_dwjk4 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

### MITOCW R19. Dynamic Programming: Crazy Eights, Shortest Path

MITOCW R19. Dynamic Programming: Crazy Eights, Shortest Path The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality

### MITOCW watch?v=2g9osrkjuzm

MITOCW watch?v=2g9osrkjuzm 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

### MITOCW ocw f08-lec36_300k

MITOCW ocw-18-085-f08-lec36_300k 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.

### MITOCW 8. Hashing with Chaining

MITOCW 8. Hashing with Chaining 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.

### 6.00 Introduction to Computer Science and Programming, Fall 2008

MIT OpenCourseWare http://ocw.mit.edu 6.00 Introduction to Computer Science and Programming, Fall 2008 Please use the following citation format: Eric Grimson and John Guttag, 6.00 Introduction to Computer

### MITOCW watch?v=zkcj6jrhgy8

MITOCW watch?v=zkcj6jrhgy8 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

### I'm going to set the timer just so Teacher doesn't lose track.

11: 4th_Math_Triangles_Main Okay, see what we're going to talk about today. Let's look over at out math target. It says, I'm able to classify triangles by sides or angles and determine whether they are

### MITOCW 22. DP IV: Guitar Fingering, Tetris, Super Mario Bros.

MITOCW 22. DP IV: Guitar Fingering, Tetris, Super Mario Bros. The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality

### How to Help People with Different Personality Types Get Along

Podcast Episode 275 Unedited Transcript Listen here How to Help People with Different Personality Types Get Along Hi and welcome to In the Loop with Andy Andrews. I'm your host, as always, David Loy. With

### >> Counselor: Hi Robert. Thanks for coming today. What brings you in?

>> Counselor: Hi Robert. Thanks for coming today. What brings you in? >> Robert: Well first you can call me Bobby and I guess I'm pretty much here because my wife wants me to come here, get some help with

### The following content is provided under a Creative Commons license. Your support will help

MITOCW Lecture 4 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

### Whereupon Seymour Pavitt wrote a rebuttal to Dreyfus' famous paper, which had a subject heading, "Dreyfus

MITOCW Lec-06 SPEAKER 1: It was about 1963 when a noted philosopher here at MIT, named Hubert Dreyfus-- Hubert Dreyfus wrote a paper in about 1963 in which he had a heading titled, "Computers Can't Play

### The Open University xto5w_59duu

The Open University xto5w_59duu [MUSIC PLAYING] Hello, and welcome back. OK. In this session we're talking about student consultation. You're all students, and we want to hear what you think. So we have

### 10 Copy And Paste Templates. By James Canzanella

10 Copy And Paste Email Templates By James Canzanella 1 James Canzanella All Rights Reserved This information is for your eyes only. This ebook is for your own personal use and is not to be given away,

### SHA532 Transcripts. Transcript: Forecasting Accuracy. Transcript: Meet The Booking Curve

SHA532 Transcripts Transcript: Forecasting Accuracy Forecasting is probably the most important thing that goes into a revenue management system in particular, an accurate forecast. Just think what happens

### THE STORY OF TRACY BEAKER EPISODE 17 Based on the book by Jacqueline Wilson Broadcast: 18 September, 2003

THE STORY OF TRACY BEAKER EPISODE 17 Based on the book by Jacqueline Wilson Broadcast: 18 September, 2003 award! Ready? Ready? Go on! Yeah, that's it. Go on! You're doing it yourself! I've let go! Go on,

### S: Hum, that you can't only catch it hum, sexually, like you catch it through blood and stuff.

Number 51 I: In this interview I will ask you to talk about AIDS, I want you to know that you don't have to answer all my questions, if you don't want to answer a question, just let me know and I will

### Description: PUP Math World Series Location: David Brearley High School Kenilworth, NJ Researcher: Professor Carolyn Maher

Page: 1 of 5 Line Time Speaker Transcript 1 Narrator In January of 11th grade, the Focus Group of five Kenilworth students met after school to work on a problem they had never seen before: the World Series

### EPISODE 10 How to Use Social Media to Sell (with Laura Roeder)

EPISODE 10 How to Use Social Media to Sell (with Laura Roeder) SEE THE SHOW NOTES AT: AMY PORTERFIELD: Hey there! Amy Porterfield here, and we are on episode #10. Why am I so excited about that? Well,

### OKAY. TODAY WE WANT TO START OFF AND TALK A LITTLE BIT ABOUT THIS MODEL THAT WE TALKED ABOUT BEFORE, BUT NOW WE'LL GIVE IT A

ECO 155 750 LECTURE FIVE 1 OKAY. TODAY WE WANT TO START OFF AND TALK A LITTLE BIT ABOUT THIS MODEL THAT WE TALKED ABOUT BEFORE, BUT NOW WE'LL GIVE IT A LITTLE BIT MORE THOROUGH TREATMENT. BUT THE PRODUCTION

### The ENGINEERING CAREER COACH PODCAST SESSION #1 Building Relationships in Your Engineering Career

The ENGINEERING CAREER COACH PODCAST SESSION #1 Building Relationships in Your Engineering Career Show notes at: engineeringcareercoach.com/session1 Anthony s Upfront Intro: This is The Engineering Career

### Marlon National Deal #1

Marlon National Deal #1 Call Marlon and William Call 1 Length 11 min Hey. Hey, man. Yeah. We can call him back in a little while. Let's move on and see who else we got or we're gonna call today. You want

### The Open University SHL Open Day Online Rooms The online OU tutorial

The Open University SHL Open Day Online Rooms The online OU tutorial [MUSIC PLAYING] Hello, and welcome back to the Student Hub Live open day, here at the Open University. Sorry for that short break. We

### URASHIMA TARO, the Fisherman (A Japanese folktale)

URASHIMA TARO, the Fisherman (A Japanese folktale) (Urashima Taro is pronounced "Oo-rah-shee-ma Ta-roe") Cast: Narrator(s) Urashima Taro His Mother 3 Bullies Mother Tortoise 2 Swordfish Guards Sea King

### Buying and Holding Houses: Creating Long Term Wealth

Buying and Holding Houses: Creating Long Term Wealth The topic: buying and holding a house for monthly rental income and how to structure the deal. Here's how you buy a house and you rent it out and you

### Zoë Westhof: Hi, Michael. Do you mind introducing yourself?

Michael_Nobbs_interview Zoë Westhof, Michael Nobbs Zoë Westhof: Hi, Michael. Do you mind introducing yourself? Michael Nobbs: Hello. I'm Michael Nobbs, and I'm an artist who lives in Wales. Zoë Westhof:

### NFL Strength Coach of the Year talks Combine, Training, Advice for Young Strength Coaches

NFL Strength Coach of the Year talks Combine, Training, Advice for Young Strength Coaches Darren Krein joins Lee Burton to discuss his recent accolades, changes in the NFL Combine, his training philosophies

### MITOCW watch?v=g2noqcegscm

MITOCW watch?v=g2noqcegscm 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

### MITOCW watch?v=kfq33hsmxr4

MITOCW watch?v=kfq33hsmxr4 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

### MITOCW MIT6_172_F10_lec13_300k-mp4

MITOCW MIT6_172_F10_lec13_300k-mp4 The following content is provided under a Creative Commons license. Your support help MIT OpenCourseWare continue to offer high quality educational resources for free.

### Autodesk University More Practical Dynamo; Practical Uses for Dynamo Within Revit

Autodesk University More Practical Dynamo; Practical Uses for Dynamo Within Revit Hello, everyone. How's everyone doing? All right! Everyone excited to learn about Dynamo? Yeah! Welcome, everyone, to the

### We're excited to announce that the next JAFX Trading Competition will soon be live!

COMPETITION Competition Swipe - Version #1 Title: Know Your Way Around a Forex Platform? Here s Your Chance to Prove It! We're excited to announce that the next JAFX Trading Competition will soon be live!

Forex Fools and Liars by Jason Fielder 1 Forex Fools and Liars Why Everyone In This Business (Including Me) By Jason Fielder IMPORTANT: As an added bonus for downloading this report, you also received

### Laura is attempting to bake and decorate a cake, with no success. LAURA It didn t work. Damn it! It didn t work. Final Draft 7 Demo

THE HOURS - & - 1 INT. S HOME - KITCHEN - DAY Laura is attempting to bake and decorate a cake, with no success. It didn t work. Damn it! It didn t work. Kitty knocks on the door. Hello? Laura? Laura opens

### Block Sanding Primer Dos and Don ts Transcript

Block Sanding Primer Dos and Don ts Transcript Hey, this is Donnie Smith. And welcome to this lesson on block sanding primer. In this lesson, we're going to give you some of the do's and some of the don

### 10 Tips for Conquering Planned Pooling Crochet

10 Tips for Conquering Planned Pooling Crochet Have you tried Planned Pooling Crochet? I ADORE it!! I probably spend far too much time doing it! Whenever I'm at the craft store now... I'm always checking

Gus: So Stacy, for your benefit I'm going to do it one more time. Stacy: Yeah, you're going to have to do it again. Gus: When you call people, when you engage them always have something to give them, whether

### The following content is provided under a Creative Commons license. Your support

MITOCW Lecture 20 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

### IB Interview Guide: How to Walk Through Your Resume or CV as an Undergrad or Recent Grad

IB Interview Guide: How to Walk Through Your Resume or CV as an Undergrad or Recent Grad Hello, and welcome to this next lesson in this module on how to tell your story, in other words how to walk through

### How Can I Deal With My Anger?

How Can I Deal With My Anger? When Tempers Flare Do you lose your temper and wonder why? Are there days when you feel like you just wake up angry? Some of it may be the changes your body's going through:

### 26 AdWords Mistakes: How They Are Killing Your Profits (And How To Fix Them) Contents

Contents Mistake #1: Not Separating Search Network & Display Network Campaigns... 4 Mistake #2: Not Adding Negative Keywords... 5 Mistake #3: Adding Too Many Keywords Per Ad Group... 6 Mistake #4: Not

### UW_HELP_PODCAST_2.mp3

UW_HELP_PODCAST_2.mp3 Randy: [00:00:08] Thank you for joining us on today's episode of the UW HELP podcast. I'm Randy Parvin, your host, and a student services coordinator at the University of Wisconsin

### and what to do instead

TOP 5 MISTAKES THAT LAND APPLICANTS A JOB THEY DON'T WANT WELCOME let's get acquainted Interviewing is easy Hi, I'm Chris, and I'm an intentional interviewing master. A...what now? Intentional interviewing

### https://modernphotosolutions.com/chelle

Hey, everyone. Welcome to Modern Photo Solutions. I'm Steph, and I am here today with Chelle Ludwinski. Hi, Chelle. Hi, Steph. Thanks for being here today. Hey, it's always fun to chat with you. Yeah.

### UNDERSTANDING LAYER MASKS IN PHOTOSHOP

UNDERSTANDING LAYER MASKS IN PHOTOSHOP In this Adobe Photoshop tutorial, we re going to look at one of the most essential features in all of Photoshop - layer masks. We ll cover exactly what layer masks

### Make More Money This Month Using Tapping and the Law of Attraction.

Make More Money This Month Using Tapping and the Law of Attraction. Introduction to the Law of Attraction: I have been studying the Law of Attraction for over 22 years. OK, well, I dabbled in it for about

### THE STORY OF TRACY BEAKER EPISODE 8 Based on the book by Jacqueline Wilson Sändningsdatum: 13 mars 2003

THE STORY OF TRACY BEAKER EPISODE 8 Based on the book by Jacqueline Wilson Sändningsdatum: 13 mars 2003 ADELE: What you up to? TRACY: Getting ready for Cam. ADELE: Who's Cam? TRACY: You've never heard

### Heuristics: Rules of Thumb

MODELING BASICS Heuristics: Rules of Thumb Tony Starfield recorded: November, 2009 What is a heuristic? A heuristic is a rule of thumb. It is something that is sometimes true and sometimes works, but sometimes

### ENEMY OF THE STATE. RACHEL How's the trout? DEAN It tastes like fish. RACHEL. It is fish.

Page 398 ENEMY OF THE STATE How's the trout? It tastes like fish. It is fish. I mean it tastes like every other fish I've ever had. Every fish tastes the same. Do you like fish? Not that much. Here's what

### 6 Sources of Acting Career Information

6 Sources of Acting Career Information 1 The 6 Sources of Acting Career Information Unfortunately at times it can seem like some actors don't want to share with you what they have done to get an agent

### BBC LEARNING ENGLISH How to chat someone up

BBC LEARNING ENGLISH How to chat someone up This is not a word-for-word transcript I'm not a photographer, but I can picture me and you together. I seem to have lost my phone number. Can I have yours?

### Lesson 2: Choosing Colors and Painting Chapter 1, Video 1: "Lesson 2 Introduction"

Chapter 1, Video 1: "Lesson 2 Introduction" Welcome to Lesson 2. Now that you've had a chance to play with Photoshop a little bit and explore its interface, and the interface is becoming a bit more familiar

### Ep #207: Being a Good Employee

Full Episode Transcript With Your Host Brooke Castillo Welcome to The Life Coach School Podcast, where it s all about real clients, real problems, and real coaching. And now your host, Master Coach Instructor,

### Ep #138: Feeling on Purpose

Ep #138: Feeling on Purpose Full Episode Transcript With Your Host Brooke Castillo Welcome to the Life Coach School Podcast, where it's all about real clients, real problems and real coaching. Now, your

### Ep #181: Proactivation

Full Episode Transcript With Your Host Brooke Castillo Welcome to The Life Coach School Podcast, where it s all about real clients, real problems, and real coaching. And now your host, Master Coach Instructor,

### PARTICIPATORY ACCUSATION

PARTICIPATORY ACCUSATION A. Introduction B. Ask Subject to Describe in Detail How He/She Handles Transactions, i.e., Check, Cash, Credit Card, or Other Incident to Lock in Details OR Slide into Continue

### Easily Smooth And Soften Skin In A Photo With Photoshop

Easily Smooth And Soften Skin In A Photo With Photoshop Written by Steve Patterson OPEN THE START FILE BY RIGHT CLICKING THE.JPG FILE AND CHOOSING OPEN WITH ADOBE PHOTOSHOP. SAVE AS: X_lastname_firstname_Smooth_Soft

### Fairy Wings. A short sketch by Barbara Hockley. Please visit.

Fairy Wings A short sketch by Barbara Hockley Please visit www.offbeat-theatre.co.uk for Performing Rights to this work and further plays and sketches for Youth Theatres and Schools All rights reserved.

### This is the Telephone Dialogue Word-for-Word Transcription. --- Begin Transcription ---

Page 1 Seller: Hello This is the Telephone Dialogue Word-for-Word Transcription --- Begin Transcription --- Hello, is this the owner of house at 111 William Lane? Seller: Yes it is. Ok, my

### Class 1 - Introduction

Class 1 - Introduction Today you're going to learn about the potential to start and grow your own successful virtual bookkeeping business. Now, I love bookkeeping as a business model, because according

### CSE : Python Programming

CSE 399-004: Python Programming Lecture 3.5: Alpha-beta Pruning January 22, 2007 http://www.seas.upenn.edu/~cse39904/ Slides mostly as shown in lecture Scoring an Othello board and AIs A simple way to

### Relationship Fix Tip #1: Do Some Self-reflection.

Introduction No matter how long you've been in a relationship, the foundation of a strong and healthy one can easily be destroyed. When you notice that your relationship is spiraling downwards, it's an

### 1 of 14. Lesson 2 MORE TOOLS, POLYGONS, ROOF. Updated Sept. 15, By Jytte Christrup.

1 of 14 TUTORIAL - Gmax (version 1.2) Lesson 2 Updated Sept. 15, 2008. By Jytte Christrup. MORE TOOLS, POLYGONS, ROOF. We need to talk a bit about polygons and polycount. In Trainz, a model is seen as

### Episode 14: How to Get Cheap Facebook Likes and Awesome Engagement Subscribe to the podcast here.

Episode 14: How to Get Cheap Facebook Likes and Awesome Engagement Subscribe to the podcast here. Hi everybody welcome to episode number 14 of my podcast where I'm going to be talking about how to use

### #022: JOB INTERVIEW IN ENGLISH COURSE

#022: JOB INTERVIEW IN ENGLISH COURSE Hi, everyone! I'm Georgiana, founder of SpeakEnglishPodcast.com. My mission is to help YOU to speak English fluently. In this episode: I'll help you prepare for a

### Graphs and Charts: Creating the Football Field Valuation Graph

Graphs and Charts: Creating the Football Field Valuation Graph Hello and welcome to our next lesson in this module on graphs and charts in Excel. This time around, we're going to being going through a

### Would You Like To Earn \$1000 s With The Click Of A Button?

Would You Like To Earn \$1000 s With The Click Of A Button? (Follow these easy step by step instructions and you will) This e-book is for the USA and AU (it works in many other countries as well) To get

### 019 My Wife Caught Me Looking at Porn, Now What?!?!

019 My Wife Caught Me Looking at Porn, Now What?!?! Welcome to Pornfree Radio. I'm Matt Dobschuetz. This is the podcast for people who want to live 100% porn free. Today's episode is called, My Wife Caught

### Communicating Complex Ideas Podcast Transcript (with Ryan Cronin) [Opening credits music]

Communicating Complex Ideas Podcast Transcript (with Ryan Cronin) [Opening credits music] Georgina: Hello, and welcome to the first Moore Methods podcast. Today, we re talking about communicating complex

### BOOK MARKETING: How to Dominate a Niche Market the Right Way Interview with Chris Prefontaine

BOOK MARKETING: How to Dominate a Niche Market the Right Way Interview with Chris Prefontaine Welcome to book marketing mentors, the weekly podcast, where you learn proven strategies, tools, ideas, and

### OG TRAINING - Recording 2: Talk to 12 using the Coffee Sales Script.

OG TRAINING - Recording 2: Talk to 12 using the Coffee Sales Script. Welcome to The second recording in this series which is your first training session and your first project in your new gourmet coffee

### Lyrics for Keeper of Your Heart EP

Track Listing: 1. The Subway Song 2. Unpredictable 3. Angel of Mine 4. Susie 5. Keeper of Your Heart Lyrics for Keeper of Your Heart EP The Subway Song On the train on my way into the city You step on

### The Guru Code Quick Start Steps

The Guru Code Quick Start Steps By Paul Mascetta Copyright Influence Mastery Inc.!1 Step 1: Find Your Sweet Spot 4 Step 2: Create Your Avatar 7 Step 3: Develop Your Story 10 Step 4: Build An Online Presence

### Full Episode Transcript

Full Episode Transcript With Your Host Brooke Castillo Welcome to The Life Coach School Podcast, where it s all about real clients, real problems, and real coaching. And now your host, Master Coach Instructor,

### Editing Your Novel by: Katherine Lato Last Updated: 12/17/14

Editing Your Novel by: Katherine Lato Last Updated: 12/17/14 Basic Principles: I. Do things that make you want to come back and edit some more (You cannot edit an entire 50,000+ word novel in one sitting,

### How to Get Gigs - The Secret Formula Revealed

How to Get Gigs - The Secret Formula Revealed So you want gigs. Everyone else seems to have them, so surely there must be a secret formula to getting them. That, or all the other musicians up on stage

### First a quick announcement. In case you have forgotten, your lab notebooks are due tomorrow with the post-lab

MITOCW L09a-6002 All right. Let's get started. I guess this watch is a couple minutes fast. First a quick announcement. In case you have forgotten, your lab notebooks are due tomorrow with the post-lab

### ~ Mahayana Conduct Part I ~

~ Mahayana Conduct Part I ~ By Mingyur Rinpoche Hello, today is about the conduct of Mahayana. As I mentioned a little bit earlier, conduct is very, very important because whether you can really improve

### "The Lottery Shotgun Method:

"The Lottery Shotgun Method: Winning More Without Breaking The Bank" By Lottery Guy Copyright 2012 Lottery-Guy.com. ALL RIGHTS RESERVED. This report is copyright. It may not be copied, reproduced or distributed

### How to Discover Your Switch to Unlimited Success in Life

How to Discover Your Switch to Unlimited Success in Life In-depth Insights To The TRUE Cause Of Success In All Areas Of Life *** Please print for easy reading, *** *** highlighting, and reflecting ***

### Высшая проба: английский язык. 2 тур. 7 класс

Высшая проба: английский язык. 2 тур. 7 класс Audio # 1: Scripts 0:12 What you're doing, right now, at this very moment, is killing you. More than cars or the Internet or even that little mobile device

### How to Develop a Millionaire Mindset

How to Develop a Millionaire Mindset PLEASE REVIEW THESE RELATED OFFERS, THANK YOU! Alien Technology Can Make You Rich! Read the shocking story of how alien technology turned a poor homeless boy into a

### Autodesk University Precast Building Design Using Revit, Robot Structural Analysis, and Dynamo

Autodesk University Precast Building Design Using Revit, Robot Structural Analysis, and Dynamo ALI SHRIH: Good afternoon, everyone. My name is Ali Shrih. I work for a small company in Wisconsin, J3 Engineering.

### BEST PRACTICES COURSE WEEK 20 Managing Attributes, Project Preferences, Work Environment Part 1-F Element Attributes: Pen Colors and Pen Sets

BEST PRACTICES COURSE WEEK 20 Managing Attributes, Project Preferences, Work Environment Part 1-F Element Attributes: Pen Colors and Pen Sets Welcome everyone to the ArchiCAD Best Practices Course lesson.

### Module 7 Speaker: Dr. Jamey Schrier Topic: Right Fit Hiring

Page 1 Module 7 Speaker: Dr. Jamey Schrier Topic: Right Fit Hiring AUDIO START: [0:00:01] Hi, welcome to the Right Fit module. My name is Dr. Jamey Schrier. So, today we're going to talk about hiring the

### Resolving Managing Customer Complaints by the James Walker

Resolving Managing Customer Complaints by the 1000 James Walker Aled Davies: Hi everyone, my name is Aled Davies, founder of MediatorAcademy.com, home of the passionate mediator. You know what we do on

### Sorry Justin Bieber You gotta go and get angry at all of my honesty You know I try but I don't do too well with apologies I hope I don't run out of

Sorry Justin Bieber You gotta go and get angry at all of my honesty You know I try but I don't do too well with apologies I hope I don't run out of time, could someone call a referee? Cause I just need

### 1. To make for. 2. Satisfying. 3. To seek help. 4. To be off the hook. 5. Trend. 6. To provide. 7. To go into. 8. To take to something

Career Satisfaction Okay, so Vin, what do you think makes for a satisfying career? Are you satisfied in your career, would you say? Yeah, really happy I picked optometry and I don t uh I would never look

I S S U E 1 S U M M E R 2 0 1 4 Rural Business Best Practices EXCLUSIVE ACCESS FOR YOU: What really works for growing a thriving, profitable business in rural areas. Are you getting you money s worth from

### MITI Coding: Transcript 4

MITI Coding: Transcript 4 T: Hi Jim, why don t you tell me what brings you in today? [OQ] C: Well my uh my doctor, I just went in and got this checkup and I m starting to have some really bad problems

### Regardless of how you got here, you have keys that don't match, and you'd like to have a one-key system. Well, today is your lucky day!

Vollkswagen Cabriiollet DIY Guiide Removiing Door Handlles & Repaiiriing Door Locks This how-to was originally posted on VWvortex.com by scirocco*joe : http://forums.vwvortex.com/zerothread?id=3496179.

### Episode 12: How to Squash The Video Jitters! Subscribe to the podcast here.

Episode 12: How to Squash The Video Jitters! Subscribe to the podcast here. Hey everybody. Welcome to Episode #12 of my podcast where I am going to help you shake off those annoying, pesky little jitters

### LEARN HOW TO MAKE EASY MONEY

LEARN HOW TO MAKE EASY MONEY How To Make Money Easy And Fast No Hard Work Do You Need Money? Find Out How!!?!! As You Seen On Oprah And 20/20 Oprah Winfrey and ABC's ***** investigation team 20/20 also