Graphs in social networks in Data Structures Theory - Time & Space Complexity
When we study graphs in social networks, we want to know how fast we can find friends or connections as the network grows.
We ask: How does the time to explore or search the network change when more people join?
Analyze the time complexity of the following code snippet.
function bfs(graph, start) {
let queue = [start];
let visited = new Set([start]);
while (queue.length > 0) {
let node = queue.shift();
for (let neighbor of graph[node]) {
if (!visited.has(neighbor)) {
visited.add(neighbor);
queue.push(neighbor);
}
}
}
}
This code performs a breadth-first search (BFS) to visit all connected friends starting from one person.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Visiting each person and checking their friends (neighbors).
- How many times: Each person and each friendship connection is checked once.
As the number of people (nodes) and friendships (edges) grow, the time to visit everyone grows too.
| Input Size (n people, m friendships) | Approx. Operations |
|---|---|
| 10 people, 15 friendships | About 25 checks |
| 100 people, 200 friendships | About 300 checks |
| 1000 people, 3000 friendships | About 4000 checks |
Pattern observation: The work grows roughly with the total people plus their friendships combined.
Time Complexity: O(n + m)
This means the time to explore the network grows linearly with the number of people and friendships.
[X] Wrong: "The BFS will take time proportional to the square of the number of people because everyone might connect to everyone else."
[OK] Correct: In most social networks, not everyone is friends with everyone else, so the number of friendships (edges) is usually much less than the square of people (nodes). BFS time depends on actual connections, not just people count squared.
Understanding how BFS runs on social networks helps you explain how to find friends or connections efficiently, a skill useful in many real-world problems.
"What if the graph was stored as an adjacency matrix instead of adjacency lists? How would the time complexity change?"
Practice
Solution
Step 1: Understand graph components in social networks
Graphs use nodes to represent entities. In social networks, these entities are usually users or people.Step 2: Identify what edges represent
Edges represent connections like friendships, not the nodes themselves.Final Answer:
Users or people -> Option BQuick Check:
Nodes = Users [OK]
- Confusing nodes with edges
- Thinking nodes represent messages
- Mixing up groups with nodes
Solution
Step 1: Define undirected edge meaning
An undirected edge means the connection goes both ways, showing mutual relationship.Step 2: Apply to social network context
In social networks, mutual friendship means both users are connected equally, matching undirected edges.Final Answer:
It shows a mutual friendship between two users -> Option AQuick Check:
Undirected edge = mutual friendship [OK]
- Thinking undirected edges are one-way
- Confusing edges with user actions
- Mixing edges with posts or groups
{'Alice': ['Bob', 'Carol'], 'Bob': ['Alice'], 'Carol': ['Alice']}How many direct friends does Alice have?
Solution
Step 1: Read Alice's adjacency list
Alice's list shows ['Bob', 'Carol'], meaning Alice is directly connected to Bob and Carol.Step 2: Count direct friends
There are 2 names in the list, so Alice has 2 direct friends.Final Answer:
2 -> Option AQuick Check:
Length of Alice's list = 2 [OK]
- Counting indirect friends
- Confusing keys with values
- Ignoring list length
{'Dave': ['Eve'], 'Eve': ['Dave', 'Frank'], 'Frank': ['Eve']}What is wrong if we add 'Frank' to Dave's list but forget to add 'Dave' to Frank's list?
Solution
Step 1: Understand undirected graph rules
In undirected graphs, edges must be mutual. Adding Frank to Dave's list but not Dave to Frank's breaks this.Step 2: Identify effect on graph type
This creates a one-way connection, making the graph directed for that edge.Final Answer:
The graph becomes directed, showing one-way friendship -> Option CQuick Check:
Missing mutual edge = directed edge [OK]
- Expecting syntax errors
- Assuming no connection exists
- Thinking graph will crash
Solution
Step 1: Understand the friend suggestion criteria
The network wants to find users not directly connected but sharing at least two mutual friends.Step 2: Identify graph concept matching criteria
Counting common neighbors (shared friends) between two nodes helps find such pairs.Final Answer:
Counting common neighbors between nodes -> Option DQuick Check:
Mutual friends = common neighbors [OK]
- Using shortest paths incorrectly
- Confusing cycles with mutual friends
- Only checking node degrees
Ready to prove it?
Pass the test and this pattern moves unknown
