When does a physical system compute?
arxiv.org
arxiv.org
It looks like their definitions are so general that they don't answer their own questions, which by their main motivations (section XI) are fundamentally problems of construction and scale. It's not enough that there exists a theory that proves your physical system computes, you have to know the representation explicitly and be able to scale the system arbitrarily. [Edit:] The problem being that this doesn't show up in their actual definitions.
Maybe I'm reading it too shallowly, though. Can someone who's more well-versed in the background of this paper explain it better? It also doesn't help my confidence that they seem to completely ignore the rest of computer science (mentioning Turing machines only as an aside, and as part of a false assertion about (quantum) Turing machines being the only universal logical systems).
It does not fit their definition because the whole point of the paper is that a physical system is not computing anything unless an entity is using the system to compute something by encoding the problem into the state of the system and later decoding the answer from the state of the system.
This is a theory, a valid interpretation, highly reliable, scales well, and it commutes. Why isn't it a computation by their definition?
So the question isn't whether soap bubbles can do certain computations, but rather whether soap bubbles can efficiently compute functions that are NP-complete in classical computing models.
That being said, there could very well be models of computing (based on weird physical phenomena) that violate one or both versions of the Church-Turing thesis. Scott has expressed a few times that the possibility intrigues him, though I don't know whether he would bet his life's fortune on one outcome or the other :)
* a light and nice read: https://www.frc.ri.cmu.edu/~hpm/project.archive/general.arti... (an oft-cited article)
* the madness of Max Tegmark: http://arxiv.org/abs/grqc/9704009 , http://arxiv.org/abs/0704.0646 (cliff's notes: "The [...] postulate in this theory is that all structures that exist mathematically exist also physically, by which we mean that in those complex enough to contain self-aware substructures (SASs), these SASs will subjectively perceive themselves as existing in a physically ``real'' world." Which means: take http://xkcd.com/505/ , and abstract it enough times so that you decide that the rocks themselves are not needed anymore.)
-> if anyone has any comments about the MUH, would be interested to hear them. My head is kinda-still-aching from the last time I tried to decide how seriously I should take his ideas.
It's always neat when you discover you've independently invented an idea proposed by someone famous :)
Although, to be fair to Tegmark, he goes further than I ever did: "The predictions of the theory take the form of probability distributions for the outcome of experiments, which makes it testable." This is a natural consequence of the form of the theory, but I didn't really think in that direction -- but now that Tegmark's pointed it out, it seems like an obvious direction in hindsight.
I've been recommending this book left and right around these parts, but can't hurt to say it again: you should probably read "Permutation City."[1] As far as literature, character development and style goes, there is nothing much to it. As far as (hard-ish) scifi goes, it's a big deal. In a way, what MT calls MUH Egan calls "dust theory" (roughly). It's a very interesting exploration of the whole idea, and it involves cellular automata, etc etc.
There's also a short story of his, "Wang's Carpets" (which you can read online[2]) - it was later incorporated (as a chapter) into his book "Diaspora"[3] (which is also a great read that I've thoroughly enjoyed.)
> Although, to be fair to Tegmark, he goes further than I ever did: "The predictions of the theory take the form of probability distributions for the outcome of experiments, which makes it testable."
I wonder, though, if this is not a bit of a stretch. I certainly understand what he (and you) mean by probability distributions, but it seems to be there because he really wants to be able to call it a "scientific theory," which requires it to be falsifiable (<=> testable.) But, yeah, it's pretty neat!
> I was thinking maybe the probability of finding yourself in a given universe is related to the length of the computer program that runs that universe.
Now, can some of those programs run a (say, finite-tape-version-of) Turing machine[4] (can some of them not run it)? Does this have any implications (re: / in relation to the halting problem, for example)? I don't have the faintest idea. Tegmark has a thing to say about mathematically incomplete (in the Godel sense) universes, but again, I'm not sure how much of it is just him having fun. ;) (which is the best way of having fun, as far as I'm concerned.)
...anyway. Good stuff! Let's try and not go insane within our heads with these things. Then again, some insanity is always a good thing, imo.
edit P.S. there's also http://plato.stanford.edu/entries/computation-physicalsystem...
editedit P.P.S. if you haven't, maybe also read the (very) short story of Borges, "The Library of Babel."[5] It's basically an articulation of the idea that a "description" of a universe is that universe. And a "description" can very well be thought of as a program. And if you imagine a multidimensional "computational-symbol-space," a "path" to that program/description (first choose this symbol/predicate, then that one..) is that program (and, by extension, "kinda-is" that particular universe.) These ideas are not new in themselves in the very least. e.g. I'm still yet to try and honestly delve into Kant's "Critique of Pure Reason," which actually addresses some of that stuff (in its own very particular vocabulary and context.) Also, lots of stuff to read from the theoretical CS side of things. And mathematics (Yoneda lemma in category theory, and other things which I like to pretend to understand!)
[1]: http://en.wikipedia.org/wiki/Permutation_City
[2]: http://bookre.org/reader?file=222997
[3]: http://en.wikipedia.org/wiki/Diaspora_(novel)
[4]: a good read (and/or rehash) on this: http://plato.stanford.edu/entries/turing-machine/
[5]: http://jubal.westnet.com/hyperdiscordia/library_of_babel.htm...
if a brain can be simulated by any turing-complete system with enough memory, and a bunch of crabs can comprise a turing-complete system...can a bunch of crabs arranged properly into trillions of logic gates produce consciousness?
Muhlestein, M. (2013). Counterfactuals, Computation, and Consciousness. Cognitive Computation, 5(1), 99-105.
Free copy: http://muhlestein.com/consciousness/ccc.html
The discussion 'evolved' into evolution (of systems). It's strange that this paper discusses computation also as evolution, but I'm not sure if they mean the same thing. I also suggested that human brain computes (or thinks) by 'simulating' evolution. In this case, your individual brain cells would be like those bunch of crabs, just doing their business and producing thoughts as a whole.
(For what it's worth, I'm in the former camp. I think you'd need far more than trillions though.)
The discussion is quite interesting, because computation is very hard to define. Understanding what makes a system compute can yield useful insight for understanding cognition.
But too much ink gets spilled over this philosophical issue. It seems much more fruitful to analyze the mind as a Turing machine (contentious) and apply computational complexity theory to define limits on human computation based on the hierarchy-- my two cents.
"Eliminative Materialism and the Propositional Attitudes": http://commonsenseatheism.com/wp-content/uploads/2010/08/Chu...
Basically, a critique of the approach of formalizing thought processes as (first predicate, or multipredicate, or whatever kind of) logical computation (of symbols.) It's a good read even if one thinks that the overall debate is pretty fruitless.
[1] PDF link: http://www.indiana.edu/~jkkteach/Q550
When does a physical system reach a "halting state"?
This question has led me to some confusion when considering the possible isomorphism between physical systems and turing machines.
"If we view these parts of the beach as the tape, and all crabs being in a state described by these rules as corresponds to halting, then this crab population can be seen as a Turing machine!"
The subtle problem is that it's impossible to define such a halting "oracle" as a program running within the same machine running the program you want to check whether it halts. It's possible to define a "deceiver" program that will use the oracle itself to change it's behavior.
def deceiver(oracle):
if oracle(Deceiver, oracle):
while True:
continue
return
print oracle(deceiver, oracle)
This doesn't mean that an external observer doesn't know whether running the oracle on the deceiver halts, but that it's impossible to write an oracle within that machine which will be a real oracle, since it will give a wrong answer for the deceiver program (and hence it wouldn't be an oracle).Or, put in other words, even on a machine with finite memory, it's impossible to write a program (the oracle) in that machine that determines whether any possible program on that machine halts, because "any" program includes the oracle itself.
But what does "define a program that runs within that machine" mean?
Let's cheat a little bit. What if we build a machine that will record all it's internal states somewhere and when it detects that a program cannot possibly halt (because it reached a previously recorded state) asserts some IO line that can cause the cpu make it look like the oracle returns true?
def oracle(program, input):
# registerTrap will only work the first time it's executed
# then it will be nop.
registerTrap(on IO.cycleDetected, do nonLocalReturn(false))
call program(input)
What did we achieve with this cheat? Now we can execute an oracle which will soon enter in a cycle
executing oracle -> deceiver -> oracle -> .... and then the IO line will be asserted which will cause the oracle to abort the execution and return false (the program doesn't halt).It can be argued that this oracle is non deterministic, because it won't give any answer when it's executed by the oracle itself (i.e. it won't terminate, only the outer oracle terminates). But nowhere we did specify that the oracle had to be reentrant!
Note that we didn't include the IO.cycleDetected input as part of the program input, because it's not an input. In fact, the IO.cycleDetected bit can be seen as part of the machine state. It's a state that is modifiable by the program by introducing a cycle in all other states (except this bit). But by reaching this subset of states (all of the states which include the IO.cycleDetected bit set), the machine halts AND the oracle correctly computes whether ANY program halts, including deceivers which invoke the oracle itself.
The main trick is to introduce hidden (inaccessible) states in the system: the write-once trap handler and the "detected cycle" state. This is not a "pure" machine, but it can nevertheless be built.
But what does this mean? We showed that it's possible to create a machine which can execute a program which can tell if any possible program of that machine terminates.
Can we build a machine where this is impossible? Yes. We just have to give to every program the possibility to get to all possible states, including the ones that would stomp on any attempt by any kind of oracle to determine whether there has been a cycle.
Imagine a degenerate case of a machine allowing any program to just "reboot" the execution of the oracle. The oracle itself couldn't possibly know that it has been unwound and thus cannot ever return saying so.
But we can always discern this situation if we look from outside. But what if the top level oracle performs a simulation of the machine? Even if the deceiver reboots, the oracle could still detect cycles by checking the simulated state. However, the inner oracle cannot do the same thing, because it would require infinitely nested simulators and we have only finite memory.
So there will always be one layer which doesn't allow to execute a working oracle from within.
I don't see a problem, the halting state was always an abstraction. Only the mathematical Turing construction stopped after it reached a result. Computers go on and work on something else.
I think that time being quantized, would beg the question, are universal changes atomic locally, or globally?
Our perceptions are clearly operating on universal change, so our sense of time is as well. These are quite deep questions.