What if you could instantly know if two people are connected without searching through endless lists?
Why Adjacency Matrix Representation in DSA Python?
Imagine you want to keep track of friendships in a group of 100 people using a big table where each person has to remember if they are friends with every other person.
Writing down each friendship manually in a list or notebook is slow and confusing. It's easy to forget or repeat connections, and checking if two people are friends takes a long time because you have to search through the whole list.
An adjacency matrix is like a neat grid where rows and columns represent people, and each cell quickly shows if two people are friends. This makes checking and updating friendships fast and simple.
friendships = [(1, 2), (2, 3), (1, 3)] # To check if 1 and 3 are friends, search the list
matrix = [[0]*4 for _ in range(4)] matrix[1][3] = 1 # To check if 1 and 3 are friends, just look at matrix[1][3]
It enables instant answers about connections between any two points in a network, making complex relationship checks easy and fast.
Social media platforms use adjacency matrices to quickly find if two users are connected or to suggest new friends based on existing connections.
Manual tracking of connections is slow and error-prone.
Adjacency matrix uses a grid to represent connections clearly.
It allows quick checks and updates of relationships.
Practice
Solution
Step 1: Understand adjacency matrix concept
An adjacency matrix is a 2D array where rows and columns represent nodes.Step 2: Identify what the matrix stores
Each cell shows if an edge exists between two nodes (1 for yes, 0 for no).Final Answer:
A 2D array showing connections between nodes -> Option AQuick Check:
Adjacency matrix = 2D array of connections [OK]
- Confusing adjacency matrix with adjacency list
- Thinking it stores node values instead of connections
- Assuming it is a list or sequence
Solution
Step 1: Understand correct 2D list initialization
Using list comprehension creates independent inner lists for each row.Step 2: Analyze each option
matrix = [[0]*3]*3 creates shallow copies causing all rows to reference the same list, which is incorrect. matrix = [[0 for _ in range(3)] for _ in range(3)] correctly creates separate lists. Options C and D create 1D lists, not 2D.Final Answer:
matrix = [[0 for _ in range(3)] for _ in range(3)] -> Option DQuick Check:
Use list comprehension for independent rows [OK]
- Using [[0]*3]*3 causes all rows to be same object
- Creating 1D list instead of 2D
- Forgetting to nest loops for rows and columns
graph = [[0,1,0],[1,0,1],[0,1,0]]
for i in range(3):
for j in range(3):
if graph[i][j] == 1:
print(f"Edge between {i} and {j}")Solution
Step 1: Analyze the adjacency matrix
Matrix shows edges: (0,1), (1,0), (1,2), (2,1) as 1s.Step 2: Trace nested loops and print statements
Loops check each cell; when value is 1, print edge between i and j.Final Answer:
Edge between 0 and 1 Edge between 1 and 0 Edge between 1 and 2 Edge between 2 and 1 -> Option BQuick Check:
Print edges where matrix cell is 1 [OK]
- Ignoring symmetric edges in undirected graph
- Printing only one direction of edges
- Confusing indices i and j
n = 4 matrix = [[0]*n]*n matrix[0][1] = 1 print(matrix)
Solution
Step 1: Understand matrix initialization
Using [[0]*n]*n creates shallow copies; all rows point to the same list.Step 2: Effect of modifying one element
Changing matrix[0][1] changes that column in all rows because they share the same list.Final Answer:
The matrix initialization causes all rows to be the same list -> Option AQuick Check:
Use nested list comprehension to avoid shared rows [OK]
- Assuming rows are independent lists
- Ignoring shared reference problem
- Thinking print syntax is wrong
Solution
Step 1: Map edges to matrix positions
Edge 0->1 means matrix[0][1] = 1, 1->2 means matrix[1][2] = 1, 2->0 means matrix[2][0] = 1.Step 2: Check each option against edges
[[0,1,0],[0,0,1],[1,0,0]] matches these exactly; others have extra or missing edges.Final Answer:
[[0,1,0],[0,0,1],[1,0,0]] -> Option CQuick Check:
Edges map to 1s in correct matrix cells [OK]
- Confusing directed and undirected edges
- Setting symmetric edges for directed graph
- Misplacing 1s in wrong matrix cells
Ready to prove it?
Pass the test and this pattern moves unknown
