Saturday, September 13, 2008

On the complexity of stuff

Last post got me thinking, which in my case means asking lots of questions and refusing to think through the answers, at least at first. Later, arguably, I will forget all about these very pressing questions and so will never find the answers until one day, I read something written about this elsewhere and bemoan the passing of time and my laziness.

But back to the pressing questions. One afternoon over tea with Dr. Peshkin, I heard him express an excellent question: what is the complexity of physical objects? In computational theory, there are complexity classes for problems. If an abstract machine (whose abilities can be approximated by a modern PC) can find the answer in a relatively short period of time, it belongs to one complexity class (called the 'polynomial-time' class or P) . If you need a machine that's capable of pursuing several solution lines at a time and non-deterministically switching between them, then it belongs to another, intuitively harder class of problems (called NP for 'nondeterministic polynomial time'). There's more classes, but the point is: you can tell if a problem fits into one of them. This is a useful thing for writing programs: you don't want to tell your computer to do something that's provably going to take from now until the end of time.

So is there a similar classification for objects? Objects are kind of like problems if you try to make them with your new personal fabber (PF). You need to tell the fabber how to make them, of course. And thus I think we can define useful complexity classes for objects in terms of the fabber that can make them and the instructions that it would require.

But what's the complexity of a fabber? Why, it's the class of objects it can make! :-) There's got to be a better way of course, but maybe we can establish equivalence classes, like in computability theory. Push-down automata can solve context-free grammars. A 2D laser printer can build planar objects. OK, this is a really uninformative example, but I have to think more to come up with useful classes in the complexity of stuff.

For now, let's all agree that stuff is pretty complex.

2 comments:

Will Ware said...

A physical object contains a small number of details you care about, and gazillions of details you don't care about, e.g. microscopic surface wear, or the precise arrangement of atoms and molecules in a cubic millimeter where you simply specified "plywood". For a given object specification (the input to a fabber) there is an enormous number of possible output objects, all compliant with the specification, and the differences among them are irrelevant to you.

This comes down to the simpler question of the complexity of the specification for a physical object, rather than the physical object itself. From there you get into questions of the expressiveness of languages with which objects can be specified, and their limitations and utilities for various tasks.

gavastik said...

I think I see what you're saying, but isn't it true that any, say, shelf built to a particular set of dimensions out of a particular grade of plywood is equivalent to any other such shelf? In some quite fundamental way? And I mean the two objects themselves and not just their specs. But neither of them would be equivalent to a planar arm with a single revolute joint also made out of the same plywood. Not just because they have to be described differently, but because what they do, or how they are, in the physical world, are different.