MathOverflow is a question and answer site for professional mathematicians. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Let $S$ be a set of some size $n$. I'm interested in knowing about combinatorial designs that are approximately balanced incomplete block designs, that I want a collection of subsets $C$ of $S$ such that every pair of elements of $S$ appears in at least one element of $C$, all the elements of $C$ are approximately the same size, and every element appears approximately the same number of times. Obviously there are many trivial examples, but those aren't interesting. Ideally given $n$ there would be a set where $C$ is not "too large" and the elements of $C$ are also not "too large", for some definition of "too large". Most of the literature I've looked at considers weaker exact conditions.

I'm asking this question because I have a massive computation to carry out on multiple machines, and the computation considers a pair of big files at a time. I want to minimize the number of files each of my workers read, while also keeping down the number of workers. Papers, proofs, guidance on what I should be searching for are all welcome: my combinatorial knowledge is shamefully weak.

share|cite|improve this question
Cliqque covering, or covering of edges (2-sets) by cliques of various sizes (k-sets for varying k). For info on the problem for fixed k, consider the La Jolla Covering Repository. Doubtless the combinatorialists here will give even better references. Gerhard "Ask Me About System Design" Paseman, 2012.07.09 – Gerhard Paseman Jul 10 '12 at 4:43
Also, unless you are forcing the workers to be isolated, you should be able to have a worker query on whether a particular pair of files is already being processed. Gerhard "Ask Me About System Design" Paseman, 2012.07.09 – Gerhard Paseman Jul 10 '12 at 4:56
Gerhard, if you made that first comment an answer it would be the one I would accept. – Watson Ladd Jul 13 '12 at 15:27
up vote 1 down vote accepted

To expand on my comments above, an analogous problem is covering a graph by cliques. Consider the relation on the set F of files as (a,b) is in the relation if the (distinct) files a and b are to be processed. The result is like a directed graph with F as the set of vertices and the relation determining the edges. Now for p and element of the set P of processing units, you want to associate p to some of the edges. (More generally, you might assign a set or sequence of members from P to an edge to indicate how the pair of files to process.)

The setup above is general and perhaps more complex than it needs to be, but should give you ideas on how to write the code so that you can generalize when the customer asks for it. Let's simplify the picture by making the graph undirected, assigning only one processor to each edge (so a simple coloring of edges rather than a list coloring), and let's pretend that cliques are important (small subsets G of F and all edges between any two points are present ) for some reason, say optimizing disk access means a processor should stick to two disks, and G may represent a subset of the files on those two disks.

We now have a situation where we want to cover, possibly with overlap, all the edges of F (which we assume has all possible edges) by smaller cliques, perhaps of the same size. Enter the La Jolla Covering Repository: a collection of covering designs where a list of subsets of size k from a set of size v are listed so that every set of size t (for this problem, t=2), is covered or a subset of one of the sets of size k. One can divide this list among several processors to ensure all processorsto assign the tasks to be done on all pairs of files.

Since I don't like repetition, I would maintain a structure shared by all processors or used by a master to assign to a worker which would list all pairs of files and the information of which pair is being (or going to be) processed by which processor. Of course, I might change my mind depending on resource availability and problem size.

Gerhard "Or To Make Me Happy" Paseman, 2012.07.15

share|cite|improve this answer

One related structure is an incidence geometry. Each pair of points determine a unique line. Every $2$-design with $\lambda = 1$ is an example of an incidence geometry, but incidence geometries are more flexible.

Given an incidence geometry on $V$, you can induce an incidence geometry on $W \subset V$ by taking the lines to be the intersections of lines with $W$ (except you throw out the intersections of size at most $1$). For example, there are Steiner triple systems (block designs where the blocks have size $3$ and $\lambda=1$) if and only if the number of vertices is $1$ or $3$ mod $6$. There is no Steiner triple system on $11$ vertices, but you can take a Steiner triple system on $13$ vertices with $26$ blocks/lines and delete $2$ points (and the line through them which only contains $1$ point now) to get an incidence geometry on $11$ points with $25$ lines so that each line contains $2$ or $3$ points.

This might not work well over all sets of parameters. Block designs with more than $1$ block have more blocks than points (Fisher's inequality). The same is true for incidence geometries (de Bruijn–Erdős). Projective planes are examples of equality. If you have fewer workers than files, so that workers have to handle more than about the square root of the number of files, then you aren't looking for a small deviation from a block design.

share|cite|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.