*196*
*22*
*5MB*

*English*
*Pages 264*

Table of contents :

Quantum Computing in Action

brief contents

contents

preface

acknowledgments

about this book

Who should read this book?

How this book is organized: a roadmap

About the code

liveBook discussion forum

about the author

about the cover illustration

Part 1—Quantum computing introduction

1 Evolution, revolution, or hype?

1.1 Expectation management

1.1.1 Hardware

1.1.2 Software

1.1.3 Algorithms

1.1.4 Why start with QC today?

1.2 The disruptive parts of QC: Getting closer to nature

1.2.1 Evolutions in classical computers

1.2.2 Revolution in quantum computers

1.2.3 Quantum physics

1.3 Hybrid computing

1.4 Abstracting software for quantum computers

1.5 From quantum to computing or from computing to quantum

Summary

2 “Hello World,” quantum computing style

2.1 Introducing Strange

2.2 Running a first demo with Strange

2.3 Inspecting the code for HelloStrange

2.3.1 The build procedures

2.3.2 The code

2.3.3 Java APIs vs. implementations

2.4 Obtaining and installing the Strange code

2.4.1 Downloading the code

2.4.2 A first look at the library

2.5 Next steps

Summary

3 Qubits and quantum gates: The basic units in quantum computing

3.1 Classic bit vs. qubit

3.2 Qubit notation

3.2.1 One qubit

3.2.2 Multiple qubits

3.3 Gates: Manipulating and measuring qubits

3.4 A first [quantum] gate: Pauli-X

3.5 Playing with qubits in Strange

3.5.1 The QuantumExecutionEnvironment interface

3.5.2 The Program class

3.5.3 Steps and gates

3.5.4 Results

3.6 Visualizing quantum circuits

Summary

Part 2—Fundamental concepts and how they relate to code

4 Superposition

4.1 What is superposition?

4.2 The state of a quantum system as a probability vector

4.3 Introducing matrix gate operations

4.3.1 The Pauli-X gate as a matrix

4.3.2 Applying the Pauli-X gate to a qubit in superposition

4.3.3 A matrix that works for all gates

4.4 The Hadamard gate: The gate to superposition

4.5 Java code using the Hadamard gate

Summary

5 Entanglement

5.1 Predicting heads or tails

5.2 Independent probabilities: The classic way

5.3 Independent probabilities: The quantum way

5.4 The physical concept of entanglement

5.5 A gate representation for quantum entanglement

5.5.1 Converting to probability vectors

5.5.2 CNot gate

5.6 Creating a Bell state: Dependent probabilities

5.7 Mary had a little qubit

Summary

6 Quantum networking: The basics

6.1 Topology of a quantum network

6.2 Obstacles to quantum networking

6.2.1 Classical networking in Java

6.2.2 No-cloning theorem

6.2.3 Physical limitations on transferring qubits

6.3 Pauli-Z gate and measurement

6.3.1 Pauli-Z gate

6.3.2 Measurements

6.4 Quantum teleportation

6.4.1 The goal of quantum teleportation

6.4.2 Part 1: Entanglement between Alice and Bob

6.4.3 Part 2: Alice’s operations

6.4.4 Part 3: Bob’s operations

6.4.5 Running the application

6.4.6 Quantum and classical communication

6.5 A quantum repeater

Summary

Part 3—Quantum algorithms and code

7 Our HelloWorld, explained

7.1 From hardware to high-level languages

7.2 Abstractions at different levels

7.3 Other languages for quantum computing simulators

7.3.1 Approaches

7.3.2 Resources for other languages

7.4 Strange: High-level and low-level approaches

7.4.1 Top-level API

7.4.2 Low-level APIs

7.4.3 When to use what

7.5 StrangeFX: A development tool

7.5.1 Visualization of circuits

7.5.2 Debugging Strange code

7.6 Creating your own circuits with Strange

7.6.1 Quantum arithmetic as an introduction to Shor’s algorithm

7.6.2 Adding two qubits

7.6.3 Quantum arithmetic with a carry bit

7.6.4 Next steps

7.7 Simulators, cloud services, and real hardware

Summary

8 Secure communication using quantum computing

8.1 The bootstrap problem

8.1.1 Issues with sending bits over a network

8.1.2 One-time pad to the rescue

8.1.3 Sharing a secret key

8.2 Quantum key distribution

8.3 Naive approach

8.4 Using superposition

8.4.1 Applying two Hadamard gates

8.4.2 Sending qubits in superposition

8.5 BB84

8.5.1 Confusing Eve

8.5.2 Bob is confused, too

8.5.3 Alice and Bob are talking

8.6 QKD in Java

8.6.1 The code

8.6.2 Running the application

Summary

9 Deutsch-Jozsa algorithm

9.1 When the solution is not the problem

9.2 Properties of functions

9.2.1 Constant and balanced functions

9.3 Reversible quantum gates

9.3.1 Experimental evidence

9.3.2 Mathematical proof

9.4 Defining an oracle

9.5 From functions to oracles

9.5.1 Constant functions

9.5.2 Balanced functions

9.6 Deutsch algorithm

9.7 Deutsch-Jozsa algorithm

9.8 Conclusion

Summary

10 Grover’s search algorithm

10.1 Do we need yet another search architecture?

10.1.1 Traditional search architecture

10.1.2 What is Grover’s search algorithm?

10.2 Classical search problems

10.2.1 General preparations

10.2.2 Searching the list

10.2.3 Searching using a function

10.3 Quantum search: Using Grover’s search algorithm

10.4 Probabilities and amplitudes

10.4.1 Probabilities

10.4.2 Amplitudes

10.5 The algorithm behind Grover’s search

10.5.1 Running the example code

10.5.2 Superposition

10.5.3 Quantum oracle

10.5.4 Grover diffusion operator: Increasing the probability

10.6 Conclusion

Summary

11 Shor’s algorithm

11.1 A quick example

11.2 The marketing hype

11.3 Classic factorization vs. quantum factorization

11.4 A multidisciplinary problem

11.5 Problem description

11.6 The rationale behind Shor’s algorithm

11.6.1 Periodic functions

11.6.2 Solving a different problem

11.6.3 Classic period finding

11.6.4 The post-processing step

11.7 The quantum-based implementation

11.8 Creating a periodic function using quantum gates

11.8.1 The flow and circuit

11.8.2 The steps

11.9 Calculating the periodicity

11.10 Implementation challenges

Summary

Appendix A—Getting started with Strange

A.1 Requirements

A.2 Obtaining and installing the demo code

A.3 The HelloStrange program

Running the program

Appendix B—Linear algebra

B.1 Matrix-vector multiplication

B.2 Matrix-matrix multiplication

B.3 Tensor product

index

A

B

C

D

E

F

G

H

I

J

L

M

N

O

P

Q

R

S

T

U

V

X

Quantum Computing in Action

brief contents

contents

preface

acknowledgments

about this book

Who should read this book?

How this book is organized: a roadmap

About the code

liveBook discussion forum

about the author

about the cover illustration

Part 1—Quantum computing introduction

1 Evolution, revolution, or hype?

1.1 Expectation management

1.1.1 Hardware

1.1.2 Software

1.1.3 Algorithms

1.1.4 Why start with QC today?

1.2 The disruptive parts of QC: Getting closer to nature

1.2.1 Evolutions in classical computers

1.2.2 Revolution in quantum computers

1.2.3 Quantum physics

1.3 Hybrid computing

1.4 Abstracting software for quantum computers

1.5 From quantum to computing or from computing to quantum

Summary

2 “Hello World,” quantum computing style

2.1 Introducing Strange

2.2 Running a first demo with Strange

2.3 Inspecting the code for HelloStrange

2.3.1 The build procedures

2.3.2 The code

2.3.3 Java APIs vs. implementations

2.4 Obtaining and installing the Strange code

2.4.1 Downloading the code

2.4.2 A first look at the library

2.5 Next steps

Summary

3 Qubits and quantum gates: The basic units in quantum computing

3.1 Classic bit vs. qubit

3.2 Qubit notation

3.2.1 One qubit

3.2.2 Multiple qubits

3.3 Gates: Manipulating and measuring qubits

3.4 A first [quantum] gate: Pauli-X

3.5 Playing with qubits in Strange

3.5.1 The QuantumExecutionEnvironment interface

3.5.2 The Program class

3.5.3 Steps and gates

3.5.4 Results

3.6 Visualizing quantum circuits

Summary

Part 2—Fundamental concepts and how they relate to code

4 Superposition

4.1 What is superposition?

4.2 The state of a quantum system as a probability vector

4.3 Introducing matrix gate operations

4.3.1 The Pauli-X gate as a matrix

4.3.2 Applying the Pauli-X gate to a qubit in superposition

4.3.3 A matrix that works for all gates

4.4 The Hadamard gate: The gate to superposition

4.5 Java code using the Hadamard gate

Summary

5 Entanglement

5.1 Predicting heads or tails

5.2 Independent probabilities: The classic way

5.3 Independent probabilities: The quantum way

5.4 The physical concept of entanglement

5.5 A gate representation for quantum entanglement

5.5.1 Converting to probability vectors

5.5.2 CNot gate

5.6 Creating a Bell state: Dependent probabilities

5.7 Mary had a little qubit

Summary

6 Quantum networking: The basics

6.1 Topology of a quantum network

6.2 Obstacles to quantum networking

6.2.1 Classical networking in Java

6.2.2 No-cloning theorem

6.2.3 Physical limitations on transferring qubits

6.3 Pauli-Z gate and measurement

6.3.1 Pauli-Z gate

6.3.2 Measurements

6.4 Quantum teleportation

6.4.1 The goal of quantum teleportation

6.4.2 Part 1: Entanglement between Alice and Bob

6.4.3 Part 2: Alice’s operations

6.4.4 Part 3: Bob’s operations

6.4.5 Running the application

6.4.6 Quantum and classical communication

6.5 A quantum repeater

Summary

Part 3—Quantum algorithms and code

7 Our HelloWorld, explained

7.1 From hardware to high-level languages

7.2 Abstractions at different levels

7.3 Other languages for quantum computing simulators

7.3.1 Approaches

7.3.2 Resources for other languages

7.4 Strange: High-level and low-level approaches

7.4.1 Top-level API

7.4.2 Low-level APIs

7.4.3 When to use what

7.5 StrangeFX: A development tool

7.5.1 Visualization of circuits

7.5.2 Debugging Strange code

7.6 Creating your own circuits with Strange

7.6.1 Quantum arithmetic as an introduction to Shor’s algorithm

7.6.2 Adding two qubits

7.6.3 Quantum arithmetic with a carry bit

7.6.4 Next steps

7.7 Simulators, cloud services, and real hardware

Summary

8 Secure communication using quantum computing

8.1 The bootstrap problem

8.1.1 Issues with sending bits over a network

8.1.2 One-time pad to the rescue

8.1.3 Sharing a secret key

8.2 Quantum key distribution

8.3 Naive approach

8.4 Using superposition

8.4.1 Applying two Hadamard gates

8.4.2 Sending qubits in superposition

8.5 BB84

8.5.1 Confusing Eve

8.5.2 Bob is confused, too

8.5.3 Alice and Bob are talking

8.6 QKD in Java

8.6.1 The code

8.6.2 Running the application

Summary

9 Deutsch-Jozsa algorithm

9.1 When the solution is not the problem

9.2 Properties of functions

9.2.1 Constant and balanced functions

9.3 Reversible quantum gates

9.3.1 Experimental evidence

9.3.2 Mathematical proof

9.4 Defining an oracle

9.5 From functions to oracles

9.5.1 Constant functions

9.5.2 Balanced functions

9.6 Deutsch algorithm

9.7 Deutsch-Jozsa algorithm

9.8 Conclusion

Summary

10 Grover’s search algorithm

10.1 Do we need yet another search architecture?

10.1.1 Traditional search architecture

10.1.2 What is Grover’s search algorithm?

10.2 Classical search problems

10.2.1 General preparations

10.2.2 Searching the list

10.2.3 Searching using a function

10.3 Quantum search: Using Grover’s search algorithm

10.4 Probabilities and amplitudes

10.4.1 Probabilities

10.4.2 Amplitudes

10.5 The algorithm behind Grover’s search

10.5.1 Running the example code

10.5.2 Superposition

10.5.3 Quantum oracle

10.5.4 Grover diffusion operator: Increasing the probability

10.6 Conclusion

Summary

11 Shor’s algorithm

11.1 A quick example

11.2 The marketing hype

11.3 Classic factorization vs. quantum factorization

11.4 A multidisciplinary problem

11.5 Problem description

11.6 The rationale behind Shor’s algorithm

11.6.1 Periodic functions

11.6.2 Solving a different problem

11.6.3 Classic period finding

11.6.4 The post-processing step

11.7 The quantum-based implementation

11.8 Creating a periodic function using quantum gates

11.8.1 The flow and circuit

11.8.2 The steps

11.9 Calculating the periodicity

11.10 Implementation challenges

Summary

Appendix A—Getting started with Strange

A.1 Requirements

A.2 Obtaining and installing the demo code

A.3 The HelloStrange program

Running the program

Appendix B—Linear algebra

B.1 Matrix-vector multiplication

B.2 Matrix-matrix multiplication

B.3 Tensor product

index

A

B

C

D

E

F

G

H

I

J

L

M

N

O

P

Q

R

S

T

U

V

X

- Author / Uploaded
- Johan Vos