πΈοΈ Graphs¶
A collection of nodes (vertices) connected by edges. Used to model relationships and networks.
Graph Types¶
Directed: Edges have direction (one-way)
Undirected: Edges are bidirectional
Weighted: Edges have values (distances, costs)
Graph Representation¶
Adjacency List (Common)¶
Adjacency Matrix¶
Graph Traversals¶
BFS (Breadth-First Search)¶
from collections import deque
def bfs(graph, start):
visited = set()
queue = deque([start])
result = []
while queue:
node = queue.popleft()
if node not in visited:
visited.add(node)
result.append(node)
queue.extend(graph[node])
return result
DFS (Depth-First Search)¶
def dfs(graph, start, visited=None):
if visited is None:
visited = set()
visited.add(start)
result = [start]
for neighbor in graph[start]:
if neighbor not in visited:
result.extend(dfs(graph, neighbor, visited))
return result
When to Use¶
- Social networks
- Maps/navigation
- Dependencies
- Recommendations
Next Steps¶
Practice with examples.py!