Packing arrays
Brett Stevens
a;∗;1, Eric Mendelsohn
b;2aSchool of Mathematics and Statistics, Carleton University, 1125 Colonel By Dr., Ottawa,
Ont, Canada K1S 5B6
bDepartment of Mathematics, University of Toronto, Toronto, Ont., Canada M5S 3G3
Received 31 July 2002; received in revised form 4 February 2003; accepted 6 July 2003
Abstract
A packing array is a b × k array of values from a g-ary alphabet such that given any two columns, i and j, and for all ordered pairs of elements from the g-ary alphabet, (g1; g2), there is at most one row, r, such that ar;i= g1 and ar;j= g2. A central question is to determine, for given g and k, the maximum possible b. We develop general direct and recursive constructions and upper bounds on the sizes of packing arrays. We introduce the consideration of a set of disjoint rows in a packing array which allows these constructions and additionally gives a new upper bound on the size of all packing arrays. We also show the equivalence of the problem to a matching problem on graphs and a class of resolvable pairwise balanced designs. We provide tables of the best known upper and lower bounds.
c
2004 Elsevier B.V. All rights reserved.
Keywords: Orthogonal arrays; Transversal designs; Packing arrays; MDS codes; Matchings; Partial latin squares; Partial match queries
1. Introduction
A g2×k array ;lled with elements from a g-ary alphabet such that each ordered pair from the alphabet occurs exactly once in each pair of columns is called an orthogonal array. By having the ;rst column index the rows of a g×g square, the second column index its columns, and the remaining k − 2 columns give the entries of k − 2 di<erent squares, orthogonal arrays are transformed into a set of k − 2 mutually orthogonal
∗Corresponding author.
E-mail addresses:[email protected](B. Stevens),[email protected](E. Mendelsohn). URLs:http://mathstat.carleton.ca/∼brett/,http://www.math.toronto.edu/mendelso/
1Research supported by NSF Graduate Fellowship GER9452870, SFU, PIMS, MITACS, and IBM Watson
Research.
2Research supported by NSERC of Canada Grant No. OGP007681.
0304-3975/$ - see front matter c 2004 Elsevier B.V. All rights reserved. doi:10.1016/j.tcs.2003.06.004
latin squares (MOLS). Both are known never to exist for k¿g + 1 [3]. It is natural to ask for structures that have similarly useful properties as orthogonal arrays for larger k. One generalization is to require that all pairwise interactions be covered at least once. These objects are known as covering arrays or transversal covers and have been extensively studied, see [8–11,13] and their references. The other natural generalization of orthogonal arrays is the packing array. We de;ne it here with the addition of a substructure which will turn out to be very useful.
Denition 1. A packing array, P A(k; g : n), is a b × k array with values from a g-ary alphabet such that given any two columns, i and j, and for all ordered pairs of elements from the g-ary alphabet, (g1; g2), there is at most one row, r, such that ar; i= g1 and ar; j= g2. Further, there is a set of at least n rows that pairwise di<er in each column: they are called disjoint. The largest number of rows possible in a PA(k; g : n) is denoted by pa(k; g : n).
One might question the usefulness of requiring a set of disjoint rows, but we carry this parameter n throughout the paper because this substructure is necessary to per-mit the constructions discussed, most notably Theorems 12 and 13. If this set does not occur inside the ingredient arrays of these recursive constructions then the arrays formed will have many repeated pairs which is forbidden in a packing array. The same constructions motivate the inclusion of the study of sets of disjoint rows in covering arrays [10,11]. In that case these sets allowed the optimization of the construction, here they are absolutely necessary.
It is important to note that if disjoint rows are not required, which may be the case for most applications, one can simply focus on n = 1, and not disregard this article as uninteresting. On the other hand, in the quest for optimal packing arrays with n = 1 we utilize packing arrays with larger n. For example, Wilson’s construction requires their existence and can be used to produce the PA(6; 6 : 1) of size 26 and the PA(7; 6 : 1) of size 16. These are packing arrays with n = 1 (suitable for applications). They are the best currently known with these parameters, are not constructible without considera-tion of n¿1. Addiconsidera-tionally it should be emphasized that consideraconsidera-tion of disjoint rows directly gives a new upper bound on the size of packing arrays which, in particular, directly gives results on the utility of one of the applications of packing arrays. This bound is given in Theorem 6and its corollaries in Section2.2. Finally, in [12], consid-ering sets of disjoint rows leads to very exciting connections between packing arrays and the existence of ;nite projective planes.
Row and column permutations, as well as permuting symbols within each column, leave the packing conditions intact.
Example 2. A P A(5; 3 : 1) with six rows: 0 0 0 0 0 0 1 2 2 1 1 0 1 2 2 2 1 0 1 2 2 2 1 0 1 1 2 2 1 0
We often and without loss of generality use Zg as the symbol set on each column and let ri; j equal the number of times symbol i ∈ Zg appears in column j.
Packing arrays are also called transversal packings [9] and mutually orthogonal partial latin squares [1,2]. Observing that any two rows of the packing array must have Hamming distance at least k − 1 we see that packing arrays are also error cor-recting codes, speci;cally, maximal distance separating (MDS) codes or partial MDS codes.
Abdel-Gha<ar and Abbadi [2] use MDS codes to allocate large database ;les to multiple hard disk systems so that the retrieval time is optimal. For storage on multiple disks, each attribute space Di, 16i6k of a data base ;le with n records and k attributes
is broken up into g parts, Dij, 16i6k and 16j6g. The database ;le can be seen as a
subset of D1×D2×· · ·×Dk. The set of all records with entries in D1j1×D2j2×· · ·×Dkjk
for 16ji6g and 16i6k is called a bucket, which can be made equivalent to an
element of Zk
g. Abdel-Gha<ar and Abbadi begin by ;rst dividing up the database into
all its buckets and partitioning the set of all buckets into m pieces, each of which will be stored on a single disk in an array of m disks. A partial match query is a request for all records in the database ;le that match a choice of from zero to k attribute values. A search will begin by retrieving from disk all the buckets that could contain records matching the request. After retrieval, this set of buckets will be searched for the matching records therein. Abdel-Gha<ar and Abbadi concern themselves with minimizing the time required to retrieve the buckets from the disk array. If a request matches bi buckets from disk i, 16i6m then they de;ne the retrieval time to be
max{b1; b2; : : : ; bm} and ask how they can optimize this time. A response time is strictly
optimal if max{b1; b2; : : : ; bm} = m i=1bi m :
The conditions necessary for strict optimality are very tight and cannot be achieved in a large number of reasonable situations. Abdel-Gha<ar and Abbadi discuss best possible response times when strict optimality is not possible, and show that if the set of buckets on each disk is an MDS error correcting code then the response time, although not strictly optimal, can be shown to be better than all other allocations schemes across m disks.
They establish bounds on the size of packing arrays, the smallest form of MDS codes, to yield extreme bounds on the eLciency of their system. The MDS or partial MDS codes that correspond to packing arrays would apply to optimal disk allocation over a large number of disks, speci;cally at least gk−2. If packing arrays were used for optimal disk allocation in their model, any search with at least two speci;ed attributes would yield search time of one. Their method guarantees that any partial match query with at least two speci;ed attributes matches at most one bucket on each disk. This is the best possible response time to retrieve the buckets from the disk array.
If we de;ne
Then a simple adaptation of proof of Theorem 3.4 from [2] gives new results on the eLcacy of this application:
Theorem 3. There is no partial MDS code of length k and size b over an alphabet of g letters if
2 6 logg b 6 k − f(b; g) + 1:
In particular the Corollaries from Section 2.2 give that no partial MDS code exists when either
2 6 logg b 6 k −g(g − 1)2 +rmax(rmax2 − 1) or
2 6 logg b 6 k −g(g − 1)2 +b=g(b=g − 1)2 ;
where rmax is the most frequently occurring letter in any single coordinate position. In a similar manner, the bound obtained from Theorem4can give results about the range of possible application.
In addition to re;ning the application range, it is also necessary to construct par-tial MDS codes if one is ever to implement the application. This is another task of this article. Decomposing Zk
g into partial of full MDS codes is also required for any
implementation. Abdel-Gha<ar and Abbadi [2] discuss this aspect but do not fully solve it. In this paper we address the existence of partial MDS codes and leave the decomposition problem associated with them to further research. We believe that con-structing examples is a worthwhile endeavor and is not mitigated by not completing the decomposition problem which is a separate research area in its own right.
In our terminology, Abdel-Gha<ar and Abbadi [2] show that
pa(k; g : 1) ¿ g + 1 ⇒ k 6 g22+ g; which together with pa(k; g : 1)¿g implies
pa((g2+ g + 2)=2; g : 1) = g and pa((g2+ g)=2; g : 1) ¿ g:
Although not in these precise terms, Abdel-Gha<ar modi;es the Plotkin bound for packing arrays with n = 1 and shows that this bound is met when k¿2g − 1 [1]. We extend this result to include all n. He also completely solves the case where n = 1 and g = 3; 4 and shows that a packing array with g2−1 rows can be completed to one with
g2 rows.
In Section 2, two sets of upper bounds on packing arrays are derived. The ;rst set of bounds consists of our modi;cation of the Plotkin bound to account for sets of disjoint rows and the implications of non-integrality. The second set comes from an observation on the constraints that sets of disjoint rows place on these structures. In Section 3, we discuss constructions which yield lower bounds. We review some constructive techniques motivated by design theory that are also useful to construct
transversal covers [11]. We also present a direct construction using matchings in graphs. Finally, we present a set of recursive constructions based on this matching problem. Both these constructions extend Abdel-Gha<ar’s result to packing arrays with sets of disjoint rows.
2. Packing arrays:upper bounds 2.1. Modi6cation of the Plotkin bound
The rows of a PA(k; g : n) form a code on a g-ary alphabet with word length k and Hamming distance at least k − 1. The set of n disjoint rows form a set of n codewords with mutual Hamming distance k. If the PA(k; g : n) has pa(k; g : n) rows then the number of codewords in the code is maximum among the codes containing such a speci;ed set of n codewords.
One of the most potent coding theory bounds is the Plotkin bound. Abdel-Gha<ar derives a generalization of the Plotkin bound for packing arrays. We adapt this bound further to include consideration of sets of disjoint rows and to extend its utility to parameter sets where the number of rows is not a multiple of g. We establish upper bounds not only to discuss the range of application of packing arrays but also to determine when we are using optimal objects in our constructions.
Theorem 4 (Plotkin bound modi;ed for packing arrays). A b × k packing array must satisfy the following bound for all 6b, = ug + v where 06v¡g:
k((g − v)u2+ v(u + 1)2) 6 2− − n2+ n + k:
Proof. Since deletion of rows does not a<ect the packing conditions, if a b×k packing array exists then a × k packing array must exist for all 6b. Any bounds on the parameters of packing arrays must therefore hold for all 6b as well.
Let N be the number of ordered pairs of di<erent symbols in the columns of a PA(k; g : n). Since pairs of rows from the set of n disjoint rows never intersect (i.e. never have the same symbol in the same position) and any other pair of rows can share a common symbol in the same position in at most one place, we get
N ¿ ( − 1) (k − 1) + n(n − 1):
On the other hand, we can determine this value, N, in another way. For each sym-bol, i, there are b − ri; j rows where a di<erent symbol occurs in column j. So, with g
i=1rij= , we have g
i=1ri;j( − ri;j) = 2−g
i=1r 2
i;j6 2− (g − v)u2− v(u + 1)2 (1) with equality if exactly v symbols have replication u + 1 and g − v symbols have replication u. These two bounds on N give
which reduces to the desired bound, with equality if the replication numbers are as stated above and every pair of rows meets in exactly one position except those in the set of disjoint rows.
In the event that we can prove that there must be more than two replication numbers this bound can be tightened in Eq. (1). On the other hand, when equality is reached in Theorem 4, strong implications on the structure of the code arise: the bound must be an integer (although the standard Plotkin bound might not be integral in many cases); any two code words, except those in the set of disjoint rows must intersect; and each symbol must appear nearly equally often in each column (either u or u + 1 times). Let us examine these consequences for packing arrays.
We dualize the packing array into a block design.
Denition 5. A pairwise balanced block design (PBD(v; K; )) is a base set V of v elements, and a collection B of subsets B ⊆ V , and |B| ∈ K, called blocks, such that every pair of points from V occur in exactly blocks. Furthermore if the collection of blocks can be partitioned so that each part contains every element of V exactly once, we say that the PBD is resolvable. A generalization of PBDs admits holes. A subset, H ⊆ V is called a hole if every pair of elements of H occurs in no blocks.
The base set of the design of interest is the rows of the array. The blocks of this design are any maximal collection of rows that have the same symbol in some column. Each column, therefore, de;nes a spanning subset of blocks, or resolution class. This dual structure is a resolvable PBD(v; {u; u + 1}; 1) with a hole of order n. Each resolution class must have each block size occurring the same number of times as every other resolution class. If b is a multiple of g then there is only one block size in the resolvable PBD. In fact, for n = 1, these structures are a particular class of design: a class-uniformly resolvable design (CURD). This recently studied class of designs provides insight into resolvable structures and have important applications [4,7,14].
If b62g, consideration of Theorem 4 implies that the dual of this structure is a packing of pairwise edge disjoint (b − g)-matchings into Kb − Kn. We discuss this
speci;c case in Section 3.2. 2.2. Disjoint row bound
If we have a symbol appearing m¿n times in one column of a PA(k; g : n) then deleting this column yields a PA(k−1; g : m). Therefore, bounds on the sizes of packing arrays can be translated into bounds on the admissible replication numbers for packing arrays with one more column. To this end, we calculate the maximum number of columns possible in a packing array with n disjoint rows and at least g + 1 rows.
Theorem 6. The maximum number of columns in a packing array with at least g + 1 rows is
g(g + 1)
2 −
n(n − 1)
Proof. Since the number of columns is non-increasing as the number of rows increases we need only establish the result for exactly g + 1 rows. Given an arbitrary packing array with g + 1 rows, we manipulate it row by row. By permuting rows and symbols within columns, we can assume that the ;rst n rows of the packing array are the row of all 0’s, the row of all 1’s and so on up to the row of all (n − 1)’s. Since, within each column we can permute the symbols, when we consider each next row, i, (except the last) the symbols in this row can be all the symbols that we have used in previous rows and at most one new symbol. We can also assume that underneath a previously occurring symbol in row i that the symbol, i, new to row i + 1 does not occur. If it did we could permute the symbols in this column to swap symbol i and i − 1.
De;ne li; n to be the largest number of previously used symbols that can appear in row i in a packing array with a set of n disjoint rows. Clearly ln+1;n= n; after the ;rst n disjoint rows, each symbol in them appears at most once in every following row. These numbers satisfy the recursion li+1;n= li; n+ i. We can assume, by performing permutations of the columns, that each symbol new to a row appears in a contiguous rightmost set of indices or columns. To the left of these indices we can assume are a set of entries that only contain previously used symbols appearing directly below symbols that were new to row i − 1. Finally we can assume that the remaining leftmost set of indices are previously used entries in both row i and i − 1. Then, by assumption, at most the ;rst li; n symbols of row i will be previously appearing symbols and the remaining k − li; n will be the symbol i − 1, new to row i. Thus the right-hand side of the packing array under manipulation will look like a large set of disjoint rows; rows will only share the same symbols in a column on the left hand side. When considering the row i + 1, the new symbol is i; at most i of the old symbols in this, row i + 1, are underneath the right hand part of row i where symbol i − 1 appears. This is the middle set of indices described above. This portion, along with the ;rst li; n positions in row i + 1, is the largest possible set of positions in which old symbols can appear. Iterating, we see that li; n= (i(i−1)−n(n−1))=2 and lg;n= (g(g−1)−n(n−1))=2. If a g+1st row exists, it can only contain previously used symbols, and so we must have a set of at most g right-most columns, restricted to which, the array so far manipulated, consists of disjoint rows. So k − lg;n6g or
k 6 g(g + 1)2 −n(n − 1)2 :
To see that there is an array achieving this bound we use the following algorithm for arranging the old symbols to each new row. In row i, the ;rst li−1;n columns will have the old symbol, i−2 (new in the previous row, i−1). The next i−1 columns will have each of the old symbols, 0; 1; : : : ; i−2, once. The remaining (g(g+1)−n(n−1))=2−li; n columns of this row will have the new symbol, i − 1. The last, g + 1st row, follows the same pattern but will have no columns remaining for new symbols (which is good seeing as there are not any). Each row intersects every other in at most one point and thus satis;es the packing conditions. It is straightforward to check that the ;rst g rows of a matrix using li; n previously used symbols in row i can only be those constructed above, up to permutation of rows, columns and symbol sets within each column.
Corollary 7. If, in a PA(k; g : n) with more than g rows, we de6ne rmax= max{rij: i ∈ Zg; 16j6k}, then
k − 1 6 g(g + 1)2 −rmax(rmax2 − 1):
Proof. Remove any column which has a point achieving rmax. This yields a PA(k − 1; g : max(n; rmax)).
Observing that if a PA(k; g : n) has more than mg rows, it must have a point with replication number at least m + 1, we have the following corollary.
Corollary 8. The maximum number of columns in a packing array with more than mg rows is
g(g + 1)
2 −
m(m − 1)
2 + 1;
or alternatively, noting that pa(k; g : n) is non-increasing in k, we have pa g(g + 1) 2 − m(m − 1) 2 + 2; g : n 6 mg: One notable consequence of this is the fact that
pa(g + 2; g : n) 6 g2− g:
Finally, as discussed in the introduction, these corollaries directly give new results on the range of useful application for disk allocation.
3. Packing arrays:constructions and lower bounds 3.1. Constructions from design theory
Denition 9. An incomplete orthogonal array is the same as an orthogonal array ex-cept there are s mutually disjoint subsets of the alphabet, Hi, called holes with cardi-nalities bi, such that every ordered pair, both from Hi, 16i6s, never occurs in any pair of columns.
They are also called incomplete transversal designs (ITD(k; g : b1; b2; : : : ; bs)) and are used to construct transversal covers [11]. This construction can be similarly formulated for packing arrays to yield.
Theorem 10. If there exists an ITD(k; g; b1; b2; : : : ; bs) then pa(k; g : i) ¿ max ii+i2+···+is=i ij6bj g2−s j=1(b 2 j− pa(k; bj: ij)) :
Proof. Fill the holes of the ITD with the PA(k; bj: ij). These holes are disjoint, thus the union of the sets of disjoint rows from the PA(k; bj: ij) will also be a set of disjoint rows.
Example 11. The existence of ITD(4; 6; 2) and ITD(6; 10; 2), yield pa(4; 6) = 34, as also stated by Abdel-Gha<ar [1] and pa(6; 10) = 98 or 100. PA(4; 6) is explicitly
0 0 0 0 0 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 5 5 5 5 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 0 1 2 3 5 4 4 5 2 3 0 1 1 0 5 4 2 3 5 4 0 1 3 2 3 2 4 5 1 0 0 3 1 2 2 1 3 0 4 5 0 1 4 5 2 3 5 4 0 1 3 2 3 2 5 4 0 1 4 5 3 2 1 0 1 3 2 0 2 0 1 3 4 5 T ; where the last two rows are the ;lled hole. We observe that this is actually a PA(4; 6:5): rows 1, 8, 18, 27 and 34 are a set of disjoint rows.
3.1.1. Generalizing Wilson’s construction to packings
Theorem 12. Let C be a PA(k + l; t) with columns G1; G2; : : : ; Gk and H1; H2; : : : ; Hl. Let S be any set of choices of a subset of each symbol set on H1; : : : ; Hl, let hi be the number of symbols chosen from column Hi, li=1hi= u, and m be any nonnegative integer. For any row A of C let uA= |S ∩ A|, the number of times the symbol in the intersection of column Hi with row A is in the set of symbols chosen for Hi summed from H1 to Hl. Then pa(k; mt + u) ¿ A (pa(k; m + uA : uA) − uA) + l i=1pa(k; hi):
Proof. The proof is a straightforward generalization of Wilson’s construction for trans-versal designs [15].
If l = 0, we get the obvious generalization of MacNeish’s theorem.
pa(k; g : n) ¿ max
26i6g=2 max(1;n=g=i)6j6min(n;i)
((pa(k; i : j) pa(k; g=i : n=j)): (2) When l = 1, using some probabilistic analysis as in [11], we can achieve:
pa(k; mt + u : n) ¿ max
(i;j;‘)∈An;u;t;m(pa(k; u : ‘) + (t + u) pa(k + 1; t : i) pa(k; m : j)=t
+ u pa(k + 1; t : i) (pa(k; m + 1 : j + 1) − 1)=t); (3) where
An;u;t;m= {(i; j; ‘) ∈ N3: ij + ‘ ¿ n; 1 6 ‘ 6 u; 1 6 i 6 t; 1 6 j 6 m}: For l¿1 the potential of this construction is large but there are diLculties. For transver-sal designs, the tight balance conditions often permit counting the number of blocks that intersect S. We do not have such strong structural information about packing arrays and this makes the case l¿1 diLcult to state as a recursion on the packing numbers
alone. It requires analyzing the particular master array. One case where this has be done is m = 0.
Theorem 13. Given a (v; {2; 3; : : : ; g − 1}; 1)-design, and for each point x, a chosen block to represent x, Bx, with x ∈ Bx, we can construct a PA(k; g). For each block, B, of the design, we de6ne uB to be the number of points on this block not represented by it. Then
pa(k; g) ¿
B pa(k; |B| : uB) − uB:
For a full explanations of the constructions of this section see [11]. 3.2. Direct construction for b62g: matching packings
The equivalence, when b62g, between optimal packing arrays and packings of matchings into Kb − Kn also yields a number of constructive results. We prove a
number of results from a purely graph theoretical point of view before applying the results to packing arrays.
3.2.1. Graph theoretical results
We will need a result on graph edge colourings before we proceed. the proof can be found in [5].
Lemma 14. Kv−Kn is (v−1) edge colourable if and only if v is even or n2−n¿v−1. The next two theorems are similar to the interesting work of Rodger and Ho<man on the number of edge-disjoint perfect matching in graphs [6]. We are concerned with the number of edge-disjoint partial matchings.
Theorem 15. The maximum number, k, of edge disjoint copies of an m-matching that can be packed into a Kv− Kn is subject to the following conditions:
2km 6 v(v − 1) − n(n − 1); k(2m − v + n) 6 n(v − n)
and a packing achieving the largest integer k subject to these conditions always exists. Proof. First note that since the m-matching must ;t in the graph, then v¿2m and since every one of the edges in a matching must have at least one endpoint not in the hole, then v − n¿m. Since each of the k m-matchings uses m edges and there are only (v(v − 1) − n(n − 1))=2 edges and we obtain
2km 6 v(v − 1) − n(n − 1):
There are n(v − n) edges between the n vertices in the hole and the remaining v − n vertices. These are divided into k classes so some matching uses at most (n(v−n))=k of these edges. Each of the k m-matching spans 2m vertices and misses v−2m vertices so if v − 2m ¡ n − n(v − n) k :
We cannot complete the edges from Kn;v−n into a m-matching and so if 2m − v + n¿0, we derive the second necessary condition:
k(2m − v + n) 6 n(v − n):
Let k2 equal the greatest integer that satis;es this bound. Both k1 and k2 are upper bounds on the number of m-matchings that can be packed into Kv− Kn.
When
v(v − 1) − n(n − 1)
2m ¿ v − 1
then k1 is the lesser upper bound and as long as either k1¿v − 1 or the conditions of Lemma 14are met then an equitable k1 colouring of Kv− Kn with any
e = v(v − 1) − n(n − 1)2 − mk1
edges removed give the desired packing and allow the leave graph to be any subgraph of Kv− Kn with e edges. The only case not covered is when v is odd, n2− n¡v − 1 and k1= v − 1. These conditions imply that v = 2m + 1. It is also clear that when n1¡n2, then Kv− Kn2⊆ Kv− Kn1 and all we need consider is the largest n satisfying n2− n¡v − 1.
Equitably (v − 1) edge colour Kv−n. Label the edges in each colour class from the set {n; : : : ; m} such that no two edges in the same colour class get the same label. Fill in a v × (v − 1) matrix in the following manner. Label the rows consecutively 0; 1; : : : ; v − 1. All cells in the ;rst n rows get the same symbol as their row. To ;ll in the remaining rows assign one colour class from the (v − 1) edge colouring of Kv−n to each column of the matrix and assign one vertex of Kv−n to each of the remaining rows of the matrix. If edge {i; j} is in colour class k with label l then put symbol l in cells (i; k) and (j; k).
After this is done, each row (not from the ;rst n) will have n un;lled cells. There will be (v − 1 + n2− n)=2 columns with (n − 1) un;lled cells and (v − 1 − n2+ n)=2 columns with (n + 1) un;lled cells. Each of these last columns will be missing exactly one symbol from {n; : : : ; m}. In each such column arbitrarily place this symbol in exactly one of the un;lled cells. Now each row and column has at most n un;lled cells. Form the natural bipartite graph representing these holes: The two parts of this graph will be the set of the bottom (v − n) rows and the set of columns. An edge will be placed from vertex i to vertex j if the cell (i; j) is empty. This graph has $ = n and is therefore n edge colourable with colours {0; : : : ; n−1} using this colouring ;ll in the remaining un;lled cells. Every symbol from {0; : : : ; m} appears at least once in each
column, no symbol more than twice and exactly one symbol once in each column. The pairs of rows that have identical symbols in the ith column are the sets of edges in the ith m-matching packed into Kv− Kn.
The remaining case is when v(v − 1) − n(n − 1)
2m ¡ v − 1
and k26k1. Remove all but k2(v − n − m) edges from Kv−n This is possible because (v − n) (v − n − 1)=2¿(n(v − n) (v − n − m))=(2m + n − v). Since the maximum degree of Kv−n was v − n − 1 before the edges were removed, this is still the largest possible maximum degree. Now k2 edge colour the remaining graph. This is possible since
$ + 1 6 v − n 6 n(v − n) (2m − v + n) = k2:
As above ;ll in the cells of a v × k2 array. There are (2m − v + n) empty cells in each column and at most
k2(2m − v + n) (v − n)
in each of the last (v − n) rows (there are no empty cells in the ;rst n rows). Now in the bipartite graph de;ned on the set
{last v − n rows} ∪ {k2 columns}:
Edge {i; j}; i ∈ {last v − n rows}; j ∈ {k2 columns} is in the graph if and only if cell (i; j) is empty. The maximum degree of this bipartite graph is
$ = max 2m − v + n; k(2m − v + n) (v − n) 6 n:
So this graph is n edge colourable. Use this colouring to ;ll in the empty cells of the matrix and de;ne the partial matchings as above. It is easy to check that each matching has at least m edges, so we can remove any excess and obtain the desired packing of m-matchings in Kv− Kn.
Theorem 16. The maximum number, k, of edge disjoint copies of an m-matching that can be packed into a Kv1;v2− Kn1; n2 (assume without loss of generality that v1¿v2) is subject to the following constraints:
k(m − v1+ n1) 6 n1(v2− n2); k(m − v2+ n2) 6 n2(v1− n1); km 6 v1v2− n1n2
and the largest integer k satisfying all these is always achievable.
Proof. First we establish the necessary conditions. Since the m-matching must ;t in the graph, we have v2¿m and since every one of the edges in a matching must have
at least one endpoint not in the hole, then v1+v2−n1−n2¿m. Since each m-matching uses m edges and there are only v1v2− n1n2 edges and we obtain
k 6 v1v2− n1n2 m := k1:
The union of the k m-matchings form a subgraph of Kv1;v2− Kn1; n2 that is, by construc-tion, k colourable. Therefore this subgraph must have degree at most k. Therefore it must be possible to remove v1v2− n1n2− mk edges so as to reduce the degree of all vertices to at most k. There are v1− n1 vertices of degree v2 and so we get
v1v2− n1n2− mk ¿ (v1− n1) (v2− k): If m − v1+ n1¿0 this reduces to k 6 n 1(v2− n2) m − v1+ n1 := k2:
There are v2− n2 vertices of degree v1 and so we get v1v2− n1n2− mk ¿ (v2− n2) (v1− k): If m − v2+ n2¿0 this reduces to k 6 n2(v1− n1) m − v2+ n2 := k3:
It is also true that there are n1 vertices of degree v2− n2 and n2 vertices of degree v1− n1 but the bounds on k derived from these two facts are never stronger than k1.
To establish the suLciency of these conditions we shall examine three cases: Case 1: k1 is the least.
In particular, if m − v2+ n2¿0, so k3 is de;ned, then k16k3: v1v2− n1n2 m 6 n2(v1− n1) m − v2+ n2; mv1(v2− n2) 6 v1v2(v2− n2) − n1n2(v2− n2); v16 v1v2− nm 1n2; v16 k1:
On the other hand if m − v2+ n260 then m6v2− n2 and we get n16 v1;
v1v2− v1n26 v1v2− n1n2; v16 v1v2− nm 1n2;
v16 k1:
Since v1 is the maximum degree of the bipartite graph Kv1;v2− Kn1; n2, we can remove all but k1m edges from the graph and equitably k1 edge colour it and the colour classes will be the desired number of m-matchings.
Case 2: k2 is the least.
Since k2 is de;ned then we know that m−v1+n1¿0. If m−v2+n260, equivalently, k3 is not de;ned, then
n16 v1; v1v2− v1n26 v1v2− n1n2; v1m 6 v1v2− n1n2; v2m 6 v1v2− n1n2; v2m(v1− n1) 6 (v1v2− n1n2) (v1− n1); mv1v2− mn1n2− (v1v2− n1n2) (v1− n1) 6 mv2n1− mn1n2; (m − v1+ n1) (v1v2− n1n2) 6 mn1(v2− n2); k16 k2
and so k1 is also the least and the results of the ;rst case apply.
So we can assume that both m − v1+ n1¿0 and m − v2+ n2¿0. In what follows we will remove x edges from the Kn1; v2−n2 portion of the graph, y edges from the Kv1−n1; v2−n2 portion of the graph and z edges from the Kv1−n1; n2 portion of the graph. We must assign values to x, y and z so that all the degrees of the remaining graph are no more than k2 and there are k2m edges remaining. At this point simply k2 edge colouring will produce the desired set of m-matchings. The conditions that must be satis;ed are: x ¿ (v2− n2− k2) (n1); x + y ¿ (v1− k2) (v2− n2); y + z ¿ (v2− k2) (v1− n1); z ¿ (v1− n1− k2)n2; x + y + z = v1v2− n1n2− k2m:
Since m6v, this implies that m−v1+n16n1. Together with the fact that v2−n2 must be integral means that v2−n26 (n1(v2−n2))=(m − v1+ n1) = k2. Thus we can set x = 0, y = (v1−k2) (v2−n2) and z = v1v2−n1n2−k2m−y = v1v2−n1n2−k2m−(v1−k2) (v2−n2). It is easy to check that all the constraints are satis;ed. The edges can easily be removed so as to reduce the degrees as evenly as possible in each component.
Case 3: k3 is the least.
If k3 is de;ned then we know that m − v2 + n2¿0. If m − v1 + n160, so k2 is not de;ned then m6v1− n1. Now if k36v2 then consider Km;k3 as a subgraph of the Kv1−n1; v2 that is a subgraph of Kv1;v2− Kn1; n2. We know that m6v1− n16k3 so we can k3 edge colour this graph to produce the needed number of m-matchings. So we may now assume that k3¿v2. Like above we need to choose x, y and z to satisfy
x ¿ (v2− n2− k3) (n1); x + y ¿ (v1− k3) (v2− n2);
y + z ¿ (v2− k3) (v1− n1); z ¿ (v1− n1− k3)n2;
x + y + z = v1v2− n1n2− k3m:
But knowing that k3¿v2 and k3¿v1− n1 means that the only one of these inequalities not automatically satis;ed is
x + y ¿ (v1− k3) (v2− n2):
So the evenly distributed removal of any v1v2− n1n2− k3m edges between the v2− n2 vertices of degree v1 will reduce all degrees to no more k3 and leave exactly k3m edges. So equitably k3 edge colouring the remaining graph produces the needed number of m-matchings.
In the only remaining case, both m − v1+ n1¿0 and m − v2+ n2¿0. Since v1− n16 (n2(v1−n1))=(m − v2+ n2) = k3 we can set z = 0. Then set y = (v2−k3) (v1−n1) and x = v1v2− n1n2− k3m − y = v1v2− n1n2− k3m − (v2− k3) (v1− n1). It is easy to check that all the constraints are satis;ed. The edges can easily be removed so that they reduce the degrees as evenly as possible in each component. Equitably k3 edge colouring once again produces the desired set of m-matchings.
3.2.2. Packing array constructions
A direct application of Theorem15 to packing arrays gives
Corollary 17. pa(k; g : n) ¿ min 2g;2kg − kn − nk − n 2;2k + 1 − (1 + 2k)2+ 4(n2− n − 2kg) 2 : If k6n6g then a PA(k; g : n) with 2g rows is easily constructed using Theorem 15 and so we can ignore this bound if the denominator is zero or negative. Similarly if the discriminant in the third bound is negative then the corresponding bound from Theorem 15 is always satis;ed, so it may also be ignored in that case. In particular, when k¿2g − 1, Corollary17 gives a packing array that meets the bound in Theorem
4 and is optimal.
Abdel-Gha<ar and Abbadi [2] ask and answer the question: when does a packing array have more than g rows? We extend this result to include sets of disjoint rows in Theorem 6. Theorems 15 and 4 also allow us to derive several exact packing arrays numbers: Corollary 18. pa g2+ 3g + 2 − n2+ n 4 ; g : n = g + 2: (4)
pa g2+ 3g + 2 − n2+ n 4 + 1; g : n = g + 1: (5)
When k¿2g − 1 and n¿1, then pa(k; g : n) = 2k + 1 −4k2+ 4k + 1 − 8kg + 4n2− 4n 2 : And 6nally pa(2g − 2; g : 2) = 2g:
We also have recursive constructions.
Theorem 19. Within a PA(k; g : n) 6x n rows which contain no members of the set
of n disjoint rows. Let qi; j be the number of times that symbol j appears in ith column of a row in the union of this set of rows and the original n disjoint rows. Let mi, and hi; j, 16i6k, 16j6g be a positive integers such that pa(mi; hi; j: qi; j)¿ri; j. Additionally, let h = maxi{gj=1hi; j}. Then
pa k
i=1mi
; h : n + n¿ pa(k; g : n):
Proof. This is the dual of Theorem 2.7 from [4].
We can use Theorem 16 to facilitate a recursive construction for packing arrays.
Theorem 20. Suppose that there exists a PA(k; g1: n1) with b1 rows and a PA(k; g2: n2) with b2 rows and assume b1¿b2. If b16g1+ g2 then there exists a PA(k + k; g1+ g2: n1+ n2) with b1+ b2 rows where k is the largest integer satisfying
k(b 1+ b2− g1− g2) 6 b1b2− n1n2 k(b 2− g1− g2+ n1) 6 n1(b2− n2) k(b 1− g1− g2+ n2) 6 n2(b1− n1) and there exists a PA(k + k; g
1+ g2: max(n1; n2)) with b1+ b2 rows where k= b1b2
b1+ b2− g1− g2
:
Proof. Consider each PA as its dual, resolvable packings of Kb1− Kn1 with g1 blocks in each class and Kb2− Kn2 with g2 blocks in each class. We then take the disjoint union of both graphs and associate one resolution class from the ;rst PA with a unique class from the second PA (this is equivalent to concatenating the two packing arrays vertically with distinct alphabets sets). Then using Theorem 16, with either the hole in the bipartite graph, or not, we add the maximum number of matchings, each one
contributes another resolution class with g1+ g2 blocks and these can all be viewed as new columns. It is worth noting that if g1+ g2¿b1+ (n1n2)=b1 then
k= b1b2− n1n2 b1+ b2− g1− g2
:
Example 21. An example of Theorem20 is given here. We start with two copies of a PA(4; 3 : 2), one on symbol set {0; 1; 2} and the other on symbol set {3; 4; 5}, vertically concatenated. 0 0 0 0 1 1 1 1 0 1 2 2 2 2 0 1 2 0 1 2 1 2 2 0 3 3 3 3 4 4 4 4 3 4 5 5 5 5 3 4 5 3 4 5 4 5 5 3
Each one represents a resolvable packing in K6−K2. We ;nd the maximum number of
6-matchings in the bipartite graph K6;6 of edges between the two K6. Each additional
matching allows us to add one more column to the packing array:
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 2 2 2 2 2 2 2 2 2 2 0 1 3 3 3 3 3 3 2 0 1 2 4 4 4 4 4 4 1 2 2 0 5 5 5 5 5 5 3 3 3 3 0 5 4 3 2 1 4 4 4 4 1 0 5 4 3 2 3 4 5 5 2 1 0 5 4 3 5 5 3 4 3 2 1 0 5 4 5 3 4 5 4 3 2 1 0 5 4 5 5 3 5 4 3 2 1 0
Thus we get that pa(10; 6 : 2)¿12 which is the best possible by the upper bound from Theorem 4.
3.3. Utility of the constructions
We implemented on computer the calculation of upper and lower bounds using the methods discussed in this article. We only give 36g69, although the PBD bound
Table 1
Abbreviation list of methods constructing packing arrays
Abbreviation Construction method
a Only g or g + 1 rows possible, Eq. (5) and Theorem6
b At least g + 2 rows exists, by Eq. (4).
c Generalization of MacNeish’s theorem, Inequality 2
d Monotonicity in g:pa(k; g : n)¿pa(k; g−1 : n)
e Orthogonal arrays exist
f Wilson’s construction, Inequality 3
g The PBD construction, Theorem13
h Dual of a RBIBD, Subsection2.1
i Monotonicity in k:pa(k; g : n)¿pa(k + 1; g : n)
j Monotonicity in n:pa(k; g : n)¿pa(k; g : n + 1)
k Removal of a column to increase n, see proof of Theorem 7
l Direct Graph Construction, Theorem15
m First Recursive Construction from Theorem20
n Second Recursive Construction from Theorem20
o Incomplete transversal design method, Theorem10
p Construction from [12]
q Dual of a CURD, Section2.1
r Construction of Abdel-Gha<ar [1]
Table 2
Abbreviations list of methods for packing array upper bounds
Abbreviation Upper bound
( Only g or g + 1 rows possible, Eq. (5) and Theorem6
Disjoint row bound, Theorem 7
) Theorem4
* Monotonicity in k:pa(k; g : n)6pa(k−1; g : n)
+ Monotonicity in n:pa(k; g : n)6pa(k; g : n−1)
, A packing array with g2−1 rows can be completed to one with g2 rows [1]
- Result found by hand
. Global Upper bound of g2
/ Upper bound from [12]
Table 3
Bounds on the sizes of ternary packing arrays
k 4 5 6
pa(k; 3 : 1) 9 eh −()*+./ 6 l −) 4 l −()
pa(k; 3 : 2) 6 klp −- 4 l −()/ 3 l −()/
Table 4
Bounds on the sizes of quatary packing arrays
k 5 6 7 8 pa(k; 4 : 1) 16 eh −()*+./ 9 qr −) 8 l −) 5 l −() pa(k; 4 : 2) 9jk −14) 8 klm −) 6 l −) 5 l −()+ pa(k; 4 : 3) 9k −13)/ 7 l −/ 5 l −()/ 4 l −()/ pa(k; 4 : 4) 4 a −( 4 a −()* 4 l −()* 4 l −()*+ Table 5
Bounds on the sizes of pentary packing arrays
k 6 7 8 9 10 pa(k; 5 : 1) 25 eh −()*+./ 15 h −) 10 ijkl −) 10 l −)* 7 l −) pa(k; 5 : 2) 15jk −23) 11j −13) 10 kl −)+ 8 l −) 7 l −)+ pa(k; 5 : 3) 15k −22) 11j −12) 9l −10)+ 7 l −) 6 l −() pa(k; 5 : 4) 11i −19/ 11 p −)/ 6 al −()/ 6 l −()*/ 5 l −()/ pa(k; 5 : 5) 5 a −( 5 a −(* 5 a −()* 5 l −()* 5 l −()*+
was only implemented for g67 since the required enumeration of all PBDs has only been completed to seven points. Appendix A contains tables of these computations. Except for the optimum existence results (Corollary18, Theorem 6, and the existence of MOLS), the relative utility of these constructions is not obvious. Corollary 18 and Theorem6obviously dominate the tables; but these existence results are for a restricted class of packing arrays. The other constructions are more interesting. Theorem 15
produces a large number of the best currently known lower bounds. The most useful constructions for b¿2g seem to be Wilson’s constructions.
4. Conclusion
A number of upper bounds and constructions for packing arrays were presented. The two upper bounds were the generalization of the Plotkin bound (Theorem 4) and the bound derived from the consideration of sets of disjoint rows (Theorem 6), a serendipitous bonus of considering disjoint rows which are required in the construc-tions. Abdel-Gha<ar completely determines pa(k; g : n) when n = 1 and k¿2g − 1; by determining the packing number for matching into Kb− Kn, we extend his solution for
all n. This restricts the investigation of packing arrays from k larger than the largest transversal design known to k62g − 2.
Two additional interesting combinatorial problems arise from the study of packing arrays. The ;rst, the dual structure of a packing array which meets the generalized Plotkin bound, Theorem 4. The dual is a resolvable PBD on b points with a hole of size n where each resolution class has the same number, g, of blocks in it and the
B. Stevens, E. Mendelsohn /Theoretical Computer Science 321 (2004) 125 –148 Table 6
Bounds on the sizes of hexary packing arrays
k 3 4 5 6 7 8 9 10 11 12
pa(k; 6 : 1) 36 e − ()*+./ 34 j − , 26 dfgijk − 34* 26 dgj − 34* 16 dgj − 34* 12 ijkl − 19) 12 ijkl − 14) 12 ijkl − ) 12 l − )* 9 l − )
pa(k; 6 : 2) 36 e − ()*+./ 34 j − , 26 dfgijk − 34*+ 26 dg − 34*+ 16 dg − 34)*+ 12 ijklm − 19)+ 12 ijklm − 14)+ 12 klm − )+ 10 l − ) 8 l − )
pa(k; 6 : 3) 36 e − ()*+./ 34 j − , 26 djk − 34*+ 16 djk − 34*+ 12 dijl − 33) 12 ijl − 19)+ 12 l − 13) 11 l − 12)+ 9 l − ) 8 l − )+
pa(k; 6 : 4) 36 e − ()*+./ 34 j − , 26 djk − 34*+ 16 d − 34*+ 12 dijlm − 32) 12 lm − 18) 11 l − 13)+ 9 lm − 12)+ 8 l − ) 7 l − ()
pa(k; 6 : 5) 36 e − ()*+./ 34 o − , 26 dgjk − 34*+ 12 d;jl − 34*+ 12 dl − 26/ 10 l − 13/ 8 blp − )/ 7 a − ()/ 7 l − ()*/ 6 l − ()/
E. Mendelsohn /Theoretical Computer Science 321 (2004) 125 –148 145 Table 7
Bounds on the sizes of septary packing arrays
k 8 9 10 11 12 13 14 pa(k; 7 : 1) 49 eh −()*+./ 28 h −) 21 h −) 14ijkl −15) 14 ijkl −) 14 l −)* 10 l −) pa(k; 7 : 2) 28jk −47) 21jk −26) 14ijkl −19) 14ijkl −15)+ 14 kl −)+ 12 l −) 10 l −)+ pa(k; 7 : 3) 28jk −46) 21k −25) 14ijl −18) 14l −15)+ 13jl −14)+ 11 l −) 10 l −)+ pa(k; 7 : 4) 28k −45) 15j −24) 14l −17) 13il −15)+ 13l −14)+ 10 l −) 9 l −) pa(k; 7 : 5) 15ij −44) 15j −23) 13j −16) 12l −14) 9 bilm −) 9 l −)* 8 l −() pa(k; 7 : 6) 15i −34/ 15p −18/ 11 l −/ 8 a −()/ 8 a −()*/ 8 l −()*/ 7 l −()/ pa(k; 7 : 7) 7 a −( 7 a −(* 7 a −(* 7 a −()* 7 a −()* 7 l −()* 7 l −()*+
B. Stevens, E. Mendelsohn /Theoretical Computer Science 321 (2004) 125 –148 Table 8
Bounds on the sizes of octary packing arrays
k 9 10 11 12 13 14 15 16
pa(k; 8 : 1) 64 eh −()*+./ 22dj −34) 16ijkl −25) 16ijkl −19) 16ijkl −17) 16 ijkl −) 16 l −)* 12 l −)
pa(k; 8 : 2) 29d −62) 22d −34)+ 16ijklm −25)+ 16ijklm −19)+ 16ijklm −17)+ 16 klm −)+ 14 l −) 12 l −)+
pa(k; 8 : 3) 22djk −61) 16ijl −33) 16ijl −25)+ 16ijl −19)+ 16l −17)+ 15jl −16)+ 13 l −) 11 l −)
pa(k; 8 : 4) 22d −60) 16ijlm −33)+ 16ijlm −24) 16lm −18) 15il −17)+ 15l −16)+ 12 l −) 11 l −)+
pa(k; 8 : 5) 16dijl −59) 16ijl −32) 16l −24)+ 15lm −17) 14l −16) 12 lm −) 11 l −) 10 l −)
pa(k; 8 : 6) 16dijl −58) 16l −32)+ 14ilm −19) 14lm −17)+ 11 l −) 10 bilm −) 10 l −)* 9 l −()
pa(k; 8 : 7) 16dl −43/ 13l −20/ 12l −13/ 10 blmp −)/ 9 a −()/ 9 a −()*/ 9 l −()*/ 8 l −()/
E. Mendelsohn /Theoretical Computer Science 321 (2004) 125 –148 147 Table 9
Bounds on the sizes of nonary packing arrays
k 10 11 12 13 14 15 16 17 18
pa(k; 9 : 1) 81 eh −()*+./ 27ijk −45) 27ijk −30) 27 h −) 18ijkl −21) 18ijkl −19) 18 ijkl −) 18 l −)* 14 l −)
pa(k; 9 : 2) 27ijk −79) 27ijk −43) 27jk −30)+ 18ijkl −25) 18ijkl −20) 18ijkl −19)+ 18 kl −)+ 16 l −) 14 l −)+
pa(k; 9 : 3) 27ik −78) 27ik −42) 27k −30)+ 18ijl −24) 18ijl −20)+ 18l −19)+ 17jl −18)+ 15 l −) 13 l −)
pa(k; 9 : 4) 18ijl −77) 18ijl −41) 18ijl −29) 18ijl −23) 18l −20)+ 17ijl −19)+ 17l −18)+ 14 l −) 13 l −)+
pa(k; 9 : 5) 18ijl −76) 18ijl −40) 18ijl −29)+ 18l −22) 17il −19) 17l −18) 14 l −) 13 l −) 12 l −)
pa(k; 9 : 6) 18ijl −75) 18ijl −39) 18l −28) 17l −21) 16il −19)+ 16l −18)+ 12 ilm −) 12 l −)* 11 l −)
pa(k; 9 : 7) 18ijl −74) 18l −38) 16l −27) 15il −20) 15l −18) 12 lm −) 11 bilm −) 11 l −)* 10 l −()
pa(k; 9 : 8) 18l p −53/ 15l −25/ 14l −17/ 11 blmp −)/ 10 a −()/ 10 a −()*/ 10 a −()*/ 10 l −()*/ 9 l −()/
structure has k resolution classes: a subclass of restricted resolvable designs. As noted in [4,7] these designs have important applications. The second problem that has arisen from the study of packing arrays is the question of the maximum number of edge disjoint m-matchings that can be packed into a graph G.
Future directions for research include packing matchings into general graphs. To search for packing arrays with b62g we should consider packing graphs with subgraphs that include not only points and disjoint edges, but triangles as well. Lastly, for the application to databases, the investigation of decomposing Zk
g into packing arrays is
the next important step.
Appendix A. Tables of upper and lower bounds
We include here tables showing the values for the upper and lower bounds on packing arrays. We have calculated upper and lower bounds for 36g69 and the interesting range of k62g, since k¿2g − 1 is completely known. In all cases we encode the methods used to obtain these values. Values known to be optimal are emphasized in bold (Tables 1–9).
References
[1] K.A.S. Abdel-Gha<ar, On the number of mutually orthogonal partial latin squares, Ars Combin. 42 (1996) 259–286.
[2] K.A.S. Abdel-Gha<ar, A. El Abbadi, Optimal disk allocation for partial match queries, ACM Trans. Database Systems 18 (1) (1993) 132–156.
[3] C.J. Colbourn, J.H. Dinitz (Eds.), The CRC Handbook of Combinatorial Designs, CRC Press, Boca Raton, 1996.
[4] P. Danziger, B. Stevens, Class-uniformly resolvable designs, J. Combin. Des. 9 (2001) 79–99. [5] D.G. Ho<man, C.A. Rodger, The chromatic index of complete multipartite graphs, J Graph Theory
16 (2) (1992) 159–163.
[6] D.G. Ho<man, C.A. Rodger, On the number of edge-disjoint one factors and the existence of k-factors in complete multipartite graphs, Discrete Math. 160 (1–3) (1996) 177–187.
[7] E. Lamken, R. Rees, S. Vanstone, Class-uniformly resolvable pairwise balanced designs with block sizes two and three, Discrete Math. 92 (1991) 197–209.
[8] N.J.A. Sloane, Covering arrays and intersecting codes, J. Combin. Des. 1 (1993) 51–63. [9] B. Stevens, Transversal covers and packings, Ph.D. Thesis, University of Toronto, Toronto, 1998. [10] B. Stevens, A. Ling, E. Mendelsohn, A direct construction of transversal covers using group divisible
designs, Ars Combin. 63 (2002) 145–159.
[11] B. Stevens, E. Mendelsohn, New recursive methods for transversal covers, J. Combin. Des. 7 (3) (1999) 185–203.
[12] B. Stevens, E. Mendelsohn, Packing arrays and packing designs, Des. Codes Cryptogr. 27 (1/2) (2002) 165–176.
[13] B. Stevens, L. Moura, E. Mendelsohn, Lower bounds for transversal covers, Des. Codes Cryptogr. 15 (3) (1998) 279–299.
[14] D. Wevrick, S.A. Vanstone, Class-uniformly resolvable designs with block sizes 2 and 3, J. Combin. Des. 4 (1996) 177–202.
[15] R.M. Wilson, Concerning the number of mutually orthogonal Latin squares, Discrete Math. 9 (1974) 181–198.