No history yet

Graph Basics

Transcript

Beau

Okay, so before we dive into this whole... Depth First Search thing you mentioned, I need a bit of a primer. You keep saying the word 'graph,' and my brain just pictures, you know, a bar graph from a PowerPoint presentation.

Jo

Right, a totally fair starting point. And a super common one. In computer science, and really in a lot of math and logic, a 'graph' is something completely different. It's... it's much more like a map.

Beau

A map. Okay. Like a city map?

Jo

Exactly. Think about a city map. What are the two main things on it? You have locations, right? Like landmarks or intersections.

Beau

Sure. The library, my apartment, the coffee shop.

Jo

Perfect. In graph terms, we call those 'vertices' or sometimes 'nodes'. They're just the points. The dots on the map.

Beau

Vertices. Got it. Sounds more official than 'dots'.

Jo

And what connects those locations on your map?

Beau

Roads. Streets.

Jo

Exactly. We call those 'edges'. So, a graph is just a set of vertices and the edges that connect them. That's it. A social network is a graph. You and I are vertices, and our friendship is an edge connecting us.

Beau

Okay, that makes sense. Dots and lines. But... with our friendship, the edge goes both ways, right? I'm friends with you, you're friends with me. Is it always like that?

Jo

Great question. That brings up the first big distinction: directed versus undirected graphs. A friendship on, say, Facebook is a perfect example of an 'undirected' edge. It's a two-way street. The connection is mutual.

Beau

Okay, so what's a directed one? A one-way street?

Jo

Precisely. Think about Twitter or Instagram. You can follow a celebrity, but that doesn't mean they automatically follow you back.

Beau

Sadly, no.

Jo

So there's an edge, a connection, that goes from you *to* them. It has a direction. It's a one-way arrow. That's a 'directed graph'. So, city streets can be directed, like one-way roads, or undirected, like most residential streets.

Beau

Okay, directed, undirected. That seems straightforward enough. What about... on a real map, some roads are longer than others. It takes longer to get from the library to my place than from my place to the coffee shop. Do the edges account for that?

Jo

Yep, and that's the next distinction: weighted versus unweighted. In an 'unweighted' graph, every edge is equal. It's just about whether a connection exists or not. 'Are we friends? Yes or no.'

Beau

Binary.

Jo

Exactly. But in a 'weighted' graph, each edge has a number, a 'weight,' associated with it. For a GPS, that weight could be the distance in miles, or the estimated travel time in minutes, or even the cost of a toll.

Beau

So that's how it finds the 'fastest' route, not just the one with the fewest turns. It's looking for the path with the lowest total weight.

Jo

You got it. That word you just used, 'path', is another key term. A path is just a sequence of vertices where each one is connected to the next by an edge. It's literally a route from one place to another in the graph.

Beau

Okay, this is clicking. But... how does a computer actually... see this? It's not drawing dots and lines in its memory, is it? How do you tell the code that my apartment is connected to the coffee shop?

Jo

No, it's not visual for the computer. It needs a structured way to store the information. The two most common ways are an 'adjacency matrix' and an 'adjacency list'.

Beau

Adjacency... what now?

Jo

Adjacency matrix. Think of a spreadsheet, like Excel. Let's say we have three places: your apartment, the coffee shop, and the library. Let's call them A, C, and L. You create a grid where the rows are A, C, L and the columns are also A, C, L.

Beau

Okay, a 3 by 3 grid.

Jo

Right. Now, to show a connection, you just put a 1 in the cell. So if there's a road from your apartment (A) to the coffee shop (C), you'd go to row A, column C, and put a 1. If there's no direct road, you put a 0.

Beau

Ah, I see. It's a lookup table for connections. So for our friendship graph, if we're both in the matrix, the cell for (Jo, Beau) would be 1, and (Beau, Jo) would also be 1.

Jo

Exactly. That's a key property of an adjacency matrix for an undirected graph - it's symmetrical. The top right half is a mirror image of the bottom left.

Beau

That seems... really easy to understand. But I imagine if you have a graph with, like, a million people for a social network, a million-by-a-million grid would be... huge.

Jo

You've hit on its main drawback. It's very memory-intensive, especially for what we call 'sparse' graphs, where most vertices aren't connected to most other vertices. You end up storing a massive grid that's almost entirely zeros.

Beau

Which is most real-world graphs, right? I'm not friends with a million people.

Jo

Right. Which is why the other method, the 'adjacency list', is often more practical. It's simpler than it sounds. For each vertex, you just keep a list of the other vertices it's directly connected to.

Beau

Oh, so instead of a giant grid, you'd just have something like: My Apartment's list is [Coffee Shop, Library]. And the Coffee Shop's list is [My Apartment]. You only store the connections that actually exist.

Jo

Exactly! It's way more space-efficient for those big, sparse graphs. You don't waste any space on the connections that aren't there. For the things we'll be doing with DFS, this is the representation we'll probably use most often.

Beau

Okay, that seems solid. So we have the basic idea: graphs are just vertices and edges. They can be directed or undirected, weighted or unweighted. And we can tell a computer about them using a matrix or a list. I think my brain is no longer picturing a bar chart.

Jo

Excellent. That's the entire foundation we need. Once you see the world this way, you start seeing graphs everywhere—from the internet itself to the way diseases spread. They're a really powerful way to model relationships between things.