* A product state vector, which is a vector of size 2^n filled with complex numbers where n is the number of qbits you're using. You derive the product state from a series of individual qbits by taking their tensor product; this exponential term is why simulating quantum computers takes exponential space.
* A set of common quantum logic gates, which are (2^n)x(2^n) matrices you multiply against the product state vector to derive the new product state vector; these matrices must be unitary (their conjugate-transpose is their inverse) (edited, see ) and therefore reversible (quantum computers are reversible computers). The full (2^n)x(2^n) matrices are derived by taking the tensor products of several 2x2 and 4x4 matrices.
* The measurement logic, where you calculate how the product state collapses by taking the square of the absolute value of each entry in the product state (these entries are called amplitudes).
This project is an implementation of those three things in Python. There is nothing special about the above mathematical constructs save that they match the observed semantics of a quantum system. This is good! Quantum computing is accessible to anyone who has taken a basic undergraduate course in linear algebra.
 I previously believed all quantum operators were their own inverses (Unitary and Hermitian) but apparently that is not the case; see comments below.
A well-written version using OpenCL and written in rust is also available: http://github.com/qcgpu/qcgpu-rust if you are interested! Always looking for feedback
Not necessarily. The only requirement on quantum operators is that they must be unitary. Only observables have to be Hermitian (so they have real eigenvalues).
I am currently working on implementing shors algorithm into my main, simulation library. I already have grovers algorithm! https://qcgpu.github.io/qcgpu-rust/book/algorithms/grover.ht...
Gates don't have to be Hermitian right? Like NOT^(1/2) is not Hermitian.
- https://www.youtube.com/watch?v=JhHMJCUmq28 | Quantum Computers Explained
- https://www.youtube.com/watch?v=IrbJYsep45E | The Mathematics of Quantum Computers
- https://www.youtube.com/watch?v=wUwZZaI5u0c | Hacking at Quantum Speed with Shor's Algorithm
- https://www.youtube.com/playlist?list=PL1826E60FD05B44E4 | A series by the author of the standard textbook
These are videos I particularly like!
Have you considered instead raising your level? The relevant topic, as stated in the comment, is linear algebra.
" General purpose quantum computation won’t work (my prediction of 15 years ago is still standing). Related: The universe is deterministic, and the most efficient program that computes its entire history is short and fast, which means there is little room for true randomness, which is very expensive to compute. What looks random must be pseudorandom, like the decimal expansion of Pi, which is computable by a short program. Many physicists disagree, but Einstein was right: no dice. There is no physical evidence to the contrary randomness.html[http://people.idsia.ch/~juergen/randomness.html].
For example, Bell’s theorem does not contradict this. And any efficient search in program space for the solution to a sufficiently complex problem will create many deterministic universes like ours as a by-product. Think about this. More here computeruniverse.html [http://people.idsia.ch/~juergen/computeruniverse.html] and here.
I am out of depth with regards to quantum theory and quantum computation. If anyone with better knowledge with regards to quantum computation can clarify it would be great.
Is there any rationale to support Schmidhuber's argument, and has any advance in making actual quantum computers disprove his theory?
The meat of Jurgen's proposal is that "fast" programs are more likely (which makes sense, IMHO) and quantum universes are too wasteful computationally (which seems less obvious).
If you want to read more along these lines, I can recommend something quite interesting from last year. It references Jurgen but argues that computational speed doesn't matter, only the length of the algorithm needed to produce our subjective experiences:
Could the physical world be emergent instead of fundamental, and why should we ask? (short version) by Markus P. Mueller
The universe is usually thought of as not deterministic. The deterministic interpretations out there come with huge problems: non-locality. Basically, that all particles in the universe are connected with a wave of sorts that acts instantaneously no matter the distance. But this is a philosophical distinction at best. Quantum computers work just fine.
It was the original quote from Schmidhuber, claiming as if it were a known fact "The universe is deterministic, and the most efficient program that computes its entire history is short and fast", backed by the (arguable) argument "There is no physical evidence to the contrary."
In simplified terms though, for every logical qubit you add to the system, you effectively double the power of the machine. To double the power of your GPU stack, you'd need 2x more GPUSs each time. There is also the additional caveat of the type of problem - not every problem currently suited for a gpu is going to be better run on a qpu.
If you don’t insist on a single dense state vector but a sparser tensor network-based formulation, you can go to much larger systems (hundreds or thousands of spins) but will be limited by the amount of entanglement you can represent in your system.
You can subscribe here http://eepurl.com/c10FJz