Strongly Chordal Graph Generation using Intersection Graph Characterisation

07/25/2019 ∙ by Md. Zamilur Rahman, et al. ∙ 0

Strongly chordal graphs are a subclass of chordal graphs. Farber also established a number of different characterisations for this class of graphs. These include an intersection graph characterisation that is analogous to a similar characterisation for chordal graphs. Seker et al. exploited this characterisation of chordal graphs to obtain an algorithm for generating them. In this paper, we propose an algorithm to show that strongly chordal graphs can also be generated using their intersection graph characterisation.

READ FULL TEXT VIEW PDF
POST COMMENT

Comments

There are no comments yet.

Authors

This week in AI

Get the week's most popular data science and artificial intelligence research sent straight to your inbox every Saturday.

1 Introduction

Strongly chordal graphs, introduced by Farber [2], are a subclass of chordal graphs. He also established a number of different characterizations for this class of graphs. These include an intersection graph characterization [1] that is analogous to a similar characterization for chordal graphs [3]. Seker et al. [4] exploited this characterization of chordal graphs to obtain an algorithm for generating them. In this paper, we propose an algorithm to show that strongly chordal graphs can also be generated using their intersection graph characterization.

The following essential definitions from Farber [2] underlie this characterization. Let be the root of an edge-weighted tree. The edge-weights are positive numbers that can be conveniently interpreted as the lengths of the edges.

Definition 1.1

The weighted distance from a node to a node in , denoted by , is the sum of the lengths of the edges of the (unique) path from to .

Definition 1.2

Let and be two subtrees of . Subtree is full with respect to , denoted by , if for any two vertices such that , implies that .

Definition 1.3

A collection of subtrees of is compatible if for each pair of subtrees and either or .

Using the definitions above, Farber established the following intersection graph characterization for strongly chordal graphs.

Theorem 1.4

[1] A graph is strongly chordal if and only if it is the intersection graph of a compatible collection of subtrees of a rooted, weighted tree, .

2 The Algorithm

Let be an adjacency matrix whose rows correspond to a compatible collection of subtrees, , of a rooted, weighted tree as in Theorem 1.4 and columns correspond to the vertices of , arranged from left to right in order of non-decreasing distance from the root, . Our main observation is that Definition 1.2 can be re-interpreted to imply that the matrix cannot have as a sub-matrix. More precisely, if and are two rows of , corresponding to compatible subtrees and of , then there cannot exist columns and that intersect these two rows to create . Thus belongs to the class of 0-1 matrices that do not have as a submatrix. Note that this is only a necessary condition. If we can generate a 0-1 matrix that satisfies this necessary condition, we have to further ensure that each row corresponds to a subtree of a weighted tree . The details of how this can be achieved are described in the algorithm below that is built atop our observation of the forbidden sub-matrix property of .

Each of the entries of the first row and the first column are randomly set to or . The entries of the submatrix [] are carefully set to or so as not have as a submatrix. This is done in row major order. While setting the entry of the -th row and -th column we check exhaustively the entries in the columns to the left of the -th column and the entries above the -th row to make sure that no submatrix is equal to . To have a compatible collection of subtrees of a given tree , we also do not want as a submatrix. Such a submatrix can create cycles in the tree we wish to construct from the rows of our matrix representing a collection of compatible subtrees. Algorithm 1 generates a matrix without or as a submatrix.

1:The number of columns (nodes) and the number rows (subtrees)
2:A matrix
3:for  to  do
4:     for  to  do
5:          randomly chosen either or
6:         if  or  then
7:              
8:         else
9:              if  then
10:                  if  and and or and and  then
11:                        switch 1 to 0
12:                  else
13:                        keep 1 as a valid entry
14:                  end if
15:              else
16:                   keep 0 as a valid entry
17:              end if
18:         end if
19:     end for
20:end for
Algorithm 1 Matrix Generation

In the next phase, we prune some of the rows of . First, we remove rows with all 0’s. Then we remove duplicate rows (if any) because they produce identical subtrees and denote the reduced matrix by . In the next step, we generate a strongly chordal graph from the matrix . Each subtree (row) represents a vertex in the strongly chordal graph, and there is an edge between two vertices in the strongly chordal graph if . Algorithm 2 takes the number of columns (nodes) and the number of rows (subtrees) () as inputs and outputs a strongly chordal graph .

1:The number of columns (nodes) and the number of rows (subtrees)
2:A strongly chordal graph
3:Call matrix generation algorithm to generate a matrix without the sub matrix and
4:Remove any rows with zeros only
5:Remove any duplicate rows
6:Generate a strongly chordal graph from rows by computing the intersection of each row
Algorithm 2 Strongly chordal Graph Generation from Subtrees

In the following paragraphs, we explain on an example the strongly chordal graph generation process step-by-step.

Example: Algorithm 1 generates the following matrix with and .

After removing 6 rows (row index: , , , , , ) that have only zero entries, we get the following matrix :

From the matrix , we can see there are six subtrees. The subtrees are shown in Figure 1. The strongly chordal graph shown in Figure 2 is generated by representing each of Figure 1 as a node . There is an edge between and if the intersection of and is non-empty.

(a)
(b)
(c)
(d)
(e)
(f)
Figure 1: Subtrees
Figure 2: A strongly chordal graph generated from subtrees

3 Complexity

Algorithm 1 takes time to generate matrix , ensuring it does not have or as a submatrix. The intersection of two subtrees () can be computed in time. Each subtree represents a vertex in a strongly chordal graph and if , then there is an edge between two vertices in a strongly chordal graph. The insertion of an edge can be done in time.

4 Conclusions

To the best of our knowledge this is the first algorithm for generating strongly chordal graphs based on an intersection graph characterization of this class. It would be interesting to improve on the time-complexity of this algorithm or find a more efficient way of generating strongly chordal graphs. We implemented this proposed algorithm in Python. As a matter of curiosity, we tested a large number of intersection graphs generated from -free matrices. Without exception, all of these passed the recognition algorithm test for strong chordality. It would be worthwhile to investigate this further.

References