- Trending Categories
- Data Structure
- Operating System
- C Programming
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
What is the canonical label?
A standard method for handling the graph isomorphism issues is to map each graph into a specific string representation called its code or canonical label. A canonical label has the property that if two graphs are isomorphic, therefore their codes should be equal.
This property enables us to test for graph isomorphism by analyzing the canonical labels of the graphs. The first phase toward building the canonical label of a graph is to discover an adjacency matrix description for the graph. It shows an instance of such a matrix for the given graph.
A graph can have higher than one adjacency matrix description because there are several methods to order the vertices in the adjacency matrix. The first row and column correlate to the vertex a that has 3 edges, the second row and column correlate to another vertex a that has 2 edges, etc. It can change derive all the adjacency matrix descriptions for a graph, it is required to be treated all possible permutations of rows of the matrix.
Example − Consider the following matrix
M = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
The following permutation matrix can be used to transform the first row (and column) with the third row of M −
P13 = 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1
where P13 is acquired by exchanging the first and third row of the identity matrix. It can exchange the first and third rows (and columns), the permutation matrix is multiplied with M −
M′ = P13T X M X P13= 11 10 9 12 7 6 5 8 3 2 1 4 15 14 13 16
The second step is to decide the string description for each adjacency matrix. Because the adjacency matrix is symmetric, it is efficient to produce the string description depending on the upper triangular part of the matrix.
The code is acquired by linking the entries of the upper triangular matrix in a columnwise fashion. The last step is to correlate all the string descriptions of the graph and select the one that has the lowest (or highest) lexicographic value.
The previous approach appear costly because it needed us to determine all possible adjacency matrices of a graph and to evaluate each of their string descriptions to discover the canonical label. Furthermore, there are kl permutations that should be treated for each graph that includes k vertices.
There are various methods developed to lower the complexity of this task contain caching the previously computed canonical label and decreasing the number of permutations required to decide the canonical label by incorporating more data including vertex labels and the degree of a vertex.
- What is the minimal set of functional dependencies or canonical cover of FD?
- What is Multiprotocol Label Switching (MPLS)?
- What is Canonical Collection of LR (0) items in compiler design?
- What is the difference between simple name, canonical name and class name in a Java class?
- What's the canonical way to check for type in python?
- Get Canonical Name for a class in Java
- What is the reason behind using the number 65 to label dishes such as Panner 65, Chicken 65, etc?
- Bootstrap Form Label
- How to get the Tkinter Label text?
- Python Pandas - Return the label from the index if all of the labels in the index are later than the passed label
- HTML DOM Label Object
- Add the yellow label (stating warning) with Bootstrap
- How to use PowerShell Break with the Label.