1 Advantages and challenges of programming quantum computers

 

This chapter covers

  • Why quantum computing is a promising tool, and what developers need to know to use it
  • The main sources of quantum advantage
  • High-level differences between quantum and classical computing
  • An overview of the anatomy of quantum computations

Quantum computing opens the door to new ways to solve problems. For specific computational tasks, quantum computers can be much faster than traditional computers.

For some computations, the speedup is significant. One such computation is Fourier transforms, a topic we will cover in depth in chapters 7 and 8. Fourier transforms are essential for analyzing and processing signals and data in various fields such as engineering, physics, image processing, and telecommunications. Computing Fourier transforms more efficiently could enable high-frequency trading algorithms to detect market patterns faster, reducing latency in trade execution. Also, it can accelerate the filtering and compression of computer graphics.

One of the best classical algorithms for computing Fourier transforms is called the fast Fourier transform (FFT), which some consider one of the most important algorithms of all time. The FFT algorithm requires exponentially more operations than its quantum implementation, as shown in figure 1.1.

Figure 1.1 Comparison of the increase in computational complexity relative to the input size for computing (fast) Fourier transforms with classical and quantum computers
figure

1.1 Why quantum computing?

1.2 Becoming quantum ready

1.3 The superpowers of quantum computing

1.3.1 The power of quantum parallelism

1.3.2 The random nature of quantum measurement

1.4 The anatomy of a quantum computation

1.4.1 Computing with a single classical bit

1.4.2 Computing with a single quantum bit

1.4.3 Computing with multiple quantum bits

1.4.4 Putting it together

1.5 Patterns of quantum computations

1.5.1 Sampling from probability distributions

1.5.2 Searching for specific outcomes

1.5.3 Estimating the probability of specific outcomes

Summary