Quantum Computing Simulator from Scratch
Build a powerful quantum simulator to model and understand quantum systems governed by quantum mechanics principles.
By Vaishnavi Dasika
What is Quantum Simulation?
1
Modeling Complex Systems
Uses controllable quantum systems to mimic behavior of target quantum systems
2
Exploring Quantum Behavior
Helps understand properties of systems challenging to study analytically
3
Advancing Multiple Fields
Provides insights for physics, materials science, chemistry, and more
Purpose of Quantum Simulation
Understanding Complex Systems
Predicts behavior of quantum systems challenging to study with classical methods
Advancing Fundamental Science
Provides insights into physics, materials science, and chemistry
Optimizing Quantum Technologies
Aids design of quantum computers and communication systems
Physical Implementations
Trapped Ions
Ions confined in electromagnetic traps, manipulated with lasers
Superconducting Circuits
Circuits made of superconducting materials at extremely low temperatures
Neutral Atoms
Ultra-cold atoms trapped and manipulated using magnetic or optical fields
Photonic Systems
Light particles manipulated using optical components
Quantum Simulation Techniques
Digital Quantum Simulation
Directly encodes target system's Hamiltonian onto quantum hardware and evolves it over time
Analog Quantum Simulation
Mimics target system dynamics by engineering interactions in controllable quantum system
Applications of Quantum Simulation
Material Science
Study properties of novel materials like high-temperature superconductors
Chemistry
Understand chemical reactions, molecular dynamics, and electronic structures
High-Energy Physics
Simulate quantum field theories and particle interactions
Optimization and Machine Learning
Utilize quantum algorithms for solving complex optimization problems
Challenges in Quantum Simulation
1
Hardware Limitations
Current quantum hardware lacks coherence times and error rates for large-scale simulations
2
Noise and Errors
Quantum systems are susceptible to noise, degrading simulation fidelity
3
Scalability
Scaling up simulations while maintaining coherence and control is challenging
4
Verification and Validation
Ensuring accuracy of results, especially without classical benchmarks
Future Prospects of Quantum Simulation

1

2

3

4

1
Revolutionary Advancements
Transforming scientific research and technological innovation
2
Overcoming Current Limitations
Advances in hardware, algorithms, and error correction
3
Enabling New Discoveries
New materials, drugs, and technologies
4
Addressing Societal Challenges
Revolutionizing industries and solving pressing issues
Building a Quantum Simulator: Introduction
Current State
Quantum computers are on the horizon, with big vendors offering multi-generation quantum computers in the cloud
Today's Capabilities
While not solving big challenges yet, we can run useful programs on quantum simulators that simulate quantum computers on classical machines
Our Project: A Toy Quantum Simulator
1
Scope
A small subset of quantum gates and mechanisms to build circuits
2
Size
Just one file when complete
3
Purpose
Gain knowledge of internal workings and freedom to customize
Why Build a Custom Simulator?
Deep Understanding
Building from scratch provides insight into internal workings
Lightweight Solution
Smaller simulator works on computers with constraints
Customization
Freedom to implement as desired, e.g. using function composition
Fun Factor
It's enjoyable to build your own tools!
Choosing the Programming Language
Selected: Racket
A dialect of Scheme with built-in support for matrices
Benefits
  • Lisp-based for powerful abstractions
  • Comes with Dr. Racket IDE
  • Excellent documentation
From Bits to Qubits: Classical Bits
Classical Bit
Can be in state 0 or 1
Representation
For n bits, there are 2^n possible combinations
Representing Classical Bits
List Representation
[1, 0, 0, 0] means 00 (first element "on")
Column Vector
Same list written top to bottom in Linear Algebra
Code for Classical Bits
(define (bits-of-len n) (cond ((< n 1) (error "Invalid bits length, must be >= 1")) ((= n 1) '((0) (1))) (else (let ([lower-bits (bits-of-len (- n 1))]) (for*/list ([i (range 2)] [x lower-bits]) (cons i x))))))
Qubits: Welcome to Probabilities
Qubit States
|0>, |1>, or any superposition state in between
Representation
Column vector with complex numbers a and b, where |a|^2 + |b|^2 = 1
Code to Build a Qubit
(define (qubit a b) (if (e-equal? (+ (* (magnitude a) (magnitude a)) (* (magnitude b) (magnitude b))) 1.0) (col-matrix [a b]) (error "Cannot create qubit, bad probabilities")))
Measurement of Qubits
1
State Vector
Represents qubit system before measurement
2
Measurement Result
After measurement, qubit collapses to either 0 or 1
3
Probability
Squared magnitudes of amplitudes determine measurement probabilities
Implementing Qubit Measurement
Process
  1. Square non-zero amplitudes for probabilities
  1. Scale probabilities to cover 0-100 range
  1. Use random number to determine measurement outcome
Code Snippet
(define (measure-mat m) (let* ([len (matrix-num-rows m)] [blen (exact-round (log len 2))] [obs (bits-of-len blen)] [ampls (matrix->list m)] [scaled-probs (map (λ (x) (* x x 100)) ampls)] [roll (random 100)]) (range-map 0 scaled-probs obs roll 0 len)))
Quantum Gates
1
Definition
Operations on qubits, analogous to classical logic gates
2
Properties
Represented by unitary matrices, operations are reversible
3
Application
Multiply gate matrix with qubit state vector
Implementing Quantum Gates
(define ((apply-op op-matrix) q) (matrix* op-matrix q)) (define pauli-x (matrix [[0 1] [1 0]])) (define gX (apply-op pauli-x)) (define hadamard (matrix [[h-factor h-factor] [h-factor (- h-factor)]])) (define gH (apply-op hadamard))
Tensor Product: Combining States and Gates
Purpose
Combine multiple qubits or gates into larger systems
Symbol
⊗ (tensor product)
Implementing Tensor Product
(define (tensor* m1 m2) (define (mat->list m1 m2) (matrix->list* (matrix-map (λ (x) (matrix->list* (matrix-map (λ (y) (* x y)) m2))) m1))) (define (list->mat m) (let ([rows '()]) (for ([row m]) (for ([i (range (length (first row)))]) (let ([row-line '()]) (for ([m row]) (set! row-line (append row-line (list-ref m i)))) (set! rows (append rows (list row-line)))))) rows)) (let* ([m (mat->list m1 m2)] [l (list->mat m)]) (list*->matrix l)))
Multiple Gates on Multiple Qubits
Combining Gates
Use tensor product to create larger gates for multiple qubits
Identity Gate
Used when a qubit should pass through unchanged
Little-endian vs Big-endian
Big-endian
Least significant bit on the left
Little-endian
Least significant bit on the right (used by Qiskit, Q#)
Quantum Circuits
Definition
Sequence of quantum gates applied to qubits
Implementation
Function that creates and applies a series of quantum operations
Implementing Quantum Circuits
(define (make-circuit matrices #:assembler [assembler G*]) (let ([ops (map (λ (gs) (if (list? gs) (apply assembler gs) (apply-op gs))) matrices)]) (λ (input-qbits) (for/fold ([sv input-qbits]) ([f ops]) (f sv))))) (define (qubits n) (apply t* (for/list ([i (range n)]) q0)))
Creating a Simple Quantum Circuit
(define c1 (make-circuit (list (list (I 2) X) (list H H)))) (counts (c1 (qubits 2)))
Equivalent Qiskit Code
circuit = QuantumCircuit(2) circuit.x(1) circuit.barrier() circuit.h(0) circuit.h(1) circuit.draw('mpl')
Next Steps in Quantum Simulation
1
CNOT Gate
Introduce the controlled-NOT gate
2
Entanglement
Explore quantum entanglement phenomena
3
Advanced Concepts
Delve into more complex quantum operations
Recap: From Classical to Quantum
1
Classical Bits
Deterministic 0 or 1 states
2
Qubits
Probabilistic superposition of states
3
Quantum Gates
Unitary operations on qubit states
4
Quantum Circuits
Sequences of gates applied to qubits
Key Concepts in Our Simulator
State Vectors
Represent qubit states as column vectors
Unitary Matrices
Implement quantum gates as matrix operations
Tensor Products
Combine multiple qubits or gates
Measurement
Collapse superposition to classical states
Advantages of Our Approach
1
Simplicity
Single file implementation for core functionality
2
Educational Value
Builds understanding of quantum computing fundamentals
3
Flexibility
Easy to modify and extend for specific needs
4
Performance
Lightweight solution for resource-constrained environments
Limitations and Future Work
Current Limitations
  • Limited set of quantum gates
  • No error modeling or noise simulation
  • Scalability issues for large qubit systems
Future Enhancements
  • Implement more advanced quantum gates
  • Add support for quantum error correction
  • Optimize for better performance with many qubits
Comparing Our Simulator to Others
Applications of Our Quantum Simulator
Education
Teaching quantum computing basics
Research
Prototyping simple quantum algorithms
Development
Building custom quantum applications
Testing
Verifying quantum circuit behavior
Getting Started with Our Simulator
1
Install Racket
Download and install Racket from the official website
2
Clone Repository
Get the simulator code from the GitHub repository
3
Run Examples
Try out the provided example circuits
4
Create Your Own
Start building your own quantum circuits
Resources for Further Learning
Quantum Computing Books
Recommended readings for deeper understanding
Online Courses
MOOCs and tutorials on quantum computing
Research Papers
Academic publications on quantum simulation
Community Forums
Discuss and get help from other enthusiasts
Conclusion: Empowering Quantum Exploration
Accessible Learning
Our simulator provides a gentle introduction to quantum computing concepts
Hands-on Experience
Build and experiment with quantum circuits to gain practical understanding
Foundation for Growth
Use this knowledge as a stepping stone to more advanced quantum computing topics