math

Graph Theory Basics

graphsalgorithmscs

Graphs are everywhere — social networks, road maps, dependency trees. Here are the essentials.

Definitions

A graph G = (V, E) is a set of vertices V connected by edges E.

  • Directed: edges have a direction (like Twitter follows)
  • Undirected: edges are bidirectional (like Facebook friends)
  • Weighted: edges have a cost or distance
  • Cyclic / Acyclic: whether loops exist

BFS vs DFS

from collections import deque

def bfs(graph, start):
    visited, queue = set(), deque([start])
    while queue:
        v = queue.popleft()
        if v not in visited:
            visited.add(v)
            queue.extend(graph[v] - visited)
    return visited

def dfs(graph, start, visited=None):
    if visited is None:
        visited = set()
    visited.add(start)
    for n in graph[start] - visited:
        dfs(graph, n, visited)
    return visited

BFS finds shortest paths in unweighted graphs. DFS uses less memory for deep graphs.