Find the Celebrity in a Graph
What is the Celebrity Problem?
The celebrity problem is a classic challenge in graph theory and coding interviews. Imagine you’re in a party with n people. A celebrity is someone who is known by everyone but knows no one in return. Your goal is to identify this person, if they exist.
This problem is modeled as a directed graph using an adjacency matrix, and the solution revolves around concepts like in-degree, out-degree, and efficient candidate identification. In this guide, we’ll break down the problem, explore multiple algorithmic approaches, and answer popular user queries.
Problem Statement: Celebrity in a Social Network
You're given a n x n boolean adjacency matrix M, where M[i][j] = 1 means person i knows person j, and M[i][j] = 0 means they don’t. Your task is to determine whether a celebrity exists in this social network.
To qualify as a celebrity:
- The celebrity knows no one: Their entire row should be zeros.
- Everyone knows the celebrity: Their entire column (except diagonal) should be ones.
This problem can be visualized as finding a node in a directed graph with zero out-degree and in-degree equal to n - 1.
Modeling the Problem with Graph Theory
Adjacency Matrix Representation
The relationships are captured using an adjacency matrix, a common tool in graph theory for representing node connectivity. The rows indicate whom a person knows, and the columns represent who knows them.
In-Degree and Out-Degree Logic
- Out-degree of a node = Number of people the person knows (row sum).
- In-degree of a node = Number of people who know the person (column sum).
A celebrity is a person with:
- In-degree = n - 1
- Out-degree = 0
Naive Solution: Matrix Traversal and Degree Count
One simple way is to traverse the adjacency matrix and compute in-degree and out-degree for each person.
1 2 3 4 5 6 7 8def findCelebrity(M): n = len(M) for i in range(n): out_deg = sum(M[i]) in_deg = sum(M[j][i] for j in range(n)) if out_deg == 0 and in_deg == n - 1: return i return -1
Time Complexity
- O(n²) due to matrix traversal
- Not optimal for large networks
Optimal Algorithm: Candidate Identification via Elimination
Instead of checking everyone, we eliminate non-celebrities using logical deductions.
Step-by-Step Explanation
- Start with two people,
aandb. - If
aknowsb, thenacan’t be the celebrity. - If
adoesn’t knowb, thenbcan’t be the celebrity. - Repeat until one candidate remains.
- Verify if the candidate meets both conditions.
Python Code for Optimal Solution
1 2 3 4 5 6 7 8 9 10 11 12def findCelebrity(M): n = len(M) candidate = 0 for i in range(1, n): if M[candidate][i] == 1: candidate = i for i in range(n): if i != candidate: if M[candidate][i] == 1 or M[i][candidate] == 0: return -1 return candidate
Why This Works
This smart algorithm narrows down possibilities in O(n) time. It avoids full matrix traversal and makes decisions using graph theory insights and logical deductions.
Real-Life Analogy: The Celebrity in a Social Network
Imagine a social network like Twitter:
- A celebrity has many followers (high in-degree) but follows no one (zero out-degree).
- By analyzing node connectivity, the celebrity problem mirrors how influence or centrality is measured in social graphs.
Conclusion
The Find the Celebrity problem blends intuition and graph theory into a single powerful challenge. By representing people and relationships using an adjacency matrix, leveraging node connectivity, and applying clever candidate identification strategies, you can efficiently solve what initially seems like a brute-force task.
Whether you're preparing for interviews, working with social network data, or learning about in-degree and out-degree, this problem offers valuable insight into efficient graph-based problem solving.
Frequently Asked Questions
The problem is modeled as a directed graph with nodes (people) and edges (knows relationship). It uses concepts like adjacency matrix, in-degree, and out-degree.
No. Typically, the diagonal of the matrix is either 0 or ignored. Self-loops are not considered in this problem.
The algorithm should return -1 after verifying the final candidate does not meet the criteria.
Yes! It's a common interview problem that tests knowledge of graph algorithms and logical reasoning.
In platforms like Instagram or LinkedIn, you can use similar logic to find influencers or hidden nodes with asymmetric relationships.
Still have questions?Contact our support team