In mathematics, an **orthogonal array** (more specifically, a **fixed-level orthogonal array**) is a "table" (array) whose entries come from a fixed finite set of symbols (for example, {1,2,...,*v*}), arranged in such a way that there is an integer *t* so that for every selection of *t* columns of the table, all ordered *t*-tuples of the symbols, formed by taking the entries in each row restricted to these columns, appear the same number of times. The number *t* is called the *strength* of the orthogonal array. Here are two examples:

1 | 1 | 1 |

2 | 2 | 1 |

1 | 2 | 2 |

2 | 1 | 2 |

0 | 0 | 0 | 0 |

0 | 0 | 1 | 1 |

0 | 1 | 0 | 1 |

0 | 1 | 1 | 0 |

1 | 0 | 0 | 1 |

1 | 0 | 1 | 0 |

1 | 1 | 0 | 0 |

1 | 1 | 1 | 1 |

The example at left is that of an orthogonal array with symbol set {1,2} and strength 2. Notice that the four ordered pairs (2-tuples) formed by the rows restricted to the first and third columns, namely (1,1), (2,1), (1,2) and (2,2), are all the possible ordered pairs of the two element set and each appears exactly once. The second and third columns would give, (1,1), (2,1), (2,2) and (1,2); again, all possible ordered pairs each appearing once. The same statement would hold had the first and second columns been used. This is thus an orthogonal array of strength two.

In the example on the right,^{[1]} the rows restricted to the first three columns contain the 8 possible ordered triples consisting of 0's and 1's, each appearing once. The same holds for any other choice of three columns. Thus this is an orthogonal array of strength 3.

A **mixed-level orthogonal array** is one in which each column may have a different number of symbols. An example is given below.

Orthogonal arrays generalize, in a tabular form, the idea of mutually orthogonal Latin squares. These arrays have many connections to other combinatorial designs and have applications in the statistical design of experiments, coding theory, cryptography and various types of software testing.

For *t* ≤ *k*, an **orthogonal array of type ( N, k, v, t)** – an

In many applications these parameters are given the following names:

*N*is the number of experimental*runs*,*k*is the number of*factors*,*v*is the number of*levels*,*t*is the*strength*, and- λ is the
*index*.

The definition of strength leads to the parameter relation

*N*= λ*v*^{t}.

An orthogonal array is *simple* if it does not contain any repeated rows. (*Sub*arrays of *t* columns may have repeated rows, as in the OA(18, 7, 3, 2) example pictured in this section.)

An orthogonal array is *linear* if *X* is a finite field **F**_{q} of order *q* (*q* a prime power) and the rows of the array form a subspace of the vector space (**F**_{q})^{k}.^{[2]} The right-hand example in the introduction is linear over the field **F**_{2}. Every linear orthogonal array is simple.

In a mixed-level orthogonal array, the symbols in the columns may be chosen from different sets having different numbers of points, as in the following example:^{[3]}

0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 0 1 0 1 2 1 0 1 0 2 0 1 1 0 3 1 0 0 1 3

This array has strength 2:

- Any pair of the first four columns contains each of the ordered pairs (0, 0), (0, 1), (1, 0) and (1, 1) two times.
- Columns 4 and 5 – or column 5 with any one of the other columns – contains each ordered pair (
*i*,*j*) once, where*i*= 0 or 1 and*j*= 0, 1, 2, or 3.

It may thus be denoted may be denoted OA(8, 5, 2^{4}4^{1}, 2), as is discussed below. The expression 2^{4}4^{1} indicates that four factors have 2 levels and one has 4 levels.

As in this example, there is no single ``index" or repetition number λ in a mixed-level orthogonal array of strength *t*: Each subarray of *t* columns can have a different λ.

The terms *symmetric* and *asymmetric* are sometimes used for *fixed-level* and *mixed-level*. Here symmetry refers to the property that all factors have the same number of levels, not to the "shape" of the array: a symmetric orthogonal array is almost never a symmetric matrix.

The notation OA(*N, k, v, t*) is sometimes contracted so that one may, for example, write simply OA(*k, v*),^{[4]} as long as the text makes clear the unstated parameter values. In the other direction, it may be expanded for mixed-level arrays. Here one would write OA(*N, k, v _{1}···v_{k}, t*), where column

This OA notation does not explicitly include the index λ, but λ can be recovered from the other parameters via the relation *N* = λ*v*^{t}. This is effective when the parameters all have specific numerical values, but less so when a *class* of orthogonal arrays is intended. For example, when indicating the class of arrays having strength *t* = 2 and index λ=1, the notation OA(*N, k, v, 2*) is insufficient to determine λ by itself. This is typically remedied by writing OA(*v ^{2}, k, v,* 2) instead. While notations that explicitly include the parameter λ do not have this problem, they cannot easily be extended to denote mixed-level arrays.

Some authors define an OA(*N, k, v, t*) as being *k* × *N* rather than *N* × *k*. In such cases the strength of the array is defined in terms of a subset of *t* *rows* rather than columns.

Except for the prefix OA, the notation OA(*N, k, v, t*) is the same as that introduced by Rao.^{[5]} While this notation is very common, it not universal. Hedayat, Sloane and Stufken^{[6]} recommend it as standard, but list eight alternatives found in the literature, and there are others.^{[8]}

An example of an OA(16, 5, 4, 2); a strength 2, 4-level design of index 1 with 16 runs:

1 | 1 | 1 | 1 | 1 |

1 | 2 | 2 | 2 | 2 |

1 | 3 | 3 | 3 | 3 |

1 | 4 | 4 | 4 | 4 |

2 | 1 | 4 | 2 | 3 |

2 | 2 | 3 | 1 | 4 |

2 | 3 | 2 | 4 | 1 |

2 | 4 | 1 | 3 | 2 |

3 | 1 | 2 | 3 | 4 |

3 | 2 | 1 | 4 | 3 |

3 | 3 | 4 | 1 | 2 |

3 | 4 | 3 | 2 | 1 |

4 | 1 | 3 | 4 | 2 |

4 | 2 | 4 | 3 | 1 |

4 | 3 | 1 | 2 | 4 |

4 | 4 | 2 | 1 | 3 |

An example of an OA(27, 5, 3, 2) (written as its transpose for ease of viewing):^{[9]}

0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |

0 | 0 | 0 | 1 | 1 | 1 | 2 | 2 | 2 | 0 | 0 | 0 | 1 | 1 | 1 | 2 | 2 | 2 | 0 | 0 | 0 | 1 | 1 | 1 | 2 | 2 | 2 |

0 | 1 | 2 | 0 | 1 | 2 | 0 | 1 | 2 | 0 | 1 | 2 | 0 | 1 | 2 | 0 | 1 | 2 | 0 | 1 | 2 | 0 | 1 | 2 | 0 | 1 | 2 |

0 | 0 | 0 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 0 | 0 | 0 |

0 | 1 | 2 | 1 | 2 | 0 | 2 | 0 | 1 | 0 | 1 | 2 | 1 | 2 | 0 | 2 | 0 | 1 | 0 | 1 | 2 | 1 | 2 | 0 | 2 | 0 | 1 |

This example has index λ = 3.

An array consisting of all *k*-tuples of a *v*-set, arranged so that the *k*-tuples are rows, automatically ("trivially") has strength *k*, and so is an OA(*v ^{k}, k, v, k*).
Any OA(

Main article: Mutually orthogonal Latin squares |

An OA(*n ^{2}, 3, n*, 2) is equivalent to a Latin square of order

Let *A* be a strength 2, index 1 orthogonal array on an *n*-set of elements, identified with the set of natural numbers {1,...,*n*}. Choose and fix, in order, two columns of *A*, called the *indexing columns*. Because the strength is 2 and the index is 1, all ordered pairs (*i*, *j*) with 1 ≤ *i*, *j* ≤ *n* appear exactly once in the rows of the indexing columns. Here *i* and *j* will in turn index the rows and columns of a *n*×*n* square. Take any other column of *A* and fill the (*i*, *j*) cell of this square with the entry that is in this column of *A* and in the row of *A* whose indexing columns contain (*i*, *j*). The resulting square is a Latin square of order *n*. For example, consider this OA(9, 4, 3, 2):

1 | 1 | 1 | 1 |

1 | 2 | 2 | 2 |

1 | 3 | 3 | 3 |

2 | 1 | 2 | 3 |

2 | 2 | 3 | 1 |

2 | 3 | 1 | 2 |

3 | 1 | 3 | 2 |

3 | 2 | 1 | 3 |

3 | 3 | 2 | 1 |

By choosing columns 3 and 4 (in that order) as the indexing columns, the first column produces the Latin square

1 | 2 | 3 |

3 | 1 | 2 |

2 | 3 | 1 |

while the second column produces the Latin square

1 | 3 | 2 |

3 | 2 | 1 |

2 | 1 | 3 |

These two squares, moreover, are mutually orthogonal. In general, the Latin squares produced in this way from an orthogonal array will be orthogonal Latin squares, so the *k* − 2 columns other than the indexing columns will produce a set of *k* − 2 mutually orthogonal Latin squares.

This construction is completely reversible and so strength 2, index 1 orthogonal arrays can be constructed from sets of mutually orthogonal Latin squares.^{[10]}

Orthogonal arrays provide a uniform way to describe these diverse objects which are of interest in the statistical design of experiments.

As mentioned in the previous section, a Latin square of order *n* can be thought of as an OA(*n ^{2}, 3, n*, 2). Actually, the orthogonal array can lead to six Latin squares since any ordered pair of distinct columns can be used as the indexing columns. However, these are all isotopic and are considered equivalent. For concreteness we shall always assume that the first two columns in their natural order are used as the indexing columns.

In the statistics literature, a **Latin cube** is a three-dimensional *n* × *n* × *n* matrix consisting of *n* layers, each having *n* rows and *n* columns such that the *n* distinct elements which appear are repeated *n*^{2} times and arranged so that in each layer parallel to each of the three pairs of opposite faces of the cube all the *n* distinct elements appear and each is repeated exactly *n* times in that layer.^{[11]}

Note that with this definition a layer of a Latin cube need not be a Latin square. In fact, no row, column or file (the cells of a particular position in the different layers) need be a permutation of the *n* symbols.^{[12]}

A Latin cube of order *n* is equivalent to an OA(*n ^{3}, 4 ,n*, 2).

Two Latin cubes of order *n* are *orthogonal* if, among the *n*^{3} pairs of elements chosen from corresponding cells of the two cubes, each distinct ordered pair of the elements occurs exactly *n* times. A set of *k* − 3 mutually orthogonal Latin cubes of order *n* is equivalent to an OA(*n ^{3}, k, n*, 2).

Unlike the case with Latin squares, in which there are no constraints, the indexing columns of the orthogonal array representation of a Latin cube must be selected so as to form an OA(*n ^{3}, 3, n*, 3).

An *m*-dimensional **Latin hypercube** of order *n* of the *r*th class is an *n* × *n* × ... ×*n* *m*-dimensional matrix having *n*^{r} distinct elements, each repeated *n*^{m − r} times, and such that each element occurs exactly *n* ^{m − r − 1} times in each of its *m* sets of *n* parallel (*m* − 1)-dimensional linear subspaces (or "layers"). Two such Latin hypercubes of the same order *n* and class *r* with the property that, when one is superimposed on the other, every element of the one occurs exactly *n*^{m − 2r} times with every element of the other, are said to be *orthogonal*.^{[13]}

A set of *k* − *m* mutually orthogonal *m*-dimensional Latin hypercubes of order *n* is equivalent to an OA(*n ^{m}, k, n,* 2), where the indexing columns form an OA(

The concepts of Latin squares and mutually orthogonal Latin squares were generalized to Latin cubes and hypercubes, and orthogonal Latin cubes and hypercubes by Kishen (1942).^{[14]} Rao (1946) generalized these results to arrays of strength *t*. The present notion of orthogonal array as a generalization of these ideas, due to legendary scientist C. R. Rao, appears in Rao (1947),^{[15]} with his generalization to mixed-level arrays appearing in 1973.^{[16]}

Rao initially used the term "array" with no modifier, and defined it to mean simply a subset of all treatment combinations – a *simple* array. The possibility of non-simple arrays arose naturally when making treatment combinations the rows of a matrix. Hedayat, Sloane and Stufken^{[17]} credit K. Bush^{[18]} with the term "orthogonal array".

There exists an OA(*4λ, 4λ* − 1, 2, 2) if and only if there exists a Hadamard matrix of order 4*λ*.^{[19]} To proceed in one direction, let *H* be a Hadamard matrix of order 4*m* in standardized form (first row and column entries are all +1). Delete the first row and take the transpose to obtain the desired orthogonal array.^{[20]} The following example illustrates this. (The reverse construction is similar.)

The order 8 standardized Hadamard matrix below (±1 entries indicated only by sign),

+ | + | + | + | + | + | + | + |

+ | + | + | + | − | − | − | − |

+ | + | − | − | + | + | − | − |

+ | + | − | − | − | − | + | + |

+ | − | + | − | + | − | + | − |

+ | − | + | − | − | + | − | + |

+ | − | − | + | + | − | − | + |

+ | − | − | + | − | + | + | − |

produces the OA(8, 7, 2, 2):^{[21]}

+ | + | + | + | + | + | + |

+ | + | + | − | − | − | − |

+ | − | − | + | + | − | − |

+ | − | − | − | − | + | + |

− | + | − | + | − | + | − |

− | + | − | − | + | − | + |

− | − | + | + | − | − | + |

− | − | + | − | + | + | − |

Using columns 1, 2 and 4 as indexing columns, the remaining columns produce four mutually orthogonal Latin cubes of order 2.

Let *C* ⊆ (**F**_{q})^{n}, be a linear code of dimension *m* with minimum distance *d*. Then *C*^{⊥} (the orthogonal complement of the vector subspace *C*) is a (linear) OA(*q ^{n-m}, n, q, d* − 1)
where

λ =

Main article: Secret sharing |

Secret sharing (also called **secret splitting**) consists of methods for distributing a *secret* amongst a group of participants, each of whom is allocated a *share* of the secret. The secret can be reconstructed only when a sufficient number of shares, of possibly different types, are combined; individual shares are of no use on their own. A secret sharing scheme is *perfect* if every collection of participants that does not meet the criteria for obtaining the secret, has no additional knowledge of what the secret is than does an individual with no share.

In one type of secret sharing scheme there is one *dealer* and *n* *players*. The dealer gives shares of a secret to the players, but only when specific conditions are fulfilled will the players be able to reconstruct the secret. The dealer accomplishes this by giving each player a share in such a way that any group of *t* (for *threshold*) or more players can together reconstruct the secret but no group of fewer than *t* players can. Such a system is called a (*t*, *n*)-threshold scheme.

An OA(*v ^{t}, n+1, v, t*) may be used to construct a perfect (

- Let
*A*be the orthogonal array. The first*n*columns will be used to provide shares to the players, while the last column represents the secret to be shared. If the dealer wishes to share a secret*S*, only the rows of*A*whose last entry is*S*are used in the scheme. The dealer randomly selects one of these rows, and hands out to player*i*the entry in this row in column*i*as shares.

Main article: Factorial experiment |

A factorial experiment is a statistically structured experiment in which several *factors* (watering levels, antibiotics, fertilizers, etc.) are applied to each experimental unit at finitely many *levels*, which may be quantitative or qualitative.^{[24]} In a *full factorial experiment* all combinations of levels of the factors need to be tested. In a *fractional* factorial design only a subset of treatment combinations are used.

An orthogonal array can be used to design a fractional factorial experiment. The columns represent the various factors and the entries are the levels at which the factors are observed. An experimental run is a row of the orthogonal array, that is, a specific combination of factor levels. The strength of the array determines the resolution of the fractional design. When using one of these designs, the treatment units and trial order should be randomized as much as the design allows. For example, one recommendation is that an appropriately sized orthogonal array be randomly selected from those available, and that the run order then be randomized.

Mixed-level designs occur naturally in the statistical setting.

Orthogonal arrays played a central role in the development of Taguchi methods by Genichi Taguchi, which took place during his visit to Indian Statistical Institute in the early 1950s. His methods were successfully applied and adopted by Japanese and Indian industries and subsequently were also embraced by US industry albeit with some reservations^{[citation needed]}. Taguchi's catalog^{[25]} contains both fixed- and mixed-level arrays.

Main article: Orthogonal array testing |

Orthogonal array testing is a black box testing technique which is a systematic, statistical way of software testing.^{[26]}^{[27]} It is used when the number of inputs to the system is relatively small, but too large to allow for exhaustive testing of every possible input to the systems.^{[26]} It is particularly effective in finding errors associated with faulty logic within computer software systems.^{[26]} Orthogonal arrays can be applied in user interface testing, system testing, regression testing and performance testing.
The permutations of factor levels comprising a single treatment are so chosen that their responses are uncorrelated and hence each treatment gives a unique piece of information. The net effect of organizing the experiment in such treatments is that the same piece of information is gathered in the minimum number of experiments.