The NP-hard problem of computing the maximal sample variance over interval data is solvable in almost linear time with high probability
Miroslav Rada, Michal \v{C}ern\'y, Ond\v{r}ej Sokol

TL;DR
This paper improves an algorithm for computing the maximal sample variance over interval data, showing it runs in near-linear average time with high probability despite the problem's NP-hardness, and provides probabilistic bounds on worst-case instances.
Contribution
It introduces a more efficient version of an existing algorithm and analyzes its average-case complexity under a probabilistic data model, demonstrating near-linear expected runtime.
Findings
Algorithm's time complexity improved to $O(n ext{log} n + n 2^omega)$
Average complexity is $O(n^{1+epsilon})$ under the probabilistic model
Rare occurrence of instances requiring exponential time, with probability decaying as $e^{-n ext{log} ext{log} n}$
Abstract
We consider the algorithm by Ferson et al. (Reliable computing 11(3), p. 207-233, 2005) designed for solving the NP-hard problem of computing the maximal sample variance over interval data, motivated by robust statistics (in fact, the formulation can be written as a nonconvex quadratic program with a specific structure). First, we propose a new version of the algorithm improving its original time bound to , where is number of input data and is the clique number in a certain intersection graph. Then we treat input data as random variables as it is usual in statistics) and introduce a natural probabilistic data generating model. We get and on average. This results in average computing time for arbitrarily small, which may be…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsBayesian Modeling and Causal Inference · Machine Learning and Algorithms · Complexity and Algorithms in Graphs
The NP-hard problem of computing the maximal sample variance over interval data is solvable in almost linear time with high probability
M. Rada
Prague University of Economics and Business
W. Churchill Square 4
Prague 3
Czech Republic
M. Černý
Prague University of Economics and Business
W. Churchill Square 4
Prague 3
Czech Republic
O. Sokol
Prague University of Economics and Business
W. Churchill Square 4
Prague 3
Czech Republic
(May 10, 2022; May 10, 2022)
Abstract
We consider the algorithm by Ferson et al. (Reliable computing 11(3), p. 207–233, 2005) designed for solving the NP-hard problem of computing the maximal sample variance over interval data, motivated by robust statistics (in fact, the formulation can be written as a nonconvex quadratic program with a specific structure). First, we propose a new version of the algorithm improving its original time bound to , where is number of input data and is the clique number in a certain intersection graph. Then we treat input data as random variables (as it is usual in statistics) and introduce a natural probabilistic data generating model. We get and on average. This results in average computing time for arbitrarily small, which may be considered as “surprisingly good” average time complexity for solving an NP-hard problem. Moreover, we prove the following tail bound on the distribution of computation time: hard instances, forcing the algorithm to compute in time , occur rarely, with probability tending to zero at the rate .
keywords:
Nonconvex quadratic programming, average complexity, tail probability
\colorlet
MAGENTAmagenta
\submittedMay 10, 2022
\titleheadThe maximal variance over interval data
{subject} Quadratic programming, Geometric probability and stochastic geometry
1 Introduction and motivation
1.1 Problem formulation
[Ferson et al. (2005)] studied the pair of optimization problems
[TABLE]
where and are given input data and
[TABLE]
It is obvious that \whole1 is a convex quadratic program (CQP) solvable in polynomial time, while \whole2 is easily proven to be NP-hard. It is worth noting that a general CQP solver yields a weakly polynomial algorithm for \whole1, but [Ferson et al. (2005)] introduced a strongly polynomial method.
They also introduced a method for solving \whole2 which works in exponential time in the worst case (not surprisingly). The method will be described in \whole2. Abbreviating the names of all authors (Ferson, Ginzburg, Kreinovich, Longpré and Aviles), we will refer to their method as FGKLA algorithm.
1.2 Summary of results
In this text we focus on the NP-hard case \whole2 and the FGKLA algorithm. Our contribution is twofold.
Improving the worst-case complexity of the FGKLA algorithm.
Firstly, we show that there exists an implementation of the FGKLA algorithm working in time
[TABLE]
where is the size of the largest clique in a certain intersection graph. The graph will be introduced in \whole2.2. This improves the bound from the original paper. For further discussion see \whole2.9.
Proving a “good” behavior in a probabilistic setting.
Secondly, we treat the input data as random variables. We introduce a natural and fairly general probabilistic model (details are in \whole3), under which we show that
- (i)
on average, the algorithm works in time
[TABLE]
which is surprisingly good considering the problem is NP-hard, 2. (ii)
the probability that the algorithm computes in time tends to zero faster than exponentially with . In other words, we show that “hard” instances occur indeed rarely.
More specifically: \whole(i) we prove that under the probabilistic model it holds
[TABLE]
where stands for the expected value of . Combination of \whole5 with \whole3 yields \whole4 as and for any . In the entire text, “” stands for the natural logarithm.
To achieve \whole(ii): from \whole3 it follows that the computing time is exponential when with . We prove that
[TABLE]
1.3 Motivation from statistics
Problems \whole1 and \whole2 are studied in statistics; see e.g. [Antoch et al. (2010)] and references therein, and a pseudopolynomial method in [Černý & Hladík (2014)]. The statistical motivation is as follows: we are interested in sample variance of a dataset . However, the data is not observable. What is available instead is a collection of intervals , , such that (for example, instead of the exact values we have rounded versions only). Then, cannot be computed exactly, but we can get tight bounds for in the form \whole1 and \whole2. In econometrics, this phenomenon is sometimes called partial identification, see [Manski (2003)].
The problem is more general and is studied for various statistics in place of in \whole1 and \whole2, see the reference books by [Kreinovich et al. (1998)] and [Nguyen et al. (2012)].
1.4 Related work
In general, this paper contributes to the analysis of complexity of optimization problems and algorithms when input data can be assumed to be random, drawn from a particular distribution or a class of distributions. As a prominent example recall the famous average-time analysis of the Simplex Algorithm by [Borgwardt (1982)] and [Spielman & Teng (2004)], where the phenomenon “exponential in the worst case but fast on average” has been studied since 1980’s.
The phenomenon is particularly interesting for NP-hard problems since the worst-case exponential time seems to be unavoidable. In the area of quadratic optimization, the simplex-constrained case has been studied by several authors (see e.g. [Bomze et al. (2017)] and references therein). It turns out that a quadratic form with entries randomly generated from “natural” distributions attains, with a high probability, its global maximum in a face of a small dimension. This property implies that the problem can be solved efficiently by enumerating faces.
Another nice example is the analysis of the average-case complexity of an NP-hard variant of the open shop scheduling problem by [Lu & Posner (1993)]. Their setup is similar to ours: they assume that input data (the job processing times) are generated from a certain class of probabilistic distributions and prove that the average complexity is polynomial in the number of jobs.
Finally, we mention the average-case complexity analysis of the NP-hard -clique problem. [Rossman (2014)] derived bounds on average-case complexity on monotone circuits. [Fountoulakis et al. (2015)] then extended the analysis into a probabilistic setting, showing whether the “hard” instances occur frequently or rarely. Their results are, in a sense, analogous to ours: if the edges are sampled from a “natural” distribution, then -clique can be solved in polynomial time with probability tending to one faster than polynomially.
Aside from the above mentioned general average-case results, the weak average-case complexity paradigm by [Amelunxen & Lotz (2017)] is worth mentioning; here, the word “weak” refers to omitting a “small” subset of hard instances from the set of all possible instances and performing the average-case complexity analysis on such a reduced class of instances. It turns out that for many interesting problems the removal of a subset with exponentially small measure is sufficient to making hard problems tractable.
2 FGKLA Algorithm
Recall that the input instance is given by the pair and . Compact intervals will be denoted in boldface, e.g. . For define
[TABLE]
The numbers are referred to as center and radius of , respectively, and is called a narrowed interval (i.e., shrunk by factor around its center). For we define (the mean of ).
Our version of the FGKLA algorithm is summarized as Algorithm \whole1. The main result of this section is \whole(b). In particular, it improves the worst-case complexity bound from [Ferson et al. (2005)] (see also \whole2.9). The proof of \whole(b) will be given in \whole2.1.
Theorem 2.1** (properties of the FGKLA algorithm (Algorithm \whole1)).**
- (a)
The FGKLA algorithm correctly solves \whole2*.*
- (b)
Let be an undirected graph where if and only if (here, ). Let be the size of the largest clique in . Then, FGKLA algorithm works in time .
Definition 2.2**.**
The graph from \whole(b) is referred to as FGKLA intersection graph with data .
2.1 Idea of the FGKLA algorithm
Since the quadratic form is positive semidefinite, the maximum of \whole2 is attained in a vertex (an extremal point) of the feasible set
[TABLE]
There are vertices in total. In a vertex we have for every . FGKLA algorithm reduces the number of vertices to be examined from to . The reduction is based on \whole2.3. A similar lemma was used in the original paper [Ferson et al. (2005)].
Lemma 2.3**.**
Let and let there exist such that
* for all and* 2. 2.
one of the following is satisfied:
- (a)
, and , 2. (b)
, and .
Then .
Proof 2.4**.**
We prove the claim for Assumption 2a, i.e. . The proof is analogous for 2b.
Let . We want to prove . We have
[TABLE]
Corollary 2.5**.**
Let be a maximizer and . Let be the set of all vectors satisfying:
- (a)
* if ,*
- (b)
* if , and*
- (c)
* if .*
Then contains a maximizer.
In cases (a) and (b) we say that variable (or index ) is determinable with respect to ; in case (c), variable (or index ) is free with respect to .
Algorithm \whole1 works as follows. It builds the set (Line \whole1) containing all endpoints of the narrowed intervals , (here, acts as a set rather than a list, meaning that possible duplicities are removed), sorts them and denotes them by (Line \whole2).
Consider the set of all possible means. The endpoints from divide the interval into at most regions
[TABLE]
Thanks to \whole2.3 and \whole2.5, every region contains means with the same set of free indices. For a region , we denote this set by , i.e. . The set of endpoints contains the worst possible mean values with respect to the number of free indices. More precisely: for every , , all indices from are free.
On Line \whole5, we examine the vertex . The value of is computed and stored as , the maximal value of found so far. Variables and will be useful in Line \whole2.
Then, Algorithm \whole1 takes means one by one. For every mean, say , it takes the set of indices of narrowed intervals beginning in and inserts it to the set of free indices with respect to (Line \whole7). Indices are determinable with respect to . This yields candidate vertices that are examined by Algorithm \whole2, called on Line \whole8.
Then, indices from the set of narrowed intervals ending in are removed from . Intervals with these indices will be fixed to the lower endpoint for every upcoming (Line \whole9 of Algorithm \whole1). The update of and will be explained later.
Algorithm \whole2 consecutively traverses all vertices of resulting from fixing either or for the free indices . For every such vertex, say , the variance is computed. To make these computations cheap, the traversal of is performed in a way that two successive vertices differ in just one component. Then \whole2.6 shows how to get from with arithmetic operations. The variance is stored indirectly as variables and ; they can be easily updated when is switched to , or vice versa.
Lemma 2.6**.**
For , we have , where and . Furthermore, if differs from in just one component, say th, then
[TABLE]
Algorithm \whole2 is an adaptation of the algorithm from Rohn (2006, p. 37) for enumeration of elements of the set for a given . The enumeration can in general start from an arbitrary element. The proof of correctness can be found therein. In our variant, the variable indicates the current vertex. In every iteration of while cycle, some is set to . The th index is taken from (here we consider as a list rather than a set) and is switched to the other endpoint. For this new vertex, and are updated (Line \whole8) and the resulting variance is compared to the best value found so far (Line \whole9).
The following property of Algorithm \whole2 is crucial for the correctness and complexity of FGKLA algorithm: When Algorithm \whole2 ends, then . The next proposition immediately follows.
Lemma 2.7**.**
Let be the values of the global variables when Algorithm \whole2 starts and let be the values of when Algorithm \whole2 ends. Then and .
In particular, this means that when entering Line \whole8 of Algorithm \whole1, we always start examining the free indices with for each .
Finally, Line \whole9 of Algorithm \whole1 removes intervals ending in from . These intervals are going to be fixed to their lower endpoints in the following iterations. Since they are at the upper endpoint now, Line \whole9 updates and accordingly.
Proof 2.8**.**
Proof of \whole(b)
- a)
Correctness.* Let be a maximizer of \whole2**. Since the maximum is attained in a vertex of the feasible set , we can assume for all . Moreover, thanks to \whole2.5**, we can assume for every such that and for every such that . Put all other indices to set , i.e. . Set . Consider the set processed by Algorithm \whole2** in th iteration of Algorithm \whole1. By construction, . Hence, the maximizer is among the examined vertices.* 2. b)
Complexity.* On Line \whole2**, the algorithm sorts numbers with complexity . Algorithm \whole2** is called at most times, where . Recall that is the size of the maximal clique of the FGKLA intersection graph. In the th iteration of the for cycle on Lines \whole6 to \whole10** of Algorithm \whole1** we have . Thus .*
Algorithm \whole2* performs exactly iterations of the while cycle on Lines \whole2** to \whole11**. Inside its iteration, there is the for cycle on Lines \whole3** to \whole6**. The amortized time complexity of this for cycle is , because in its iteration it either sets some nonzero to [math] or stops iterating. Since is set to a nonzero value only times, the overall time of all courses of the for cycle is .*
Computing time in the remaining steps is negligible. In particular, note that since are pairwise disjoint sets (the same holds true for ), the total number of iterations of for cycles on Lines \whole7* to 9 is at most during the whole course of FGKLA algorithm.*
The overall complexity is .∎
Remark 2.9**.**
Aside of the implementation details (which are important for the reduced time complexity bound), our formulation of the algorithm differs from the original paper Ferson et al. (2005) also for another reason. The original formulation can lead to complexity , for example if and if there are narrowed intervals ending in some and further narrowed intervals starting in . However, a minor modification of the original formulation would be sufficient to achieve the time .
3 A probabilistic model
This section is devoted to the main probabilistic result: on average, FGKLA algorithm works in “almost” linear time.
Here we use the statistical motivation of the problem as described in \whole1.3. Namely, in statistics, data are often assumed to form a random sample from a certain distribution. This is exactly our probabilistic model: we assume that both centers of the intervals and their radii form two independent random samples from fairly general classes of distributions.
{assumption}
[the probabilistic model]
- (A)
The centers are independent and identically distributed (“i.i.d.”) random variables with a Lipschitz continuous cumulative distribution function (“c.d.f.”) . That is, there exists a constant such that
[TABLE] 2. (B)
The radii are i.i.d. nonnegative random variables with a finite moment of order for some . In other words, we assume
[TABLE] 3. (C)
The random variables , are independent.
Theorem 3.1**.**
Denote by the size of the largest clique of the FGKLA intersection graph with data . If is sufficiently large, then
- (a)
* and ,* 2. (b)
* for any .*
Remark 3.2**.**
Proof of \whole3.1 will be given in \whole3.1. Statement (b) should be understood more precisely as follows: for every there exists such that if .
Corollary 3.3** (main result).**
The average computing time is
[TABLE]
for an arbitrarily small . Moreover, the computing time is when is linear in and this event occurs with probability as small as .
Remark 3.4**.**
\whole
B* on the distribution of radii is very mild; indeed, we need just something a little more than existence of the expectation (we even do not need finite variance). On the other hand, Lipschitz continuity of (\wholeA) is unavoidable; we will show what can happen without Lipschitz continuity in \whole4. We will also discuss there what happens when we relax the independence assumption (\wholeC) and what is the cost for dependence paid by existence of higher-order moments.*
3.1 Proof of 3.1
Notation.
For a random variable , its probability density function (“p.d.f.”) is denoted by . Denote by the th -quantile of the distribution of centers: i.e., let satisfy
[TABLE]
Let stand for the intervals . Consider the probabilities
[TABLE]
observe that does not depend on by the i.i.d. assumptions. Probabilities may differ due to the different shape of around . In the upcoming lines, we utilize the fact
[TABLE]
implied by Lipschitz continuity of to derive the following upper bound:
Lemma 3.5**.**
For every we have , where
[TABLE]
Remark 3.6**.**
The value of depends on the properties of distributions of centers and radii. The “hard” cases are those with . Indeed, the difficult case is when is close to zero (“radii can be large with a high probability”), (“radii are large on average”) and (“the density of centers can have high peaks”, or “many centers can be close to one another”).
Proof 3.7** (of lemma 3.5).**
Let and be fixed; we omit the index for brevity. For , we can decompose as
[TABLE]
Observe that probability vanishes for , as well as probability does for .
By definition of , we have .
For , we derive the upper bound 12. Note that the bound does not depend on . Note that the bound holds also true for by symmetry.
By Markov’s inequality and B we get
[TABLE]
Setting , from 7 we have
[TABLE]
Now
[TABLE]
Finally,
[TABLE]
Let us introduce indicator variables for all :
[TABLE]
Note that is alternatively distributed with parameter and that the variables
[TABLE]
are independent.
Hence, the sum of these variables follows binomial distribution, i.e.
[TABLE]
By introducing
[TABLE]
the estimate from 3.5 implies
[TABLE]
If for some , at least intervals have to share a common intersection. This common intersection belongs to one of intervals , hence there exists such that . More precisely,
[TABLE]
Fact 14 allows us to use an estimate based on Penrose’s tail bound for binomial distribution.
Lemma 3.8** (Tail bound for the binomial distribution ((Penrose, 2003, p. 16))).**
Let
[TABLE]
If and , then
[TABLE]
If we can extend the estimate \whole15 to the form
[TABLE]
In 18 we used the union bound for any events . In 19 we used 14 and the tail bound from 3.8.
Let
[TABLE]
If is sufficiently large, we can estimate
[TABLE]
where . Clearly, for every . Inequalities \whole22 and \whole23 follow from \whole3.9 showing basic properties of the sequence . Namely, it shows that it decreases exponentially fast. The estimate if is sufficiently large follows from the observation that ; thus .
Lemma 3.9**.**
Let (here, ).
- (a)
. 2. (b)
.
Proof 3.10**.**
To prove (a) we show that for
[TABLE]
It follows that
[TABLE]
since can be bounded by the sum of a geometric sequence with quotient . We have
[TABLE]
and
[TABLE]
the last inequality follows from 25. For (b) we use the fact that is a nondecreasing function for . Thus
[TABLE]
Remark 3.11**.**
Note that a huge might be needed to achieve ; the particular value depends on . However, if we admit a greater , e.g. , we get and , which tends to zero fast, so condition is not at all restrictive even from the practical viewpoint. On other hand, the exponent in becomes a bit worse.
This shows that at the cost of a pair of worse constants, the method behaves well even for small .
In order to complete the proof of \whole3.1(a), we need to estimate . Using Jensen’s inequality we get
[TABLE]
The proof of \whole3.1(b) is a corollary of the above theory. Indeed, using the notation from \whole17 – \whole20, definition of from \whole16 and \whole3.8, we have
[TABLE]
because the term is of the order and dominates all other terms in the limit. The proof of \whole3.1 is complete. ∎
Remark 3.12**.**
The same proof method can be easily generalized to estimate, for example, the probability that the clique is as large as for a fixed (i.e., this is the event “the computing time exceeds ”). In this case we get .
4 Concluding remarks and comments
4.1 “Unfriendly” distributions for the FGKLA algorithm: Why Lipschitz continuity (A) is unavoidable
We show that if we drop the Lipschitz continuity assumption, we can get for some and thus exponential computing time on average (using the fact that average computing time ).
Non-continuous distributions.
First consider , the c.d.f. of , with a discontinuity point . Then . Setting
[TABLE]
we get and a.s. Thus
[TABLE]
Continuous non-Lipschitz distributions.
We show that the misbehavior of the non-continuous distribution from the previous paragraph can be “simulated” by a non-Lipschitz continuous distribution. Let be a discontinuity point of from the last paragraph, let and . Clearly . Consider another distribution of with c.d.f.
[TABLE]
with arbitrarily small. Now is continuous (if there are more discontinuity points of outside , a similar construction can be done in each of them). If a.s. and has the same meaning as in \whole26, we get
[TABLE]
and thus
[TABLE]
Taking close to zero, we get a clique with average size arbitrarily close to the order .
4.2 The independence assumption (C) is also essential
If we relax the independence assumption, we can get only a weaker estimate on than the bound from \whole3.5. Said informally, we needed in \whole3.8 to satisfy . Then, since grows unboundedly (although slowly), we were able to apply the tail bound for sufficiently large.
But in the dependent case we can derive only the bound
[TABLE]
resulting in . Then, would have to grow faster than to be able to apply the tail bound and we would get
[TABLE]
or even something worse. Then, the average computation time bound would be as poor as . This is a high price for dependence. For specific extremal distributions, the situation can indeed be so bad, as shown in \whole4.3; but for “usual” distributions with enough moments the situation is much better, as explained in \whole4.4.
Let us show \whole27 without the assumption of independence of and . By Markov’s inequality we have
[TABLE]
similarly as in \whole10; recall that we have only assumed the existence of a finite moment of order with value . We have
[TABLE]
as the bounds for (and , similarly) can be obtained by setting and using 11:
[TABLE]
4.3 An extremal distribution
Unfortunately, the bounds from the previous sections cannot be generally improved. We show an example where \wholeA and B are satisfied, \wholeC is violated and a slightly weaker form of \whole28 holds true — the clique is as large as on average, for an arbitrarily small . Thus we can push the average computation time of FKGLA algorithm arbitrarily close to .
Let independent. Then, clearly, \wholeA is satisfied. Let (a choice with close to zero is interesting). Define
[TABLE]
\whole
B is satisfied: indeed, the moment of order is finite, since
[TABLE]
and are independent.
For define
[TABLE]
We have
[TABLE]
Obviously, a.s. Thus
[TABLE]
which is close to if is small.
4.4 FGKLA algorithm can benefit from high-order moments: A trade-off between dependence and existence of such moments
Note that the problem with dependence of the input random variables sketched in \whole4.2 is closely related to the value of . Here we show that
if we assume the existence of high-order moments, we can push the bound on close to the “desired” order and get good computation time of the FGKLA algorithm even in the dependent case. Indeed, if for some , then Markov’s inequality gives us . Now we have
[TABLE]
which is close to if is large.
{acknowledge}
All authors were supported by the Czech Science Foundation pro-ject 22-19353S. O. Sokol was also supported by the Internal Grant Agency (project F4/19/2019) of Faculty of Informatics and Statistics, Prague University of Economics and Business.
The reference list from the paper itself. Each links out to its DOI / PubMed record.
- 1Amelunxen & Lotz (2017) Dennis Amelunxen & Martin Lotz (2017). Average-case complexity without the black swans. Journal of Complexity 41 , 82–101. ISSN 0885-064X. URL https://www.sciencedirect.com/science/article/pii/S 0885064 X 16301169 .
- 2Antoch et al. (2010) Jaromír Antoch , Miroslav Brzezina & Rafaelle Miele (2010). A Note on Variability of Interval Data. Computational Statistics 25 (1), 143–153. ISSN 0943-4062, 1613-9658.
- 3Bomze et al. (2017) Immanuel M. Bomze , Werner Schachinger & Reinhard Ullrich (2017). The Complexity of Simple Models—A Study of Worst and Typical Hard Cases for the Standard Quadratic Optimization Problem. Mathematics of OR 43 (2), 651–674. ISSN 0364-765X.
- 4Borgwardt (1982) K. H. Borgwardt (1982). The Average Number of Pivot Steps Required by the Simplex-Method Is Polynomial. Zeitschrift für Operations Research 26 (1), 157–177. ISSN 0340-9422, 1432-5217.
- 5Černý & Hladík (2014) Michal Černý & Milan Hladík (2014). The Complexity of Computation and Approximation of the T-Ratio over One-Dimensional Interval Data. Computational Statistics & Data Analysis 80 , 26–43. ISSN 0167-9473.
- 6Ferson et al. (2005) Scott Ferson , Lev Ginzburg , Vladik Kreinovich , Luc Longpré & Monica Aviles (2005). Exact Bounds on Finite Populations of Interval Data. Reliable Computing 11 (3), 207–233. ISSN 1385-3139, 1573-1340.
- 7Fountoulakis et al. (2015) Nikolaos Fountoulakis , Tobias Friedrich & Danny Hermelin (2015). On the Average-Case Complexity of Parameterized Clique. Theoretical Computer Science 576 , 18–29. ISSN 0304-3975.
- 8Kreinovich et al. (1998) Vladik Kreinovich , Anatoly Lakeyev , Jiří Rohn & Patrick Kahl (1998). Computational Complexity and Feasibility of Data Processing and Interval Computations , volume 10 of Applied Optimization . Springer US, Boston, MA. ISBN 978-1-4419-4785-7 978-1-4757-2793-7.
