Files
dsa-tutoring/notes-and-examples/2026.07.15/graphs-intro.md
2026-07-14 20:44:18 -04:00

2.4 KiB

Fundamentals

  • A node or vertex contains a data point
  • An edge is what connects one node to another

A graph is just a collection of vertices and edges.

[!QUESTION] What is a real-life example of a simple graph with only vertices and edges?

Some additional properties we can put on a graph:

  • A weight is a numerical value that can be assigned to an edge
  • We can also assign a direction to an edge, such that it only points from one node to another, not the other way around

We can, of course, combine both of these properties too.

[!QUESTION] What's something we can model with weights in a graph? What about with directional edges?

Going forward, we'll use V to represent the number of vertices in a graph, and E to represent the number of edges.

Representing a graph

The adjacency list stores a list of connected vertices for each node, and it can fit in a dictionary or hash map structure.

1 -> 2, 4
2 -> 1, 3
3 -> 2
4 -> 1

[!QUESTION] How would you draw out this graph?

[!QUESTION] What would this mapping look like if we wanted to add weights? What about directional edges?

The adjacency matrix is a 2D array where each position arr[x][y] represents an edge, and x and y each represent a node.

[
    [0, 1, 0, 1],
    [1, 0, 1, 0],
    [0, 1, 0, 0],
    [1, 0, 0, 0]
]

[!QUESTION] How would you draw out this graph? What would it look like as an adjacency list?

[!QUESTION] How do we add weights and/or directional edges to this graph?

Categorizing graphs

We say a graph is directed and acyclic, or a directed acyclic graph (DAG), if there are no cycles formed using the directional edges.

[!QUESTION] What's something we can model with a DAG?

[!QUESTION] What's another data structure we went over that also classifies as a DAG?

A graph is dense if E is closer to V^2, and sparse if E is closer to V.

[!QUESTION] What's the implication for the graph if E is closer to V^2, i.e. how is it different compared to a sparse graph?

[!QUESTION] What's the maximum number of edges we can have in a graph with no self-loops, relative to the number of vertices V?

A graph can contain self-loops (a loop from a vertex to itself). A graph can also have multiple edges going from one vertex to another.

[!QUESTION] How do we represent a self-loop using an adjacency matrix?

Finally, a graph is connected if every vertex is reachable from every other vertex.