In this tutorial we will explore how to implement a Quantum Support Vector Machine (QSVM) AI machine learning method on IBM’s Quantum computers using Qiskit.
Shor's Algorithm with Code
Performing Addition on IBMs Quantum Computers
Interested in learning how to program quantum computers? Then check out our Qiskit textbook Introduction to Quantum Computing with Qiskit.
Introduction
In this tutorial you will see how to implement the quantum equivalent of a Full Adder on IBMs quantum computers using quantum logic gates.
What is a Full Adder?
A Full Adder is a logic circuit used by classical computers to implement addition on up to 3 bits.
Source: circuitTHEORY
The Full Adder circuit contains 3 inputs: A, B, and Cin (short for Carry in.as it carries in from the previous Full Adder since they can be stringed together)
There are also 2 outputs called Sum and Cout (Short for carry out as it carries out a bit to the Cin of the next adder)
Truth Table
Implementation
Circuit diagram of a quantum full adder
To implement a Full Adder on a quantum computer we will need 4 qubits (ie 1 for each input and output of the Full Adder).
Q0: Qubit for input A
Q1: Qubit for Input B
Q2: Qubit for Input Cin
Q3: Qubit for Sum
Q4: Qubit for Cout
How it works
For calculating the Sum we simply apply a CNOT gate to Q3 (Sum) from all inputs. This means that if any one of the inputs are 1 then Q3 will be flipped to 1. If all inputs are 0 then Q3 will remain 0.
To calculate Cout (Q4) we apply Toffoli gates with Q4 as the target and the input combinations (Q0,Q1), (Q0,Q2), (Q1,Q2) as the control qubits.
Note: Because of the order of the gates we can never get the Sum and Cout to both equal 1 if only 2 of the inputs are 1.
Code
Output
Once you run the code you will get the following output:
Getting Started with D-Wave's Systems
16-Qubit Random Number Generator
Interested in learning how to program quantum computers? Then check out our Qiskit textbook Introduction to Quantum Computing with Qiskit.
This tutorial will show you how to create a Random Number Generator in qiskit for IBMs quantum computers.
Implementation
Figure 1: Circuit Diagram of the 16-qubit Random Number Generator
Step 1: Initialise the quantum and classical registers
The first step is to initialise a 16 qubit register . This is done by the following code:
q = QuantumRegister(16,'q')
Next we initialise the 16 bit classical register with the following code:
c = ClassicalRegister(16,'c')
Step 2: Create the circuit
Next we create quantum circuit using the following code:
circuit = QuantumCircuit(q,c)
Step 3: Apply a Hadamard gate to all qubits
Then we need to apply a Hadamard gate. This gate is used to put a qubit in to a superposition of 1 and 0 such that when we measure the qubit it will be 1 or a 0 with equal probability.
This is done with the following code:
circuit.h(q)
Step 4: Measure the qubits
After this we measure the qubits. This measurement will collapse the qubits superposition in to either a 1 or a 0.
This is done with the following code:
circuit.measure(q,c)
How to run the program
Copy and paste the code below in to a python file
Enter your API token in the IBMQ.enable_account('Insert API token here') part
Save and run
Code
from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute,IBMQ from qiskit.tools.monitor import job_monitor IBMQ.enable_account('ENTER API TOKEN HERE') provider = IBMQ.get_provider(hub='ibm-q') q = QuantumRegister(16,'q') c = ClassicalRegister(16,'c') circuit = QuantumCircuit(q,c) circuit.h(q) # Applies hadamard gate to all qubits circuit.measure(q,c) # Measures all qubits backend = provider.get_backend('ibmq_qasm_simulator') job = execute(circuit, backend, shots=1) print('Executing Job...\n') job_monitor(job) counts = job.result().get_counts() print('RESULT: ',counts,'\n') print('Press any key to close') input()
Output
Once you have ran the program you will get the following output:
Getting real time information on IBM Quantum devices
Interested in learning how to program quantum computers? Then check out our Qiskit textbook Introduction to Quantum Computing with Qiskit.
Introduction
IBMs quantum devices all vary whether its in terms of the number of qubits, pending jobs to those devices or whether they are operational at a certain time.
With the backend_overview() function however we can see at a glance information for all those devices which can be very useful if we are deciding what device we should send our program to.
Steps
Copy and paste the code below in to a python file
Enter your API token in the IBMQ.enable_account('Insert API token here') part
Save and run
Code
print('\nDevice Monitor') print('----------------') from qiskit import IBMQ from qiskit.tools.monitor import backend_overview IBMQ.enable_account('Insert API token here') # Insert your API token in to here provider = IBMQ.get_provider(hub='ibm-q') backend_overview() # Function to get all information back about each quantum device print('\nPress any key to close') input()Output
After running the code you will see something like the following printed on the screen :
Output showing the status of each quantum device
Want to learn about Quantum Programming? Head over to Quantum Computing UK: https://quantumcomputinguk.org/
Getting Started with Qiskit
If you want to start creating programs for IBMs Quantum Computers then the best way is to use Qiskit.
Qiskit is a framework for quantum computing, allowing you to create programs and then run them either on simulators or on IBMs quantum devices.
Requirements
Python 3.x or above (available here: https://www.python.org/)
Pip: A package management system for Python (included with Python 3.x)
IBM Q Account: This is so you can run your programs on IBM quantum devices. You can sign up for one here: https://quantum-computing.ibm.com
Installation
Install Python 3.x (Make sure Python is added to Path and Pip is checked)
Open Command Prompt and type in: pip install qiskit
Profit!
To Check that qiskit is working download one of our example programs from the code repository here


