📖 Scenario: You are working on a simple social network app. Each person can be friends with others. We want to represent these friendships using a grid where rows and columns show people, and a 1 means they are friends, 0 means not friends.
🎯 Goal: Build an adjacency matrix to show friendships between 4 people named Alice, Bob, Charlie, and Diana. Then, print the matrix to see the friendship connections clearly.
📋 What You'll Learn
Create a 4x4 adjacency matrix with exact values for friendships
Use a variable to store the number of people
Fill the matrix with 1s and 0s to represent friendships
Print the adjacency matrix row by row
💡 Why This Matters
🌍 Real World
Adjacency matrices are used in social networks, maps, and computer networks to show connections between nodes clearly.
💼 Career
Understanding adjacency matrices helps in roles like software development, data analysis, and network engineering where relationships between entities must be managed.
Progress0 / 4 steps
1
Create the adjacency matrix
Create a variable called adjacencyMatrix as a 2D array of numbers with these exact rows: [0, 1, 0, 1], [1, 0, 1, 0], [0, 1, 0, 1], [1, 0, 1, 0].
DSA Typescript
Hint
Use const adjacencyMatrix: number[][] = [...] to create the 2D array with the exact rows.
2
Add the number of people variable
Create a variable called numPeople and set it to 4 to represent the number of people in the network.
DSA Typescript
Hint
Use const numPeople: number = 4; to store the number of people.
3
Loop through the matrix to print each row
Use a for loop with variable i from 0 to numPeople - 1 to go through each row of adjacencyMatrix. Inside the loop, create a variable rowString that joins the numbers in adjacencyMatrix[i] with spaces.
DSA Typescript
Hint
Use for (let i = 0; i < numPeople; i++) and inside it, const rowString = adjacencyMatrix[i].join(' ').
4
Print the adjacency matrix rows
Inside the for loop, add a console.log(rowString) statement to print each row of the adjacency matrix.
DSA Typescript
Hint
Use console.log(rowString) inside the loop to print each row.
Practice
(1/5)
1. What does an adjacency matrix represent in a graph? Adjacency matrix is a way to show connections between nodes. What does a 1 in the matrix mean?
easy
A. There is no edge between two nodes
B. The graph is weighted
C. The nodes are the same
D. There is a direct edge between two nodes
Solution
Step 1: Understand adjacency matrix basics
An adjacency matrix uses rows and columns to represent nodes. Each cell shows if two nodes connect.
Step 2: Interpret the value 1 in the matrix
A value of 1 means there is a direct edge between the nodes represented by that row and column.
Final Answer:
There is a direct edge between two nodes -> Option D
Quick Check:
1 means edge exists [OK]
Hint: 1 means connected, 0 means no connection [OK]
Common Mistakes:
Thinking 1 means no edge
Confusing node identity with connection
Assuming matrix shows weights always
2. Which of the following is the correct TypeScript syntax to declare a 3x3 adjacency matrix initialized with zeros without shared row references?
easy
A. const matrix: number[][] = [[0,0,0],[0,0,0],[0,0,0]];
B. const matrix: number[3][3] = new Array(3).fill(new Array(3).fill(0));
C. const matrix = Array(3).map(Array(3).fill(0));
D. const matrix: number[][] = new Array(3).fill(new Array(3).fill(0));
Solution
Step 1: Check TypeScript array declaration syntax
const matrix: number[][] = [[0,0,0],[0,0,0],[0,0,0]]; uses explicit 2D array with nested arrays and zeros, which is valid syntax and creates independent rows.
Step 2: Identify issues in other options
const matrix: number[3][3] = new Array(3).fill(new Array(3).fill(0)); uses invalid TypeScript syntax for fixed-size arrays. const matrix = Array(3).map(Array(3).fill(0)); passes an array to map() instead of a function, causing a runtime error. const matrix: number[][] = new Array(3).fill(new Array(3).fill(0)); uses fill with the same inner array reference, causing shared rows.
Final Answer:
const matrix: number[][] = [[0,0,0],[0,0,0],[0,0,0]]; -> Option A
Quick Check:
Explicit nested arrays with zeros [OK]
Hint: Use explicit nested arrays to avoid shared references [OK]
Common Mistakes:
Using fill with same inner array causing shared rows
Passing non-function to map()
Wrong type annotations
3. Given the following adjacency matrix for a directed graph:
C. All rows point to the same inner array, so all rows change when one changes
D. It throws a runtime error
Solution
Step 1: Understand fill with reference types
Using fill with new Array(size).fill(0) creates one inner array shared by all rows.
Step 2: Effect of modifying matrix[0][1]
Changing matrix[0][1] changes the shared inner array, so all rows show the change.
Final Answer:
All rows point to the same inner array, so all rows change when one changes -> Option C
Quick Check:
Shared inner array causes unexpected updates [OK]
Hint: Avoid fill with objects/arrays; use map for unique rows [OK]
Common Mistakes:
Assuming fill creates independent arrays
Ignoring shared reference behavior
Expecting only one row to change
5. You have an undirected graph with 4 nodes. You want to represent it using an adjacency matrix in TypeScript. Which of the following code snippets correctly initializes the matrix and sets an edge between node 1 and node 3?
hard
A. const size = 4;
const matrix = new Array(size).fill(new Array(size).fill(0));
matrix[1][3] = 1;
matrix[3][1] = 1;
Step 1: Check matrix initialization for unique rows
const size = 4;
const matrix = Array.from({ length: size }, () => Array(size).fill(0));
matrix[1][3] = 1;
matrix[3][1] = 1; uses Array.from with a function to create unique inner arrays, avoiding shared references.
Step 2: Verify setting edges for undirected graph
Setting matrix[1][3] and matrix[3][1] to 1 correctly represents an undirected edge.
Step 3: Identify issues in other options
Options B and C use fill causing shared inner arrays. const size = 4;
const matrix = Array(size).map(() => Array(size).fill(0));
matrix[1][3] = 1; initializes correctly but only sets matrix[1][3] = 1, missing matrix[3][1] = 1 for undirected graph.