# MITOCW R13. Breadth-First Search (BFS)

Size: px
Start display at page:

Transcription

2 So we have to speed up something. When I ran the tests-- do I say what I got as results? The time isn't on the PSET so you can say what you got as -- Pardon? The time isn't on the PSET so you can say what you got as a time. OK, the slowest was like add for me. You should look to see add is a valid answer. Look at the questions and see if add is a valid answer. OK. It's not like what was lowest function, right? There's more text there. You should read the rest of the text and see if add makes sense as a valid answer. Sure. OK. What you're doing-- big picture-- is you have some processor, that's not a real processor, and it can do arithmetic with bytes and 16-bit words. And we give you the basic operations and then they give you a library for large number arithmetic because, guess what? 16 bytes addition, subtraction? Not going to cut it for science applications are for cryptography, what we want to play with. What are the basic operations that that processor can do? Front of the PSET, so even if you didn't get to the coding assignment you can still tell me. Divide, and zeros, I think. Zeros. Plus, minus, multiply, divide, and mod. Let's start to these. So you have two primitives in that processor. You have have bytes, which are basically 8-bit digits. There's 200. The range is 0 to 256. And the word is 16-bit, from 0 to the 16 minus 1. If you care to know this is 6, 5, 5, 3, 5. So, if you take two 2

3 bytes and add them together what do you get? Not right. It's a trick question. You get word. The processor cannot do simple math on bytes. It converts them up to words and all the math happens on words. Now if you guess two words, and add them up together what do you get? Two words? You do if we're not that nice. A world in carry bit? Sorry, you just get word. At least nobody said a byte. I was like, please don't say byte, please don't say byte. You said carry bit. Why do we care about the carry bit? What is the problem if you do addition this way? If you're going too high. If the highest bit is one on both of them. Then it's like overflow, kind of. Yep. Suppose we're trying to add 2 to the 16 minus 1 plus 2 to the 16 minus 1. By the way, does anyone remember hex notation? Hexadecimal? OK, people who started the PSET remember. That's good. It will be easy to write things hex for the PSET. If you try to add these numbers you're going to get 1, F, F, F, E. You can use the math here to see that this is more than the words. So you would like to know that this thing overflows, right? You like to know that there is. Well we don't give you that. All you get to this. So addition happens, modulo 2 to the 16. If you want to be able to detect overflow what they have to do? Just tests those bits. That one way of doing it. It would take quite a few instructions, though. 3

4 If you want to do overflow detection, the easiest way I think of doing it this to use this form. So suppose you have two bytes. This is the maximum value in a byte, right? 255, 2 to the 8 minus 1. If you have 2 bytes and you add them all together you're going to get 1, F, E. Right? It's just like the case here, except you have a fewer F's. Where is the carry here? Could be the 1, right? Yep. This guy here is the carry and this guy's the low result. Does anyone know how these are called? If you have a word and you have two bytes, what is the first byte, what is the second bytes? Most significant byte, M, S, B, and least significant byte, L, S, B. If you want to figure out your carries, then you should do your math this way. You're going to have byte 1 plus byte 2. Add them together. And then you call L, S, B to get the byte result. And then you call M, S, B to get the carry. This is addition. Everyone with me so far? By the way, are these numbers signed or unsigned? No negative numbers, right? So no support for negative numbers. Everything is going to be positive. And we're going to build everything we need off of positive numbers because they're easier to deal with. What if I have two words and I subtract them? What do I get? Word. OK. What if I have 0 minus 1? What do I get? 0. Not quite. 4

5 If you're not using signs? Do you get O, 1? O, 1's, OK. Ya. Wait-- So, O 1's would be this, F, F, F, F. That's assuming if you signed then. It will overflow. That's a really big number then. So fancy CS, 2's complement. For people who think in math mode, what is this? I think. It's minus 1 mod 2 to the 16. Remember, when we were doing modular arithmetic before, to figure out a number's multiplicative inverse? And when we were doing rolling hashes? We didn't want negative numbers. We made them positive. So minus 1 lot to the 16 is 2 to the 16. Minus 1, and comes out to this value. So you get minus 1, it's just that you have to know your basis. So we got the addition and subtraction. Let's talk about multiplication. What do you do for multiplication? What can you multiply? Two bytes, very good. Just two bytes. What do you get? A word. Thank you. You multiply two bytes, you get a word. What if there's overflow? It's a trick question. There's no overflow. There is no overflow. So two bytes, 2 to the eighth minus 1 times 2 to the eighth minus 1, is 2 to the 16 minus 2 to the 8th minus 2 to the eighth plus 1. You can say this safely without doing the arithmetic, right? This is how much you can hold, in other words. This is how much you can holding in a byte. Why do you minus 1? Ya, minus 1. There's a minus 1 here, and there's a minus 1 here, but I can't find it 5

6 here, so roughly this. But there is an overflow. But where did you get the minus 1 from? Where do you get the-- so, this is how much you can hold in a byte. Byte has 8 bits, right? From 0 0 to F F. This is 2 to the eighth minus 1. OK. OK, so multiplication? There is an overflow. I don't have to deal with that. You guys have to figure out how to deal with it. How about division? What can you divide? Some words? Almost. Words like-- A word divided by a byte. What do you get out of it? Words? That would be nice. Nope. Sorry, you get a byte. And if you do module, you also get a byte. What if there's overflow in the division? What happens? What would you expect to happen? We don't have any best flowing point numbers, so, we shouldn't get overflow, right? How about 2 to the 16 minus 1 divided by 1? So what do get? Same thing? Will this fit in the byte? Yes? No. 6

7 [LAUGHTER] No. Well, that time I don't get a word. You don't get a word. I promise you get a byte. What will that byte be? It's going to be modulo something. Most significant-- That's reasonable, right? Modulo to 56 because that's what it can carry. What about modulo? What happens there if you get overflow? The same thing. It's just going to loop, right? 0? So if you do a modulo, this is going to be, at most, 255 right? If you do modulo 255, the remainder is going to be between 0 and 254. Will that ever overflow byte? No overflow. No need to worry about it. Word addition can overflow. Subtraction can overflow. Multiplication doesn't overflow. Division overflows, modulo doesn't. What do you mean, like will it see the space confined? Yes. It sees the space of the result. Because here, if you're adding two words, the result exceeds the space of a word. Which is what you get. Is it just in all cases it's just Exactly. So the reason you have to deal with this weird system is this is, pretty much, how Intel does their arithmetic. If you look at old school, 16-bit Intel processors, you have registers and you have exactly these operations. For newer processors, there are 32 bits, but then it's just, you write more F's on the board and you get the same thing. Is it most significant bit, or most significant byte? Most significant byte. On a real processor, you have registers that are the size of a word and then you can pull out the bytes in constant time. What constant do we have? These are the operations. What constants do we have? Only two constants, 7

8 0 and 1. What if you want to get something bigger? What if you want to get 2? How do you get 2? Two 1's? 1 plus 1? Yep. What if you want to get this number? Do that several times? [LAUGHTER] It's kind of painful to type, even if you copy paste. There's a method on Word called from-bytes. And it takes an M, S, B and an L, S, B and it gives you a word. So what would I give it? Let's give it a 1 and let's give it a 0. So this will get 1, 0, 0 and then minus 1. Yes? OK. Intel is pretty nice about constants, but some other processors aren't. So I figured, why not let's get you acquainted to these kind of tricks, to too. Let's make the PSETS more interesting. All right, so any questions on this fake processor that you have to code for? Can you explain the last one again? Here? Yeah, Word from-bytes. So in Word from-bytes a word is 2 bytes. One next to the other. It gives you the first byte, and gives you the second byte. In this case, the first byte is 1. The second byte is 0. Right? So 2 bytes. A 1 and a 0. How do you write this in hex? 1, 0, 0. One byte, second byte. And then I subtract 1 and I get this. While I erase the board, I want you guys to think of graph questions because this is 8

9 the other topic we're looking at today. What was unclear about the lecture? What is unclear about graphs in general? Do guys remember the handshaking lemma? What does it mean? How do you prove it? Things of that sort. What do you guys want to cover today? Handshaking, that's the thing where you have a bunch nodes and they're all connected, like they're all in a closed graph, that the number of edges is equal to twice the number of vertices? OK. That's all it is, right? The number of vertices? No. The number of handshakes that occurred are twice the number of edges. You said the number of vertices, wait-- No, vertices and edges are not related in here. Yeah, think of a triangle, right? That's three edges, three vertices. Which is like not two times, which is what you said. It's the number of degrees is twice the number of edges. That's what I was thinking of then. All right, so let's start with simple stuff. What's a graph? Nodes and edges? All right. Fancy word for nodes? Vertex. Vertex. Vertices and edges. How do I draw vertices? How do I draw edges? Circles and lines. Circles and lines. 9

10 0's and 1's. Possibly arrows. Possibly arrows. I like that. You want to get fancy. [LAUGHTER} When do I draw an edge as a line? When do I draw it as an arrow? Directed under. Which one's which? Directed as an arrow. Character number. Cool. Let's draw this graph here. Yeah, looks like a pretty boring graph. Is this graph connected or not? Yes. What's a connected graph? I think that we can get to any other node following some path. There's a path from any to any other node. How do I make this unconnected using the least amount of effort? It's a bit of a trick question. Any guess is fine. What was the question again? How do I make this unconnected using the least amount of effort on my behalf? Just add a node? I heard you move pages. I don't like you racing because I don't like the-- So I like that answer out of the two I heard. Now it's not a connected graph. How many connected component does it have? Two and five. Or one connected component, but there are two components? OK, what's a connected component? 10

11 It's like in that part of the graph the neck follows the prognito beacon and puts them in two parts [INAUDIBLE] two connected components-- So, a connected component is a bunch of vertices such that you can get from one vertex to all the other vertices. If the graph is undirected, that's true for any vertex in the set. We also want the sets to be maximal because, if we say this is a connected component, it's not very useful. Noticing that this whole thing is a connected component is useful. So this is one component. This is the other component. Make sense? So, we have the world. We have cities. You can bike from a city to another city and that's it. No other a route of transportation. How many connected components? Seven? OK. Roughly seven. Why? OK, so it only seven? Seven continents? OK. Let's say roughly seven. So this is what I wanted. I wanted some thinking. If you try to get from a continent to another continent, presumably you'd go through some patch of sea. Otherwise, why are they calling them continents? Does anyone want to give out another answer? I asked this in the previous section and some people there give me some very precise answers that are not continents. This is what I had in mind, by the way. As far as I'm concerned, this is a good answer. Come on guys, world. Two things, islands and Europe and Asia are connected, so you can go from one to the other. They're weird. Why are they separate continents? I have no idea. The geography people might-- Sorry? You roll mountains? 11

12 OK, so it would be a pain bike through them, but presumably you can. If you have a robot that doesn't get tired or something you can bike. It doesn't mind falling off cliffs. The answer, depending on my geography, we know is somewhere between 7 and 10,000, or whatever the number of islands is. There are a lot of tiny island somewhere, right? Anyways, between seven and a big number. These are connected components in the world. What's the degree of A? 2. What's the degree of the D? Very good. Let's make this. The degrees of F, G, H are 2, 2, 2. The degree of C is 2. The degree of B is? --2. Thank you. And the degree of E is? 2. If you add up all these numbers together what you get? 18. I can't do math, so I couldn't possibly have added all these numbers together, right? I used something else. How many edges do I have in the graph? 1, 2, 3, 4, 5, 6, 7, 8, 9. Do you see your connection here? Yeah. This is the handshaking lemma. That's all there is to it. So if you look at the degrees of a node each edge adds one to two degrees. For instance, this edge adds one to C's degree and adds one to D's degree. If you're a math person and you write this up, you have to write sums. You have big sums using intimidating notation, so it's not as obvious. But this is really all there is to it. Each edge contributes one to two nodes degrees. If you add up all the 12

13 degrees, you're going to get to times the number of edges. So far so good? What if we have directed graphs? What if I had this? A, B, C, D, E, F. What is the degree of A? 2? Not quite. Sorry, that was trick question. A doesn't have a degree. If you have directed graphs, you don't have degrees. You have in degrees and out degrees. Now that I've said that you have no idea, right? What's the out degree of A? Sometimes this is known as the degree of edges. This is 2. What's the in degree of A? So A has two edges going out, 0 edges going in. How about D? What's the out degree of D? Come on guys. Don't scare me. (LAUGHS) What's the in degree of D? 2? 2, very good. So what's the equivalent of the handshaking lemma on oriented graphs? The sum of the in degrees and out degrees? OK, what about them? They're equal to twice the number of vertices? Not quite. They're equal to? You had 80 percent of the answer. 13

14 Oh. (LAUGHS) So the sum of the in degrees and the sum of the out degrees. So add them up? If you add them up, you will get two times the number of edges. That is correct. But, I want something more-- They equal each other? Yep. This is cooler, right? So why is that? Does anyone see why that's the case? Each edge-- Come on, guys. So what does each edge do? So if I look at this edge here, this edge is going to contribute 1 to B's out degree, and 1 to D's in degree. Each edge contributes 1 to an out degree and 1 to an in degree. That means that total sum of out degrees equals the total sum of in degrees. Both of them are E and they combined to E. Sorry, eyed I don't know why that didn't click to me right away. OK. The intuition behind this is, that for every node, if you take an edge you're going to get somewhere else. If the sum of the out degrees was bigger, then you have a black hole somewhere. If you go on an edge you don't come back. Same four in degrees. OK, how do we represent graphs? I think we just did. Sure, if you're drawing them on the board that's what you do, but if you're in Python what do you do? You can have a link list. 14

15 Of? Of each node having its neighbors linked with. OK, so I have one big link list? Or how does this work? You'd have a starting point of some sort. A starting node. Then from that node you can have its neighbors connected to it. So it was a link list, I guess. I wasn't precise. That is not trivial to build. By the time we build that we're done with this recitation. What do you get is the vertices and the edges. We want an easier representation that just looks at the vertices and build something, then looks at the edges and builds something. You could have a table of values. Like, A has these neighbors-- a dictionary. Let's go for that. So we have a dictionary. For each vertex you have the list of vertices that are connected to it. What's the list for A? B and C? OK, what's the list for B? A, D, and E. All right. For Python this would be a dictionary, right? So how much total space does this take? The number of nodes? The number of-- --nodes. Well, then there's also the space you made for the list, though. 15

16 If these were actual slots in an array-- so this would be an array-- I would have the number of nodes. You're giving away the answer to my next question. So I have these slots here. This would be an array. It's order V just to store this. The thing in Python is that have these dictionaries that are fancy hashes where they grow as you need them. For example, you have 10,000 vertices but you don't have any edge. Your dictionary size is going to be order 1 because it only grows as you add edges to it. So this is assuming that I don't store empty lists. If I have a stray node here, if I have a node I-- say this is I-- if I don't store anything, I don't have to pay for it. If I store an empty list here, then I have to pay for it. There is an order V component that you mentioned. Let's say, if there's a graph there, everything is not connected so there are a bunch of words instead. Then in that case it would be order V, right? It's order V if we store empty lists for the nodes that don't have edges. Right. And if none of the nodes have edges, they're all unconnected-- On the other hand, if I don't store anything for the nodes that don't have edges, it's order 1. If you get no edges do we do an empty list or do we not store it? Depends on what you want. So if we store empty lists you're going to have an order V cost here. But your code is going to be simpler, presumably, because you don't have to check if something is or isn't in the dictionary. How about this stuff? What's the total size of this stuff here? OK. Order E. How many elements do I have in here in total? In this thing here. So what's the sum of the length of the lists? Average value of E times the number of vertices? 16

17 Let's go over something else. The degree-- All right. That's what I wanted to hear. A lists its neighbors, right? The number of neighbors that A has is the degree of A. B lists its neighbors, so this is the degree of B. If you sum up over all of them, what is the sum of all the agrees in the graph? 2, E. 2, E. We learned about this, right? The handshaking lemma, 2, E. So what is the total cost for storing this data structure? So V plus E, assuming empty lists. Let's look at another data structure for storing things in a graph. So instead of using lists, let's use a matrix. A, B, C, D, E on top, and A, B, C, D, E on the left. Let's pretend our graph is just that component over there. Otherwise, it just gets big and there's no extraneous site. Does anyone know how this is called? If I put numbers here, does anyone know what this is called? Is that a matrix? There's a fancy name for it. It ends with matrix. OK. I don't think we taught it to you, so don't worry. The fancy name is maybe it's misspelled, but something that looks and sounds like this., adjacency matrix. Misspelled? I hope someone will help me. OK so if this is an adjacency matrix, what should this element between B and A tell me? If it's an adjacency matrix, it better tell me if they're adjacent. They're adjacent if they have an edge between them. For A and B, what does it happen to be? 17

18 One? OK. A and A? What do we do? What with 1? It's adjacent to itself. What's easier for the algorithm that you're trying to implement? 1? So it doesn't really matter. We use 1's most of the time, but sometimes it's easier to use a 0. Then you can get to A from A, right? Yeah. So that's why you'd use a 1. Sometimes, though, you don't want to in code. So someone dictate this to me. Or, everyone dictate this to me so I know it makes sense. A and C, is there an edge between them? Yes. What do I write? 1. A and D? A and E? 0. B, A? 1. B, C? 0. B, D? 18

19 1. The E? 1. OK. C, A? 1. C, B? 2. C, D? 1. C, E? 0. All right. Now I'm going to use the bits you gave me to come to get this. Let's see if I can do it correctly. And D? I'm not looking at the graph, by the way, I'm trusting you. So you better give me the right answer. D? 1. How many 1's do I have in this? To see if you guys are thinking. 2, E? Each edge contributes to two 1's, right? And that accounts for most of the 1's. 19

20 O plus V. So this is how many 1's I have. How many 0's do I have? V squared minus 2, E plus V? This is a non-boring way of asking how many elements I have in this matrix. This is what I was looking for. So V columns, right? Zeros V squared's total elements. How much memory do I need to store this? V squared. V squared. what? If I want to store it as compactly as possible? I want to pack these as tight as I can. You mean you need the entire array arranged? Yes, so what do I store? V squared what? Oh, you mean units. Yeah. What's the unit? 1 bit? All right! So V squared bits Whereas, this is V plus E words because you have to store pointers everywhere here. So sometimes if your graph is really dense you might prefer this representation. Let me see, how much do I have? Oh, plenty of time. Who remembers breadth-first search? Yes? Basically you just start at some node and you check all its neighbors, and check all those neighbors. All right. 20

21 In breadth-first search we have a graph. What did I draw there? A. B, E. So suppose this is our graph. And I do a breadth-first search starting at A. How does that work? I started with the list of the nodes that I'm going to visit. I initialization it with A because this is the only node that I know about. What happens next? It goes with B and C. All right. So I take out of the list the first thing that I can. This is my current node. You said I visit B and C because they're the neighbors. Right. I took A out of the list. A was definitely visited. And I'm visiting B and C. What do I do when I visit them? Put them in the list. Put them in the list. This means I discovered them and I'm going to visit the later. So I discovered them and I know of their existence. What happens next? Check if B is what you want. So B gets out of the list, and what do I do? Discover it's neighbors. All right, so its neighborhoods are A, B, and E. What Now? If they haven't already been on that list then add a A was already visited. D and E weren't. D and E, then what happens? Then you check C's neighbors. Any neighbor's that I haven't seen? Nope. Then? D? D and? E. 21

22 OK. And then? I guess you could go to F, but it's not connected to anything. But how did you get A then, right? So A is the first node. I started with A because I said I'm doing a breadth-first search starting from A. So BFS starts from somewhere. A BFS has a source. We'll see why that matters in a bit. So you ever get to see F? No. Nope. So if I start at A what are the nodes that I visit and what are the nodes that I don't visit? Well you visit all the ones in the connected graph. All right, in the connected component. So the whole graph can be connected or not connected. The nodes that I visit are the nodes in A's connected component because, by definition, those are the nodes that I can reach from A. If I have many kind of the components and I use BFS starting from one node, I might not visit the entire graph. How do I keep track of what node that I've discovered and haven't discovered? What data structure do I use for these smiley faces? So for the smiley faces. For this thing I probably want a queue. We'd teach you something simpler, but most of the time when you write the code you actually use queue. What do I want for the smiley faces? When I pull a node out, say I pulled out B, and I see A, D, E, I want to know that I visited A and I didn't visit the D and E. You guys remember that we didn't visit D and E, right, by the time we got to 2? OK. So I want to be able to check whether I visited 22

23 a node or not really fast. What data structure should I use for the smileys? A hash table. A has table. Cool. What's a hash table in Python? A dictionary. A dictionary. All right, so this is going to be a seen, which is a dictionary, and it maps vertices to maybe true. Yep. Python has a set, right? So you can use that. The smileys needs to be some sort of a dictionary. So given that, and assuming that this is a queue that we can extract and you can start from in constant time, what is the running time of BFS? Let's make life easy. Let's assume the graph is connected and let's assume just doesn't exist. BFS was the running time. [INAUDIBLE] visiting. So you visit every node once, so it's at least V. That's a start. Now what do you do when you visit the node? Check out all the-- All the neighbors, right? Given the node, you have to go to the data structure that you have that's either this or this, and you have to get a list of neighbors. If I have this data structure, how fast do I get a list of neighbors for a node? Order of the degree? Yep. Order of the degree of the node. That's good. How about this data structure? Same-- oh, no that's order of V. 23

24 Yep. So in this data structure, for example, C only has two edges coming out of it. But I have to go through the entire lining of the matrix to see where I have my 0's and where I have my 1's. In order to list the neighbors, here is straight up order V, whereas this is order of the degree of the node that I'm looking for. So for this, where it's nice and simple, order of V, what is the total running time? Wait, because it's B plus B. Oh no, it's the same one. So for each node I have to? V squared. OK. So we're up to V squared already. What else do we need to do? Anything that they need to do on a node is order of V, so V squared is going to be the total running time. That's it. So if we use an adjacency matrix we get order of V squared as the total running time. What about if we lists, what the running time? I'll give you a hint. You have to use amortized analysis. Shivers anyone? [LAUGHTER] We know it's order V because we're going to visit every node. And you guys didn't see what I was going to write here. [LAUGHTER] OK. So for every node I go through the neighbors and I do something to them. Right? I check if they're in seen, if not then I add them to the list. So for every node the work is? it's degrees. Yep. So if I look at all the nodes? That's E. 24

25 Yep. For every node I have to look at its neighbors and I have to see which neighbors are in seen. For the neighbors that are not in seen I have to add to my queue. Checking if a neighbor is in seen or not is order 1. Adding it to the queue is order 1. So the total work for a node is order of neighbors because of the adjacency list, not matrix. If I look at the entire graph, here I can't do a local analysis like I did before. If I look at the entire graph and I look at all the nodes slash vertices, then the total work is the sum of their degrees. For each node is degree. For total work, sum of the degrees. And I have that nice handshaking lemma that says that the sum of the degrees is 2, E. So order E. So total running time? V plus E. OK, can I say that the running time is order E? With no V's? No, because you have to look at every-- Is it? V greater than [INAUDIBLE] in case of not connected components? It's possible that you could have more vertices than edges-- OK. So it's possible that I have more vertices than edges. I agree with that, but I do anything to the vertices that I haven't seen? So this is subtle. The difference between this and this is a matter of how you implement everything. In CLRS they assume that the seen is an array. So all of their nodes have numbers from 1 to V. So then they initialize an array, everything is false, and then they set the true elements. In Python we can use a dictionary and not initialize it with anything. So if you do it that way in Python and code carefully, you can get to order E. The parts of the 25

26 graph that you don't discover, you don't have to pay for them. If you look at CLRS code, it is definitely V plus E. The difference between this and this depends on the code. What's the point of BFS, by the way? Why do we care? What does it give us? The shortest word path. The shortest path from point? From your start to where you're going. So it gives you the shortest path from the node that I'm starting the BFS from. So only from this node? If I start BFS at A it's going to give me the length of the shortest path from A to which node? All the nodes? Yeah. All the nodes that are visited by BFS are reachable and we have a path from them. How do you compute this distance? Let's see, so what's the distance from A to A? 0? 0. When I start from A and I see that its neighbors are B and C, what's the distance from A to B and from A to C? OK. Now I look at B. What's the distance between A and A? A is B's neighbor. With A and A? 26

27 Yeah. So I have three neighbors. B has three neighbors, A, D, and E. So I care about the distances between A and A, D, E. Distance A, A, distance A, D, and distance A, E. This one is 0. How about the distances between A and D and A and E? They're 2. So the way I would compute these distances is that I start with A being 0. The distance from A to A is 0. And then when I look at a node, when I discover the neighbors, all the neighbors that don't have smiley faces on them get the node's distance plus 1. You can get to them by getting in the current node and then traversing an edge. When you do that it's important that you don't update the distances of the nodes that have smiley faces. If you do, you're going to say that the distance from A to A is 2 and all hell breaks lose from there. Wait, why would you say it would be 2? If I forget the fact that it has a smiley face. So if I go through all these neighbors and I say the distance from A to B is one then the distance from A to all of B's neighbors has to be 2. That would be wrong. Wait, from A to all of-- B's neighbors. From A to all of-- Oh, because A is one Of-- B's neighbors. Yeah OK. The smileys tell me which vertices I've already seen and I've already, presumably computed distances for them. We don't want to update those. OK this is BFS in essence. One question. Between Facebook and Twitter, which one's directed and which one's undirected? 27

28 Facebook is undirected. OK. Facebook is undirected. Why is it undirected? When you follow someone they don't necessarily follow you. OK. So this is Twitter, right? Twitter, directed because of follows. Has anyone used Facebook recently? Did you guys see there's a new option? The little scroll bar on the side? Subscribers. Oh, ya. OK, so how do subscribers work? You subscribe. It's like google plus. [LAUGHTER] OK. Directed are undirected? If I subscribe to you do you have to subscribe to me? Directed. So which one is it? I guess Facebook is kind of directed now because you can unsubscribe from people. Is it? So Facebook has two graphs in it. They happen to have the same vertices. The people are the vertices in both graphs. But the friends relationship defines an 28

29 undirected graph. The subscribers relationship defines a directed graph. The graphs are completely different. And there are two graphs. That's the right way to reason about them. that's why it was slightly tricky. Can someone think of a cool way to use BFS on Facebook? That's networks, right? Figuring out how many people are in the first degree or second degree. MySpace was really into that. Lincoln also does that, right? How many people are your friends? How many people are your friend's friends? So and so forth. Now suppose you want to get to someone in Facebook and you don't know them directly. They're not your friends. Presumably, you want to get to them through the minimum amount of effort. So you want to see do you have a friend that knows them? If not, do you have a friend that knows a friend that knows them? Do you have a friend that knows a friend that knows a friend that knows them? So and so forth. So BFS will give you that minimum path. OK. do the graphs make sense? So by the way, the BFS on Facebook is just the beginning of a ton of cool things you can with graph algorithms. 29

### MITOCW R3. Document Distance, Insertion and Merge Sort

MITOCW R3. Document Distance, Insertion and Merge Sort The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high-quality educational

### 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 R11. Principles of Algorithm Design

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

### MITOCW R22. Dynamic Programming: Dance Dance Revolution

MITOCW R22. Dynamic Programming: Dance Dance Revolution The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational

### 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 Recitation 9b: DNA Sequence Matching

MITOCW Recitation 9b: DNA Sequence Matching The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources

### MITOCW R18. Quiz 2 Review

MITOCW R18. Quiz 2 Review 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 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=krzi60lkpek

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

MITOCW watch?v=fp7usgx_cvm Let's get started. So today, we're going to look at one of my favorite puzzles. I'll say right at the beginning, that the coding associated with the puzzle is fairly straightforward.

### MITOCW Project: Backgammon tutor MIT Multicore Programming Primer, IAP 2007

MITOCW Project: Backgammon tutor MIT 6.189 Multicore Programming Primer, IAP 2007 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue

### 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 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 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.

### MITOCW ocw lec11

MITOCW ocw-6.046-lec11 Here 2. Good morning. Today we're going to talk about augmenting data structures. That one is 23 and that is 23. And I look here. For this one, And this is a -- Normally, rather

### MITOCW watch?v=1qwm-vl90j0

MITOCW watch?v=1qwm-vl90j0 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 MITCMS_608S14_ses03_2

MITOCW MITCMS_608S14_ses03_2 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 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

### MITOCW watch?v=fll99h5ja6c

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

### MITOCW watch?v=guny29zpu7g

MITOCW watch?v=guny29zpu7g 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 15. Single-Source Shortest Paths Problem

MITOCW 15. Single-Source Shortest Paths Problem The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational

### Using Google Analytics to Make Better Decisions

Using Google Analytics to Make Better Decisions This transcript was lightly edited for clarity. Hello everybody, I'm back at ACPLS 20 17, and now I'm talking with Jon Meck from LunaMetrics. Jon, welcome

### MITOCW watch?v=3v5von-onug

MITOCW watch?v=3v5von-onug 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

### Authors: Uptegrove, Elizabeth B. Verified: Poprik, Brad Date Transcribed: 2003 Page: 1 of 7

Page: 1 of 7 1. 00:00 R1: I remember. 2. Michael: You remember. 3. R1: I remember this. But now I don t want to think of the numbers in that triangle, I want to think of those as chooses. So for example,

### MITOCW watch?v=ir6fuycni5a

MITOCW watch?v=ir6fuycni5a 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 11. Integer Arithmetic, Karatsuba Multiplication

MITOCW 11. Integer Arithmetic, Karatsuba Multiplication The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational

### Transcriber(s): Yankelewitz, Dina Verifier(s): Yedman, Madeline Date Transcribed: Spring 2009 Page: 1 of 22

Page: 1 of 22 Line Time Speaker Transcript 11.0.1 3:24 T/R 1: Well, good morning! I surprised you, I came back! Yeah! I just couldn't stay away. I heard such really wonderful things happened on Friday

### MITOCW Mega-R4. Neural Nets

MITOCW Mega-R4. Neural Nets 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 watch?v=x05j49pc6de

MITOCW watch?v=x05j49pc6de 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 mit_jpal_ses06_en_300k_512kb-mp4

MITOCW mit_jpal_ses06_en_300k_512kb-mp4 FEMALE SPEAKER: The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high-quality educational

### MITOCW watch?v=2ddjhvh8d2k

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

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

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

### Authors: Uptegrove, Elizabeth B. Verified: Poprik, Brad Date Transcribed: 2003 Page: 1 of 8

Page: 1 of 8 1. 00:01 Jeff: Yeah but say, all right, say we're doing five choose two, right, with this. Then we go five factorial. Which is what? 2. Michael: That'll give you all the they can put everybody

### MITOCW watch?v=c6ewvbncxsc

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

### 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

### MITOCW mit-6-00-f08-lec06_300k

MITOCW mit-6-00-f08-lec06_300k ANNOUNCER: Open content is provided under a creative commons license. Your support will help MIT OpenCourseWare continue to offer high-quality educational resources for free.

### MITOCW watch?v=6fyk-3vt4fe

MITOCW watch?v=6fyk-3vt4fe Good morning, everyone. So we come to the end-- one last lecture and puzzle. Today, we're going to look at a little coin row game and talk about, obviously, an algorithm to solve

### MITOCW watch?v=dyuqsaqxhwu

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

### Instructor (Mehran Sahami):

Programming Methodology-Lecture21 Instructor (Mehran Sahami): So welcome back to the beginning of week eight. We're getting down to the end. Well, we've got a few more weeks to go. It feels like we're

### 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

### MITOCW 23. Computational Complexity

MITOCW 23. Computational Complexity The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for

### 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

### Common Phrases (2) Generic Responses Phrases

Common Phrases (2) Generic Requests Phrases Accept my decision Are you coming? Are you excited? As careful as you can Be very very careful Can I do this? Can I get a new one Can I try one? Can I use it?

### MITOCW watch?v=xsgorvw8j6q

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

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

MITOCW Recitation 7 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

### 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 ocw f07-lec25_300k

MITOCW ocw-18-01-f07-lec25_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.

### PROFESSOR PATRICK WINSTON: I was in Washington for most of the week prospecting for gold.

MITOCW Lec-22 PROFESSOR PATRICK WINSTON: I was in Washington for most of the week prospecting for gold. Another byproduct of that was that I forgot to arrange a substitute Bob Berwick for the Thursday

### MITOCW watch?v=ku8i8ljnqge

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

### Transcriber(s): Yankelewitz, Dina Verifier(s): Yedman, Madeline Date Transcribed: Spring 2009 Page: 1 of 27

Page: 1 of 27 Line Time Speaker Transcript 16.1.1 00:07 T/R 1: Now, I know Beth wasn't here, she s, she s, I I understand that umm she knows about the activities some people have shared, uhhh but uh, let

### MITOCW watch?v=tssndp5i6za

MITOCW watch?v=tssndp5i6za NARRATOR: The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for

### MITOCW Lec 25 MIT 6.042J Mathematics for Computer Science, Fall 2010

MITOCW Lec 25 MIT 6.042J Mathematics for Computer Science, Fall 2010 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high-quality

### 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 Project: Battery simulation MIT Multicore Programming Primer, IAP 2007

MITOCW Project: Battery simulation MIT 6.189 Multicore Programming Primer, IAP 2007 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue

### Julie #4. Dr. Miller: Well, from your forms that you filled out, seems like you're doing better.

p.1 Julie #4 Scores on OCD forms: OCI-R: 20 Florida: Behaviors - 6 :Distress - 6 Summary: Julie s anxiety about people rearranging her things has dropped form 3 to 1. In this session, Julie s anxiety about

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

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

### 2015 Mark Whitten DEJ Enterprises, LLC 1

All right, I'm going to move on real quick. Now, you're at the house, you get it under contract for 10,000 dollars. Let's say the next day you put up some signs, and I'm going to tell you how to find a

### MATH 16 A-LECTURE. OCTOBER 9, PROFESSOR: WELCOME BACK. HELLO, HELLO, TESTING, TESTING. SO

1 MATH 16 A-LECTURE. OCTOBER 9, 2008. PROFESSOR: WELCOME BACK. HELLO, HELLO, TESTING, TESTING. SO WE'RE IN THE MIDDLE OF TALKING ABOUT HOW TO USE CALCULUS TO SOLVE OPTIMIZATION PROBLEMS. MINDING THE MAXIMA

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

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

### Environmental Stochasticity: Roc Flu Macro

POPULATION MODELS Environmental Stochasticity: Roc Flu Macro Terri Donovan recorded: January, 2010 All right - let's take a look at how you would use a spreadsheet to go ahead and do many, many, many simulations

### Proven Performance Inventory

Proven Performance Inventory Module 4: How to Create a Listing from Scratch 00:00 Speaker 1: Alright guys. Welcome to the next module. How to create your first listing from scratch. Really important thing

### >> Counselor: Welcome Marsha. Please make yourself comfortable on the couch.

>> Counselor: Welcome Marsha. Please make yourself comfortable on the couch. >> Marsha: Okay, thank you. >> Counselor: Today I'd like to get some information from you so I can best come up with a plan

### >> 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

### 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,

### 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,

### Begin. >> I'm Dani, yes.

>> Okay. Well, to start off my name is Gina. I'm assuming you all know, but you're here for the Prewriting presentation. So we're going to kind of talk about some different strategies, and ways to kind

### 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

### MITOCW watch?v=-4c9-ogklcy

MITOCW watch?v=-4c9-ogklcy KRISTEN: So with that, I am going to turn it off to our first keynote speaker, Kris Clark. She also works at Lincoln Laboratory with me, but in a completely different field.

### How to Close a Class

Teresa Harding's How to Close a Class This can often be one of the scariest things for people. People don't know what to say at the end of the class or when they're talking with someone about the oils.

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

### The Emperor's New Repository

The Emperor's New Repository I don't know the first thing about building digital repositories. Maybe that's a strange thing to say, given that I work in a repository development group now, and worked on

### Episode Dealing with Summer Associate Offers with Ex-BigLaw Recruiter

Episode 108 - Dealing with Summer Associate Offers with Ex-BigLaw Recruiter Welcome to the Law School Toolbox podcast. Today, we're talking with ex BigLaw recruiter, Sadie Jones, about the processing of

### SOAR Study Skills Lauri Oliver Interview - Full Page 1 of 8

Page 1 of 8 Lauri Oliver Full Interview This is Lauri Oliver with Wynonna Senior High School or Wynonna area public schools I guess. And how long have you actually been teaching? This is my 16th year.

Announcer: Jackson Mumey: Welcome to the Extra Mile Podcast for Bar Exam Takers. There are no traffic jams along the Extra Mile when you're studying for your bar exam. Now your host Jackson Mumey, owner

### Transcriber(s): Yankelewitz, Dina Verifier(s): Yedman, Madeline Date Transcribed: Spring 2009 Page: 1 of 22

Page: 1 of 22 Line Time Speaker Transcript 7.0.1 2:33 S T/R 1: Good morning! Are you all as awake as I am? 7.0.2 2:39 Meredith: Yeah. 7.0.3 2:40 T/R 1: I don't know if that is good or bad, Meredith. Let

### 0:00:00.919,0:00: this is. 0:00:05.630,0:00: common core state standards support video for mathematics

0:00:00.919,0:00:05.630 this is 0:00:05.630,0:00:09.259 common core state standards support video for mathematics 0:00:09.259,0:00:11.019 standard five n f 0:00:11.019,0:00:13.349 four a this standard

### Lesson 01 Notes. Machine Learning. Difference between Classification and Regression

Machine Learning Lesson 01 Notes Difference between Classification and Regression C: Today we are going to talk about supervised learning. But, in particular what we're going to talk about are two kinds

### 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

### Transcript of the podcasted interview: How to negotiate with your boss by W.P. Carey School of Business

Transcript of the podcasted interview: How to negotiate with your boss by W.P. Carey School of Business Knowledge: One of the most difficult tasks for a worker is negotiating with a boss. Whether it's

### Elizabeth Jachens: So, sort of like a, from a projection, from here on out even though it does say this course ends at 8:30 I'm shooting for around

Student Learning Center GRE Math Prep Workshop Part 2 Elizabeth Jachens: So, sort of like a, from a projection, from here on out even though it does say this course ends at 8:30 I'm shooting for around

### Listening Comprehension Questions These questions will help you to stay focused and to test your listening skills.

RealEnglishConversations.com Conversations Topic: Job Interviews Listening Comprehension Questions These questions will help you to stay focused and to test your listening skills. How to do this: Listen

### MITOCW watch?v=tw1k46ywn6e

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

### Midnight MARIA MARIA HARRIET MARIA HARRIET. MARIA Oh... ok. (Sighs) Do you think something's going to happen? Maybe nothing's gonna happen.

Hui Ying Wen May 4, 2008 Midnight SETTING: AT RISE: A spare bedroom with a bed at upper stage left. At stage right is a window frame. It is night; the lights are out in the room. is tucked in bed. is outside,

### PATRICK WINSTON: It's too bad, in a way, that we can't paint everything black, because this map coloring

MITOCW Lec-08 PROF. PATRICK WINSTON: It's too bad, in a way, that we can't paint everything black, because this map coloring problem sure would be a lot easier. So I don't know what we're going to do about

### TALKING ABOUT CANCER Cancer Research UK

TALKING ABOUT CANCER Cancer Research UK WEEK 1 Myths, Facts and Listening Skills Step 1.6: Anita and friends share their views [MUSIC PLAYING] GWEN KAPLAN: We've already seen that there's a lot of information

### 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?

### MITOCW watch?v=k79p8qaffb0

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

### Autodesk University See What You Want to See in Revit 2016

Autodesk University See What You Want to See in Revit 2016 Let's get going. A little bit about me. I do have a degree in architecture from Texas A&M University. I practiced 25 years in the AEC industry.

### MITOCW mit-6-00-f08-lec03_300k

MITOCW mit-6-00-f08-lec03_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 MITCMS_608S14_ses04

MITOCW MITCMS_608S14_ses04 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

### 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