From f55ad0e0dc72a939fa117fbbfeb006c3f0b37fc6 Mon Sep 17 00:00:00 2001 From: MoizCodes Date: Thu, 8 Aug 2024 22:48:09 +0530 Subject: [PATCH 1/5] Update q_fourier_transform.py --- quantum/q_fourier_transform.py | 78 ++++++++++++++++------------------ 1 file changed, 36 insertions(+), 42 deletions(-) diff --git a/quantum/q_fourier_transform.py b/quantum/q_fourier_transform.py index 762ac408190e..ef33dee843d1 100644 --- a/quantum/q_fourier_transform.py +++ b/quantum/q_fourier_transform.py @@ -1,59 +1,51 @@ -""" -Build the quantum fourier transform (qft) for a desire -number of quantum bits using Qiskit framework. This -experiment run in IBM Q simulator with 10000 shots. -This circuit can be use as a building block to design -the Shor's algorithm in quantum computing. As well as, -quantum phase estimation among others. -. -References: -https://en.wikipedia.org/wiki/Quantum_Fourier_transform -https://qiskit.org/textbook/ch-algorithms/quantum-fourier-transform.html -""" - import math - import numpy as np import qiskit from qiskit import Aer, ClassicalRegister, QuantumCircuit, QuantumRegister, execute - def quantum_fourier_transform(number_of_qubits: int = 3) -> qiskit.result.counts.Counts: """ - # >>> quantum_fourier_transform(2) - # {'00': 2500, '01': 2500, '11': 2500, '10': 2500} - # quantum circuit for number_of_qubits = 3: - ┌───┐ - qr_0: ──────■──────────────────────■───────┤ H ├─X─ - │ ┌───┐ │P(π/2) └───┘ │ - qr_1: ──────┼────────■───────┤ H ├─■─────────────┼─ - ┌───┐ │P(π/4) │P(π/2) └───┘ │ - qr_2: ┤ H ├─■────────■───────────────────────────X─ - └───┘ - cr: 3/═════════════════════════════════════════════ + Creates a quantum Fourier transform circuit and simulates it on a quantum simulator. + Args: - n : number of qubits + number_of_qubits (int): The number of qubits in the quantum Fourier transform circuit. + Returns: - qiskit.result.counts.Counts: distribute counts. + qiskit.result.counts.Counts: The counts of the measurement results. + + Raises: + TypeError: If number_of_qubits is not an integer. + ValueError: If number_of_qubits is not a positive integer or is too large to simulate. - >>> quantum_fourier_transform(2) - {'00': 2500, '01': 2500, '10': 2500, '11': 2500} - >>> quantum_fourier_transform(-1) - Traceback (most recent call last): + Examples: + >>> quantum_fourier_transform(2) + {'00': 2500, '01': 2500, '10': 2500, '11': 2500} + + >>> quantum_fourier_transform(3) # returns a result close to this due to randomness + {'000': 1250, '001': 1250, '010': 1250, '011': 1250, '100': 1250, '101': 1250, '110': 1250, '111': 1250} + + >>> quantum_fourier_transform(1) + {'0': 5000, '1': 5000} + + >>> quantum_fourier_transform(-1) + Traceback (most recent call last): ... - ValueError: number of qubits must be > 0. - >>> quantum_fourier_transform('a') - Traceback (most recent call last): + ValueError: number of qubits must be > 0. + + >>> quantum_fourier_transform('a') + Traceback (most recent call last): ... - TypeError: number of qubits must be a integer. - >>> quantum_fourier_transform(100) - Traceback (most recent call last): + TypeError: number of qubits must be a integer. + + >>> quantum_fourier_transform(100) + Traceback (most recent call last): ... - ValueError: number of qubits too large to simulate(>10). - >>> quantum_fourier_transform(0.5) - Traceback (most recent call last): + ValueError: number of qubits too large to simulate(>10). + + >>> quantum_fourier_transform(0.5) + Traceback (most recent call last): ... - ValueError: number of qubits must be exact integer. + ValueError: number of qubits must be exact integer. """ if isinstance(number_of_qubits, str): raise TypeError("number of qubits must be a integer.") @@ -90,6 +82,8 @@ def quantum_fourier_transform(number_of_qubits: int = 3) -> qiskit.result.counts if __name__ == "__main__": + import doctest + doctest.testmod() print( f"Total count for quantum fourier transform state is: \ {quantum_fourier_transform(3)}" From 684bdf94cac88128b335e2a987f4379d6a1fe2a3 Mon Sep 17 00:00:00 2001 From: MoizCodes Date: Thu, 8 Aug 2024 22:52:03 +0530 Subject: [PATCH 2/5] Update q_fourier_transform.py --- quantum/q_fourier_transform.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/quantum/q_fourier_transform.py b/quantum/q_fourier_transform.py index ef33dee843d1..b8d2c822216b 100644 --- a/quantum/q_fourier_transform.py +++ b/quantum/q_fourier_transform.py @@ -1,8 +1,10 @@ import math + import numpy as np import qiskit from qiskit import Aer, ClassicalRegister, QuantumCircuit, QuantumRegister, execute + def quantum_fourier_transform(number_of_qubits: int = 3) -> qiskit.result.counts.Counts: """ Creates a quantum Fourier transform circuit and simulates it on a quantum simulator. @@ -22,7 +24,8 @@ def quantum_fourier_transform(number_of_qubits: int = 3) -> qiskit.result.counts {'00': 2500, '01': 2500, '10': 2500, '11': 2500} >>> quantum_fourier_transform(3) # returns a result close to this due to randomness - {'000': 1250, '001': 1250, '010': 1250, '011': 1250, '100': 1250, '101': 1250, '110': 1250, '111': 1250} + {'000': 1250, '001': 1250, '010': 1250, '011': 1250, '100': 1250, '101': 1250, + '110': 1250, '111': 1250} >>> quantum_fourier_transform(1) {'0': 5000, '1': 5000} From 7e6125bb95df5c6fc10cb4638961c5f41f3f75f3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 17:24:55 +0000 Subject: [PATCH 3/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- quantum/q_fourier_transform.py | 1 + 1 file changed, 1 insertion(+) diff --git a/quantum/q_fourier_transform.py b/quantum/q_fourier_transform.py index b8d2c822216b..f7f8ef7c38d5 100644 --- a/quantum/q_fourier_transform.py +++ b/quantum/q_fourier_transform.py @@ -86,6 +86,7 @@ def quantum_fourier_transform(number_of_qubits: int = 3) -> qiskit.result.counts if __name__ == "__main__": import doctest + doctest.testmod() print( f"Total count for quantum fourier transform state is: \ From 8236abcc935643d0ba455b9ffed99524f1d6e981 Mon Sep 17 00:00:00 2001 From: MoizCodes Date: Thu, 8 Aug 2024 23:13:10 +0530 Subject: [PATCH 4/5] Update q_fourier_transform.py --- quantum/q_fourier_transform.py | 1 - 1 file changed, 1 deletion(-) diff --git a/quantum/q_fourier_transform.py b/quantum/q_fourier_transform.py index f7f8ef7c38d5..9fa7fcc0ced9 100644 --- a/quantum/q_fourier_transform.py +++ b/quantum/q_fourier_transform.py @@ -1,5 +1,4 @@ import math - import numpy as np import qiskit from qiskit import Aer, ClassicalRegister, QuantumCircuit, QuantumRegister, execute From 271c8dff525109227e521925e6c11ca0a3111627 Mon Sep 17 00:00:00 2001 From: moiz2405 Date: Tue, 3 Sep 2024 18:11:13 +0000 Subject: [PATCH 5/5] updating DIRECTORY.md --- DIRECTORY.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/DIRECTORY.md b/DIRECTORY.md index 1ca537b991c8..e965d3b32ccf 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -243,6 +243,15 @@ * [Min Heap](data_structures/heap/min_heap.py) * [Randomized Heap](data_structures/heap/randomized_heap.py) * [Skew Heap](data_structures/heap/skew_heap.py) + * Kd Tree + * [Build Kdtree](data_structures/kd_tree/build_kdtree.py) + * Example + * [Example Usage](data_structures/kd_tree/example/example_usage.py) + * [Hypercube Points](data_structures/kd_tree/example/hypercube_points.py) + * [Kd Node](data_structures/kd_tree/kd_node.py) + * [Nearest Neighbour Search](data_structures/kd_tree/nearest_neighbour_search.py) + * Tests + * [Test Kdtree](data_structures/kd_tree/tests/test_kdtree.py) * Linked List * [Circular Linked List](data_structures/linked_list/circular_linked_list.py) * [Deque Doubly](data_structures/linked_list/deque_doubly.py) @@ -285,12 +294,6 @@ * Trie * [Radix Tree](data_structures/trie/radix_tree.py) * [Trie](data_structures/trie/trie.py) - * KD Tree - * [KD Tree Node](data_structures/kd_tree/kd_node.py) - * [Build KD Tree](data_structures/kd_tree/build_kdtree.py) - * [Nearest Neighbour Search](data_structures/kd_tree/nearest_neighbour_search.py) - * [Hypercibe Points](data_structures/kd_tree/example/hypercube_points.py) - * [Example Usage](data_structures/kd_tree/example/example_usage.py) ## Digital Image Processing * [Change Brightness](digital_image_processing/change_brightness.py)