def insertEdge(adjacentMatrix, i, j) adjacentMatrix[i][j] = true end def removeEdge(adjacentMatrix, i, j) adjacentMatrix[i][j] = false end def printAdjacencyMatrix(adjacentMatrix) for i in 0..adjacentMatrix.length-1 for j in 0..adjacentMatrix[i].length-1 val = adjacentMatrix[i][j] ? 1 : 0 print("| #{val} | ") end puts end end V = 5 adjacentMatrix = Array.new(V){Array.new(V,false)} #Insert Edges insertEdge(adjacentMatrix, 0, 1) insertEdge(adjacentMatrix, 0, 2) insertEdge(adjacentMatrix, 0, 3) insertEdge(adjacentMatrix, 1, 0) insertEdge(adjacentMatrix, 1 ,4) insertEdge(adjacentMatrix, 2, 0) insertEdge(adjacentMatrix, 2, 3) insertEdge(adjacentMatrix, 2, 4) insertEdge(adjacentMatrix, 3, 0) insertEdge(adjacentMatrix, 3 ,2) insertEdge(adjacentMatrix, 3, 4) insertEdge(adjacentMatrix, 4, 3) insertEdge(adjacentMatrix, 4, 2) insertEdge(adjacentMatrix, 4, 1) print("+-------------------------------------------------------------------+ \n") printAdjacencyMatrix(adjacentMatrix) print("+-------------------------------------------------------------------+ \n")
+-------------------------------------------------------------------+ | 0 | | 1 | | 1 | | 1 | | 0 | | 1 | | 0 | | 0 | | 0 | | 1 | | 1 | | 0 | | 0 | | 1 | | 1 | | 1 | | 0 | | 1 | | 0 | | 1 | | 0 | | 1 | | 1 | | 1 | | 0 | +-------------------------------------------------------------------+
The code for Adjacency Matrix is quite simple.
There are two important methods defined above :
As the name of the method suggests insertEdge(...), is used to add an Edge to the Adjacency Matrix.
def insertEdge(adjacentMatrix, i, j) adjacentMatrix[i][j] = true end
So, the actual adjacency matrix, we are going to create, looks like the below structure,
Now, if we look at the min program. We create a 2D array, that holds either true or false.
V = 5 adjacentMatrix = Array.new(V){Array.new(V,false)}
So, the above line creates a 2D array with 5 rows and 5 columns that initially contains false.
Now, all we need to do is, wherever we want to insert an edge. We will mark it with value true.
Say, for example :
There is an edge in [0][1] (As mentioned in the adjacency matrix above).
All we are doing is, calling the def insertEdge(...) method,
insertEdge(adjacentMatrix, 0, 1)
and passing 0 and 1 as parameters.
And in the def insertEdge(...) method, we have the below line,
adjacentMatrix[i][j] = true
Now, since value of i = 0 and j = 1,
adjacentMatrix[0][1] = true
And adjacentMatrix[0][1] is marked to true.
In other words, we have inserted an edge in adjacentMatrix[0][1] above.
Similarly, we insert the edges one by one, calling the void insertEdge(...) method.
insertEdge(adjacentMatrix, 0, 2) insertEdge(adjacentMatrix, 0, 3) ... ... ...
Even, to delete an Edge, we follow the same steps.
As we know, there is an Edge in [0][2]. To remove it, all we need to do is call,
removeEdge(adjacentMatrix, 0, 2)
And mark that particular location to false.
def removeEdge(adjacentMatrix, i, j) adjacentMatrix[i][j] = false end
And the Edge is deleted.