Definition of Universality: A gate is the implementation of a unitary operation, and whether every Hamiltonian can be implemented is the question of Universality, applied to a set of gates. Such a set is said to be universal if it can realize all Hamiltonians with arbitrary precision.
6.2 quantum annealing: a more practical way than the above ideal adiabatic computing
6.2.1 DWave minor-embedding (as comparable to circuit compiling in gate model) can do K3 problem in its single Chimera cell, but need a 2x2 (total of 4) such cell for a K8 problem
6.2.2 DWave experimental difficulties (1) no guarantee of absolute Kelvin zero (2) it can shield off outside electromagnetic radiation using a Faraday cage, but cannot shield off its internal classical electronic circuit. Besides that, it is also physical challenge for “full” interconnection.
6.2.3 Meaning of annealing - annealing is just the process of cooling a system at a certain rate to get desired properties. For us, the desired property would be a configuration for the ground state. I think in annealing as it's talked about here is, rather than cooling at the "speed limit", we do it quickly and multiple times in the hope that one of the trials probabilistically found its way to the ground state. If there is a vast difference in the gap between the two Hamiltonians, this could be leveraged: for instance, the initial part of the annealing could go faster, since the gap is large, and then slow down towards reaching the target Hamiltonian. The optimal annealing schedule is a research topic on its own.
6.2.4 Python code for Hamiltonians H0 and H1:
6.2.5 DWAVE chimera cell to solve G(8) problem: Finding the optimal embedding is NP-hard, so the minorminer package implements a heuristic algorithm that relies on randomness. It often occurs that subsequent runs yield different chain lengths. Run the find_embedding function to embed the graph G in the graph connectivity_structure 100 times. Write the embedding with the shortest maximum chain length to a variable called shortest_chain, and the longest one to longest_chain. Here is the code: