Optical solutions to NP-Complete problems
cs.ubbcluj.ro
cs.ubbcluj.ro
For reference, here's the highly amusing and interesting paper he's written on this:
"NP-complete Problems and Physical Reality" http://www.scottaaronson.com/papers/npcomplete.pdf
Abstract:
"Can NP-complete problems be solved efficiently in the physical universe? I survey proposals including soap bubbles, protein folding, quantum computing, quantum advice, quantum adiabatic algorithms, quantum-mechanical nonlinearities, hidden variables, relativistic time dilation, analog computing, Malament-Hogarth spacetimes, quantum gravity, closed timelike curves, and “anthropic computing.” The section on soap bubbles even includes some “experimental” results. While I do not believe that any of the proposals will let us solve NP-complete problems efficiently, I argue that by studying them, we can learn something not only about computation but also about physics."
Spoiler: the number of photons required scales up so quickly that the phenomenon cannot be observed for sufficiently high N.
Are there any other approaches along this same vein? It's incredibly fascinating.
A modern-day quick link:
http://www.dummies.com/education/science/science-electronics...
[1] https://en.wikipedia.org/wiki/Differential_analyser [2] http://amg.nzfmm.co.nz/differential_analyser_explained.html
There is the Computational Complexity-Theoretic Church–Turing Thesis, which hypothesis that any physical model of computation can be efficiently (eg. in polynomial time) be simulated by a turing machine. This has never been proven, but it has led to correct physical predictions so far.
We also have have demonstrated polynomial improvement that can be had by moving away of a turing machine. For example, the use of random access memory offers an asymptotic improvement for many algorithms relative to the linear access memory used by a turing machine. Additionally, Grover's algorithm allows an exponential speed up in a wide range of problems on a quantom computer; and neither of these approaches requires shifting the savingns onto some other resource.
(It's true that you can pack the memory into a 3D volume and thus have a cubic improvement in access time, but you can do the same thing with a multi-dimensional TM.)
RAM machines are an abstraction, there's no such thing as constant-time access to a random address in any physical store. At best you're looking at O(n^0.5) where n is the number of bits in the store. Still a speedup, but not nearly as much as predicted by using a RAM machine.
Grover's algorithm doesn't offer exponential speedup over classical algorithms, its complexity is O(n^0.5) queries, where n the size of the list being searched, versus O(n) queries classically.
You should be able to get memory down to O(n^1/3) if you move into 3D.
For Grover's algorithm, it depends on how you paramiterize the problem. For example, consider brute forcing a key. We generally parameterize this problem by the size in bits of the key, in which case we are looking at O(2^n) queries. Grovers algorithm lets us reduce this to O(2^.5n) querires, which is an exponential speedup.
Also things like using slime mold to solve the traveling salesman problem: http://phys.org/news/2013-03-blob-salesman.html
And if you want to go simpler, there's always mechanical analog computers: https://youtu.be/s1i-dnAH9Y4 (it's long but well worth a watch IMO)
Oh, and obviously anything involving a scale model, especially for fluid dynamics (so wind tunnels, wave tanks etc), is doing the same thing in spirit.
One of the big points of complexity analysis is that at small scales you might see certain behavior but what we are really interested in is asymptotic complexity: this is like saying selecting the lowest value from an unsorted array is faster than a tree iif the array has so few entries that it fits into the L1 cache (while the tree's randomly scattered memory means walking its left edge could take much longer; essentially making the array O(1) in memory accesses while the tree is O(log n)). A better analysis of spaghetti sort should find it to be O(n^2), if the algorithm really continues to function at all (and it isn't clear to me that it correctly scales).
(It is also worth nothing that if you want a limited purpose linear time sorting algorithm based on the same "let's change the notion of comparison", we even have working ones that function on real world computers: radix sort is insanely epic and with a little assistance from insertion sort fix up passes I have used it to sort Unicode strings in seemingly impossibly fast times.)
you literally just described the origin of quantum computing.
You can also sort all the nodes by distance from any given node in O(n) time by holding the chosen wiffle ball and hanging the graph over the edge of an O(n) tall tower.
http://arxiv.org/abs/1511.05946
These guys use optical computing for big data analysis and pattern matching
Also there's the usage of passing laser light through lenses to implement Fourier transforms
I think in many cases it is much simpler to perform simulations rather than run the actual physical experiment.
Video: https://www.youtube.com/watch?v=cHoYNStQOEc (not by an orignal author)
Paper: http://link.springer.com/chapter/10.1007/11527800_2
More stuff: https://github.com/gigasquid/chemical-computing
Would be fascinated to see something even higher, for example, traveling salesman problem solved in 3D space.
Could you explain how a regular old computer is not doing exactly that? The last time I checkt it had quite a bit of physics going on.
I thought this would have used the quantum/wavelike properties of light but I was wrong.
I think we'll see much more physical computing in the future for specific things
Is it all like Fourier transform where all the work is linear; or do they have to convert it to electricity and then back to light?
If they do that, then do they gain anything over purely electronic solutions?