  The connection between self-assembly and computation suggests that a shape
can be considered the output of a self-assembly ``program,'' a set of tiles
that fit together to create a shape. It seems plausible that the size of the
smallest self-assembly program that builds a shape and the shape's
descriptional (Kolmogorov) complexity should be related. We show that when
using a notion of a shape that is independent of scale, this is indeed so: in
the Tile Assembly Model, the minimal number of distinct tile types necessary to
self-assemble a shape, at some scale, can be bounded both above and below in
terms of the shape's Kolmogorov complexity. As part of the proof of the main
result, we sketch a general method for converting a program outputting a shape
as a list of locations into a set of tile types that self-assembles into a
scaled up version of that shape. Our result implies, somewhat
counter-intuitively, that self-assembly of a scaled-up version of a shape often
requires fewer tile types. Furthermore, the independence of scale in
self-assembly theory appears to play the same crucial role as the independence
of running time in the theory of computability. This leads to an elegant
formulation of languages of shapes generated by self-assembly. Considering
functions from integers to shapes, we show that the running-time complexity,
with respect to Turing machines, is polynomially equivalent to the scale
complexity of the same function implemented via self-assembly by a finite set
of tile types. Our results also hold for shapes defined by Wang tiling -- where
there is no sense of a self-assembly process -- except that here time
complexity must be measured with respect to non-deterministic Turing machines.
