  Algorithmic self-assembly, a generalization of crystal growth processes, has
been proposed as a mechanism for autonomous DNA computation and for bottom-up
fabrication of complex nanostructures. A `program' for growing a desired
structure consists of a set of molecular `tiles' designed to have specific
binding interactions. A key challenge to making algorithmic self-assembly
practical is designing tile set programs that make assembly robust to errors
that occur during initiation and growth. One method for the controlled
initiation of assembly, often seen in biology, is the use of a seed or catalyst
molecule that reduces an otherwise large kinetic barrier to nucleation. Here we
show how to program algorithmic self-assembly similarly, such that seeded
assembly proceeds quickly but there is an arbitrarily large kinetic barrier to
unseeded growth. We demonstrate this technique by introducing a family of tile
sets for which we rigorously prove that, under the right physical conditions,
linearly increasing the size of the tile set exponentially reduces the rate of
spurious nucleation. Simulations of these `zig-zag' tile sets suggest that
under plausible experimental conditions, it is possible to grow large seeded
crystals in just a few hours such that less than 1 percent of crystals are
spuriously nucleated. Simulation results also suggest that zig-zag tile sets
could be used for detection of single DNA strands. Together with prior work
showing that tile sets can be made robust to errors during properly initiated
growth, this work demonstrates that growth of objects via algorithmic
self-assembly can proceed both efficiently and with an arbitrarily low error
rate, even in a model where local growth rules are probabilistic.
