To answer your question: "What is the main difference between a list view and a matrix view of a matrix?"
A graph list view is usually a list of tuples, where each element of the list is a node, and tuples are the nodes associated with it. Say we have 3 nodes A , B , C , so we will have a list of length 3. Say there is a node from A → B , then an element in A th, say the first element, will contain node B Say there is also a link from A → C , the first element will contain B and C The total space needed for an adjacency list is (the space for the node to represent) * (the number of edges).
On the other hand, the matrix representation is a matrix, usually implemented as an array with two parameters, where each node is indicated both on the row axis and on the column. If there is a connection between the two nodes, mark this spot in the matrix. For example, if we have 3 nodes A , B , C , we have a 3x3 array . Let us call A = index 0 , B = index 1 , C = index 2 , and suppose we have a link from A → B , then fill in a 1 with array[0][1] . If our schedule was not directed, we will also add 1 to the location in array[1][0] . The required total space is the number of nodes N ^ 2 times required for each channel (can be performed with 1 bit, 0 or 1 ), so total = N ^ 2.
The list is good for sparse schedules, since it does not require additional storage. That is, links that do not exist are not represented by anything. On the contrary, if our graph is very tight, then the matrix representation is better, because each possible link is only 1 bit (0 or 1). As can be seen from the above examples, the total space required by the list view is a function of the number of edges , and the space for representing the matrix is a function of the number of nodes .
Now think about your specific problem. How many nodes would you have? Common edges? Does it seem rare or dense?