1. Introduction
In the words of Michael Atiyah, duality in mathematics is not a theorem but a “principle” [
1]. It appears in many subjects in mathematics and has been adapted and modified in different situations. We use a duality that comes from the finite geometry and apply it to the linear codes.
Whenever an object is equivalent to its own dual, then it is said to be self-dual, but, if it is equal to its dual, it is self-polar. Self-duality and self-polarity can be viewed as different degrees of symmetry. In this work, we use the duality between points and hyperplanes in the projective geometry
. Usually, the transform is defined constructively in terms of the projective geometry [
2,
3,
4] by matrices [
2,
5] or by a characteristic vector [
6]. Any point
defines a hyperplane
, which consists of all the points
such that
. This duality (known as projective duality or Delsarte duality) is useful in the study of two-weight codes (see [
2,
7,
8]). A generalization of the projective duality was provided by Dodunekov and Simonis in [
3].
Projective self-dual (PSD) and self-polar codes are related to other combinatorial structures, such as two-weight codes [
2], divisible codes, self-dual bent Boolean functions [
9], strongly regular graphs [
7], association schemes, etc. [
10]. This motivates us to study these codes. Furthermore, we associate them with square matrices and, especially in the case of self-polar codes, symmetric matrices.
The main problems related to the equivalence of combinatorial objects refer to answering the question of whether two objects are equivalent, to classifying structures with given properties, to finding automorphism groups or the canonical form, etc. Checking whether a given incidence structure is self-polar is related to these problems. We associate the self-polarity with solving the following problem: can a square matrix be reduced to a symmetric form with only permutations of rows and columns? If so, what is an efficient algorithm for this?
This work studies projective self-dual and self-polar linear codes over a finite field. The family of self-polar codes forms a subclass of the class of PSD codes over for a given prime power q. We study two main problems. The first one is to determine the parameters regarding which the existence of a q-ary PSD code is possible. The second is related to the question of how to check whether a given projective self-dual code is self-polar. The first problem is solved with theoretical arguments, and, for some of the obtained families of codes, it is directly established that they consist of self-polar codes. To answer the question from the second problem, we use an algorithmic approach. The first step in this direction is to check whether a square matrix defined in a special way, related to the considered code, can be reduced to a symmetric form by permutations of rows and columns and, if so, to find the corresponding symmetric matrix. The second step is to find a characteristic vector of the code that proves its self-polarity. At the end of the paper, we also present classification results for PSD and self-polar codes with two and three nonzero weights.
This paper is organized as follows. We provide the main definitions in
Section 2.
Section 3 is devoted to the projective self-dual codes. In that section, we present the possible parameters for which PSD codes may exist and provide many examples. In
Section 4, we associate PSD codes with square binary matrices and present an algorithm to check whether such a matrix is a permutation equivalent to a symmetric matrix, thus checking whether the corresponding code is self-polar. Some computational results and applications are provided in
Section 5.
2. Preliminaries
Let q be a prime power and be a finite field with q elements. A linear q-ary code of length n and dimension k is a subspace of the vector space . If , the code is called binary, if , the code is ternary, and, if , it is quaternary. A matrix G with elements from , whose rows form a basis of C is called a generator matrix of the code. If G does not have zero columns, the code has full length, and, if the columns of G are pairwise nonproportional, the code is called projective. In this work, we consider only linear codes of full length as later in the paper under linear code we will mean a code of full length. The columns of the matrix G can be considered as points in the projective geometry . If we put all points of in a matrix as columns, then generates the simplex code of length .
The (Hamming) weight of a vector
is the number of its nonzero coordinates. If the nonzero codewords of the linear code
C have exactly
t different weights,
C is a
t-weight code. The simplex and replicated simplex codes are the only 1-weight linear codes [
3]. All nonzero codewords in
have weight
. The weight enumerator of a linear code of length
n is the polynomial
, where
is the number of codewords of weight
i. The weight enumerator of the simplex code
is
. The minimum nonzero weight of a codeword in
C is called the minimum weight of the code. If
C has length
n, dimension
k, and minimum weight
d, it is said to be an
code.
Two linear codes and are equivalent if there is a monomial matrix M and an automorphism of the field such that for each codeword . The pair is called an automorphism of the code C if for all . All automorphisms of C form its automorphism group denoted by . The permutation automorphism group consists of all permutations of the coordinates that preserve the code. Obviously, is a subgroup of the symmetric group . We also require a definition for an automorphism of a square matrix. We say that the permutation of the rows of the square matrix A is an automorphism of A if it maps its columns into columns of the same matrix.
Using the matrix and a generator matrix G of the linear code C, we define a characteristic vector of C.
Definition 1. The characteristic vector of code C with respect to matrix G iswhere is the number of columns of G that are equal or proportional (with nonzero coefficients) to the i-th column of matrix . A code C can have different characteristic vectors depending on the matrix G and the considered generator matrix of the simplex code . We fix the matrix to consist of all vectors in whose first nonzero coordinate is 1, ordered lexicographically. If we permute the columns of the matrix G, we obtain a permutation equivalent code to C having the same characteristic vector. Moreover, from a characteristic vector, one can restore the columns of the generator matrix G, possibly in a different order and/or multiplied by nonzero elements of the field. Therefore, without loss of generality, we can suppose that the columns in G are ordered lexicographically and belong to the set of columns of the matrix . When the code C and the matrix G are clear from the context, we will write briefly . Note that the sum of the coordinates of a characteristic vector of C is equal to the length of the code.
Further, we consider the matrix , where the multiplication is over . The rows of are nonproportional codewords in the simplex code . Since , is a symmetric q-ary matrix. By , we denote the matrix obtained from by replacing all nonzero elements by 1. Calculating the square and the determinant of this matrix, we obtain , where and are the identity and the all-ones matrix of order , respectively, and . Hence is an invertible matrix.
We use the matrix and a characteristic vector of the linear code C to define its projective dual code.
Definition 2. Let α and β be rational numbers such that is a non-negative integer for any nonzero weight w of a codeword in C. The projective dual code of C is the linear code with characteristic vector , where is the all-ones vector of the corresponding length.
As described in [
6], the
i-th coordinate of
is equal to
, where
is the
i-th row of the matrix
.
If two linear codes are equivalent, then their projective dual codes for the given
,
and
k are also equivalent [
5]. The length of
is
[
5]. If
C is a projective linear code, then its projective dual code has at most two nonzero weights, namely
and
. In the general case, the weights in
are
, where
represents the coordinates of the characteristic vector,
.
3. Projective Self-Dual (PSD) and Self-Polar Codes
The projective self-dual codes were studied first by Dodunekov and Simonis in [
3], but they called the codes
self-dual. We used the term projective self-duality in our work [
6], but here we propose to call these codes PSD codes in order to distinguish them from the well-known self-dual codes with respect to orthogonality.
Definition 3. The linear code C is projective self-dual (PSD) if it is equivalent to its projective dual code for some α and β. The code is self-polar if it has a characteristic vector χ such that for some α and β.
If
C is an
code with a characteristic vector
, and
is the code
C, repeated
t times, then the characteristic vector of
is
and therefore its projective dual for the same
and
is
It follows that, if
C is PSD (resp. self-polar), the same is
. Consider now the code
. This code has a characteristic vector
. Then, its projective dual code
has a characteristic vector
If we take , then , so, if C is PSD (resp. self-polar), the same is . Therefore, we will concentrate on linear codes for which the characteristic vector has zero coordinates and the greatest common divisor of the coordinates is 1.
Consider one more code, related to
C, namely its projective complementary code
. If
C is a projective code,
is the code with characteristic vector
. If
G is the corresponding generator matrix of
C, the generator matrix of
consists of all columns of
that do not belong to
G. Then,
We can take
, and then, if
C is PSD (resp. self-polar), the same is
. Therefore, for the projective codes of length
n and dimension
k, it is enough to check for projective self-duality only the codes with
.
In the case of non-projective codes, for , we take the code with a characteristic vector , where t is the largest integer among the coordinates of .
The following theorem provides the possible parameters
and
for which the projective dual
could be equivalent to the code
C ([
3] Proposition 6).
Theorem 1. Let C be q-ary projective self-dual code. If C is not a replicated simplex code, then After converting formula (
2), we obtain
where
.
Since
is a rational number, then
should be integer, so, if
k is odd, then
q is an even power of a prime. Moreover,
for any nonzero weight of a codeword in
C. Since
, the above number is an integer only if
and
. Hence, we can write the nonzero weights of the code in the form
, where
a is a positive integer.
If the projective linear code
C is projective self-dual, it must be a two-weight code with two nonzero weights
and
. We can calculate the weight distribution of
C using the Pless power moments [
11]
Solving this system with unknowns and , we obtain that if and if . In both cases, the maximal number of nonproportional codewords with one of the weights (say w) is equal to the length of the code, and, if we put these nonproportional codewords as rows in a matrix, this matrix will be an square matrix. Denote this matrix by . As we mentioned after Definition 2, if is the ith row in , then ; hence, the coordinates of the characteristic vector , which are equal to 1, correspond to codewords of C with weight w, and, furthermore, all these coordinates correspond to a maximal set of nonproportional codewords with this weight. As shows, the i-th row of the matrix appears in the considered generator matrix of the projective dual code, , and it can also be obtained by intersecting the columns and rows of corresponding to the coordinates equal to 1 in the characteristic vectors and , respectively.
If the code is self-polar, then , and therefore the matrix is symmetric. This proves the following theorem.
Theorem 2. Let C be a projective linear PSD code with a characteristic vector χ with respect to the generator matrix G. If is the generator matrix corresponding to the characteristic vector , then is a square matrix whose rows have the same weight w, where or . Moreover, these rows form a maximal set of nonproportional codewords with this weight in the code C. If C is a self-polar code, the matrix is symmetric.
Consider now a non-projective PSD code of length n and dimension k with a characteristic vector with respect to its generator matrix G. Suppose that has zero coordinates. If is the generator matrix that corresponds to the characteristic vector , we consider the matrix . As the code is PSD, this is a square matrix of order n. The following theorem generalizes Theorem 2. The PSD codes are divisible by .
Theorem 3. Let C be a PSD code with a characteristic vector χ with respect to its generator matrix G, and defines a code that is equivalent to C. Suppose that χ contains at least one zero coordinate and is the weight enumeration of C, where for all , , , . Then, or . Moreover, if , then is a symmetric matrix.
Proof. As we mentioned above, if is the i-th row in , then . As has zero coordinates, then if or . Take for , which means that . It follows that , .
As shows that the i-th row of the matrix appears in the considered generator matrix of the projective dual code repeated j times, the corresponding vector from appears as a row in also repeated j times. Moreover, and therefore , bearing in mind that in addition to the rows that belong to we must also count all their proportional vectors. Here, we also use the fact that the code C is equivalent to its projective dual, so they share the same weight enumerator. Similarly, if , then .
Obviously, if , then the two generator matrices coincide (recall that we take the columns in G in lexicographic order) and therefore is symmetric. □
Next, we provide some restrictions on the parameters of the PSD codes. We separately consider the two cases presented in (
4) for even and odd values of the dimension
k.
First, let be even.
In this case, and . Since is an integer, must divide . If q is even, and therefore will divide the length n. If q is odd, and it is enough that n is a multiple of . So, we have two subcases:
Let q be even. Now, and , where t is a positive integer. Since , we have . Then, the parameters of the code are .
Applying the Griesmer bound to these parameters, we obtain
According this inequality,
. We will provide some examples.
Example 1. Let . We are looking for binary PSD codes for several values of .
- *
) In this case, C is a binary even code. The code can be a projective two-weight PSD code only for . The parity-check binary code is a projective self-dual two-weight code. Its projective complement is a two-weight code with weight enumerator . There is at least one self-polar code with weight enumerator , as an example, which is the code with characteristic vector . This code is interesting also as a code with balanced weight distribution; i.e., it has the same number of codewords for each nonzero weight. This code is not projective and therefore is different from the codes with balanced weight distributions presented in [12]. - *
) In this case, C is a binary doubly even code, . There are one and five projective self-dual two-weight codes. Their weight enumerators are and , respectively. The complement codes have parameters and .
- *
) In this case, C is a binary code divisible by 8, . There is one two-weight code that is PSD and 41 two-weight codes, 29 of which are PSD [13]. - *
) In this case, C is a binary code divisible by 16, . There is a two-weight code.
Four families with binary two-weight codes have been studied in [14]. The codes in the family have parameters . The presented and two-weight codes belong to this family. The codes in the family are projective complementary to the codes from and have parameters for . Example 2. Let . The two-weight codes in this case have parameters .
- *
) Now, C is a quaternary code. According to [13], there are 1 and 38 projective two-weight PSD codes. - *
) In this case, C is a binary doubly even code, .
Let
q be odd. Now,
and
, where
t is a positive integer. Since
, we have
. The parameters of the codes in this case are
. According to the Griesmer bound,
Example 3. Let . The ternary two-weight codes in this family have parameters . If , C is a ternary self-orthogonal code, . There are one , two , and four projective two-weight codes, and all of them are PSD [13]. If , C is a ternary code, . The only projective two-weight code is PSD.
- ()
In this case, , . Since , we have . It follows that the nonzero weights of the code belong to the following set of positive integers . This means that, if C is not the replicated simplex code, then .
If
C is a projective PSD two-weight code of length
and dimension
, its nonzero weights are
and
. For the binary field, the codes have parameters
; for example, for
, the parameters are
,
,
,
,
, etc.
Example 4. There are two even codes of full length, namely codes and , with characteristic vectors , , and weight enumerators and , respectively, where For this length, we take , . Since , we cannot consider a projective dual code of , which means that is not projective self-dual. But, for , we have Hence, this code is not only PSD but self-polar.
Example 5. The codes in the family from [14] have parameters , and can be obtained in this case for . The two-weight code from the previous example belongs to this family. There are exactly seven inequivalent codes in . Example 6. For a positive integer and a prime power q, is a projective two-weight code with parameters and weight enumerator . Its characteristic vector is Computing , we see that this code is self-polar. Thus, we obtain an infinite family of q-ary projective self-polar codes. If we take the code , , where is the concatenation of t copies of , then C is a 3-weight self-polar code.
We will also provide an example for a projective self-dual 4-weight binary code.
Example 7. Let C be the binary code with a generator matrix This code has a weight enumerator and characteristic vector (with respect to the given generator matrix) For the projective dual code, we obtain and It is easy to verify that these two codes are equivalent, and therefore C is a 4-weight projective self-dual code.
If
k is odd (
), then
q must be an even power of a prime, or
, where
p is prime and
s is a positive integer. Then,
. Now,
and the weights have the form
.
Now, we again consider two cases according to (
4).
- ()
Now,
and
. Since
is a positive integer, we have
, and thus
,
,
. In this case, the codes have parameters
.
Example 8. Let and C be a code. One and one two-weight PSD codes are presented in [13]. - ()
If
and
, we have
, but
. Hence,
and
for a positive integer
t. Since
, then
.
Example 9. Let C again be a quaternary code, , . In this case, C is a code of dimension k and length . There is one two-weight quaternary code, and it is projective self-dual [13].
4. Self-Polar Codes—Computational Aspects
Let C be a linear PSD code with a characteristic vector . First, we consider only projective codes, and in such a case the vector is binary. To check whether the code C is self-polar, we use the following matrices: and . Obviously, if , this matrix is symmetric, as well as the matrix defined in Theorem 2.
We take a PSD code, which means that for some parameters and the codes with characteristic vectors and are equivalent. From the previous section, we know that and depend on the code parameters and are fixed for a given PSD code. Therefore, to verify that the code is self-polar, we need to prove that there are characteristic vectors of C and its projective dual code such that the corresponding matrix is symmetric.
If we consider
as an incidence matrix of an incidence structure, this structure is self-polar if there exists a permutation matrix
P such that
[
15]. The matrix
P permutes the rows of
, and
permutes the columns of the transpose matrix. According to [
16], two projective linear
codes are equivalent if and only if their characteristic vectors belong to one orbit under the action of
on the set of all characteristic vectors of the projective linear
codes, where
is the subgroup of the symmetric group
, which consists of all permutation automorphisms of the rows of the matrix
. This means that, if
, applying
to the rows of
, we obtain a matrix whose columns are the same but possibly in a different order. If
P is the permutation matrix corresponding to
, then there is another
permutation matrix
Q such that
.
Consider the characteristic vector
for
. Then,
which proves that
.
Let
and
. Then,
Hence, if the code C is self-polar, the matrix is equivalent to a symmetric matrix.
The above reasoning shows that we need an algorithm to check whether a given square matrix is equivalent to a symmetric matrix.
4.1. An Algorithm for Checking Whether a Given Square Matrix Is Equivalent to a Symmetric Matrix
We only consider binary matrices that are equivalent to their transpose matrices. Let
A be a square
binary matrix of this type. Since we use canonical forms in the equivalence test, without loss of generality, we can assume that
A is in canonical form. Let
be the group of all
permutation matrices. As already mentioned in this paper, we consider the following equivalence in the set
of all
binary matrices: two matrices
are equivalent if the matrix
B can be obtained after permuting the rows and columns of
A. This means that
for two permutation matrices
. This equivalence corresponds to an action of the group
on the set
, and the equivalence classes are the orbits under this action. The canonical representative of an orbit is a unique matrix from the orbit, and the canonical form of a matrix is the canonical representative of its equivalence class (orbit). So, all matrices in one equivalence class have the same canonical form. Description and references regarding the canonical form are provided in [
16].
Consider the following automorphism group of
A:
If is trivial, there is only one pair such that . If A is equivalent to a symmetric matrix, then for a permutation matrix . Hence, and . It follows that A is equivalent to a symmetric matrix if and only if and this symmetric matrix is . If the group is not trivial, . If , then for any . These considerations prove the correctness of the algorithm presented below.
We present the transformation of a matrix to a symmetric form in the following Algorithm 1.
Algorithm 1. Checking for equivalence to a symmetric matrix |
Input: A square binary matrix B. |
Output: If B is equivalent to a symmetric matrix, the output is ; otherwise, the answer is negative.
Compute the canonical form of B, and let this be matrix A. We find the canonical map and the automorphism group . The canonical map sends the matrix into its canonical form, which is . If this canonical form is not the matrix A, the given matrix cannot be equivalent to a symmetric matrix. Only if , we continue the algorithm. For all matrices Q for which for a matrix , do the following: Check whether the matrix is symmetric. If yes, B is equivalent to the symmetric matrix and the algorithm terminates with a positive answer. If is not symmetric for all matrices Q, then B is not equivalent to a symmetric matrix and the algorithm terminates with a negative answer.
|
The complexity of this algorithm depends on the order of the automorphism group . If the group is not trivial and the matrix B is equivalent to a symmetric matrix, there are actually more symmetric matrices equivalent to B.
4.2. Algorithm for Checking the Self-Polarity
For the following algorithm, we require an equivalence relation in the set of all symmetric binary matrices that is similar to the graph isomorphism. If we consider the symmetric matrices
and
as adjacency matrices of the undirected graphs
and
, respectively, the two graphs are isomorphic if and only if there is a permutation matrix
P such that
[
17]. In this case, we will say that the matrices
and
are graph-equivalent.
It is important to check when the characteristic vector
has the same weight as some of the rows of the matrix
. The weights of the vector rows in
are
where
u is a vector row in
. The possible values of the length
n are provided in
Section 3. In each of these cases,
n cannot be equal to a power of
q. But, there are a few possibilities when
.
Let . It is easy to see that, if d is the greatest common divisor of or with , then d divides . If , then , and thus C must be a projective code. The only such code is the simplex code . Let . In the case , if , then , which is not possible. If q and t are odd and for an odd positive integer t (case ), or , but, in both cases, .
If
,
, the needed equality holds only for
,
, and
. These codes have parameters
, and they are complements of the
codes (the codes denoted by SU2 in [
10] for
and
have these parameters). Since
, we can study only the code SU2, for which the first row of the matrix
has a different weight compared to the other rows of the same matrix.
Let k be odd, , , and . As in the previous case, if , then . But, when , , which is impossible for .
Hence, without loss of generality, we can suppose that .
Next, we are looking for a characteristic vector
of the self-polar code
C such that
. Let
be equivalent to the symmetric matrix
. Without loss of generality, we can consider
(as described above) and can take
, where
. The matrix
A is also symmetric and is equivalent to the symmetric matrix
, but we need to check if these two matrices are graph-equivalent. If yes, there is a permutation matrix
P such that
. Let
. For the symmetric matrix
, the following holds:
Hence, is the required characteristic vector.
However, if A and are not graph-equivalent, we repeat the algorithm with another symmetric matrix that is equivalent to but not graph-equivalent to .
The described algorithm proceeds in the following steps:
Checking whether the matrix is equivalent to a symmetric matrix, say . If no, the algorithm terminates with the answer that the code is not self-polar. If yes, then we need all symmetric matrices, equivalent to , that are representatives of different equivalent classes according to the graph-equivalence.
If the matrices A and are not graph-equivalent, then we take another matrix from the representatives of equivalent classes from the previous step. If neither of these representatives is graph-equivalent to , the algorithm terminates with negative answer.
Let A be graph-equivalent to , finding a permutation matrix P such that (described in the above paragraph).
The vector is the needed characteristic vector.
In this algorithm, we need to prove that the codes with characteristic vectors
and
are equivalent. Since the first row and column have specific weights, different from the other rows and columns, we have
Hence,
and
. It follows that
, and therefore a code with characteristic vector
is equivalent to the considered code
C [
16].
If the code is not projective, we construct matrices and in the following way. To obtain matrix , we append with s more rows, where s is the maximal value of a coordinate in . The j-th coordinate of the i-th added row is 1 if and 0 otherwise. Similarly, we construct , by expanding by the corresponding number of columns.
5. Applications
The most natural study of code self-polarity is related to projective two-weight codes. The reasons for this are as follows. These codes are related to many other interesting combinatorial structures, such as strongly regular graphs, bent functions, etc. and the self-polarity property has a direct relation to some properties of these objects. For example, some self-polar two-weight codes correspond to self-dual bent functions [
6].
Information about SRGs, their properties, and their connection to linear codes can be found in [
18]. The parameters of the SRGs associated with the listed projective two-weight binary and ternary codes are also provided in [
13]. A strongly regular graph (SRG) is a regular graph
with
v vertices and degree
k such that, for some given non-negative integers
and
, every two adjacent vertices have
common neighbors and every two non-adjacent vertices have
common neighbors. Such a strongly regular graph is denoted by srg
.
A survey on two-weight codes was provided by Calderbank and Kantor [
10]. An overview with additional families and examples was presented in [
18].
When studying projective two-weight codes with small parameters, it is found that a large number of them are PSD. It is natural to ask how many of these PSD codes are also self-polar. Therefore, in this section, we examine for self-polarity all the two-weight codes classified in [
13]. Along with this, we extend these results with new classification results, such as finding all
codes.
It is known that to every two-weight code there corresponds a strongly regular graph with vertices. By examining the self-polarity, it was found that some of the codes also correspond to strongly regular graphs with n vertices, where n is the length of the code, and degree equal to one of the weights. The question remains, is there a relationship between the two graphs corresponding to the given code, and what is it?
From the study, it became clear that many non-projective codes are also self-polar. In
Section 3, we presented some three- and even four-weight self-polar codes. In this section, we investigate binary and ternary three-weight codes, which are related to the presented projective two-weight codes. More precisely, for a given two-weight
code, we consider the three-weight codes of the same length and dimension and three weights,
,
, and
.
The classification results were obtained using the program
Generation, and the algorithms described in the previous section were implemented on the base of functions from the software package
LCEquivalence, v. 1.1. These programs are freely available and can be downloaded from
http://www.moi.math.bas.bg/moiuser/~data/Software/QextNewEdition.html (accessed on 1 September 2024).
Most of the binary two-weight codes, provided in
Table 1,
Table 2 and
Table 3, are known, as well as their self-duality. These codes are fully classified in [
13], but some examples were previously provided in [
10,
19,
20].
The first columns of the tables contain the parameters of the code, and the second ones contain the numbers of all the inequivalent codes of the corresponding length and dimension. In the third columns, we put the weight enumerators of the codes, but if there are no PSD codes they are omitted. PSD codes exist for all parameters of two-weight codes but not for all studied cases of three-weight codes. After the weight enumerators, the number of PSD and self-polar codes of the corresponding parameters are provided. The last columns of the tables contain additional information concerning the particular code. It is indicated which of the codes correspond to a certain example of
q,
, and
t (
Section 3).
In the following example, we provide more details about one of the two-weight self-polar codes.
Example 10. Let C be the binary code. There exists one code with these parameters and it is a self-polar code. The weight enumerator of C is . The generator matrix for which C and its dual code have the same characteristic vector is The complementary code is a binary code with weight enumerator , and it has a generator matrix Recall that the columns of are all columns of , which does not belong to the matrix G. As we proved in the previous section, is also a self-polar code.
Using G, we obtain the following symmetric matrix: Each row and column of has weight 12. What is more, in this case, the main diagonal also has 12.
The studied three-weight codes are listed in
Table 4 and
Table 5. In the binary case, we are looking for codes with weights
d,
,
, when the codes are divisible by
t. The PSD and self-polar codes with these parameters have weight enumerators
, such that either
or
.
Example 11. We consider one quaternary three-weight code that is self-polar. Its weight enumerator is . The generator matrix G and the matrix have the following structures: The third and fourth columns of G are equal. This corresponds to two equal rows in .
We list some new projective two-weight codes over
. Classification results, as well as the number of PSD and self-polar codes, are provided in
Table 6.
Finally, in
Table 7, we list the parameters of some known SRGs that are derived from two-weight self-polar codes.