El propósito es crear un simulador para ordenadores cuánticos que permita emular los comportamientos esperados en uno real utilizando la potencia de cómputo de un ordenador convencional.
Actualmente se encuentra en desarrollo y aceptaría cualquier ayuda posible que permita aumentar las capacidades y potencialidades que ofrece.
QuantumGate:
- Función apply: Como es abstracta, permite que cada tipo de puerta (e.g., X, H, CNOT) implemente su comportamiento específico. (Esto es una buena práctica)
- Función calculateTargets: Calcula los índices de los estados objetivo para una operación en un qubit específico, lo que es esencial para aplicar puertas correctamente. Es eficiente para puertas de un solo qubit. Para puertas de dos o más qubits, debo extender el manejo.
QuantumState:
- Estado inicial: Inicia con estado base ∣0⟩∣0⟩, lo cual es estándar y funcional.
- Almacenamiento de amplitudes: Separar las partes real e imaginaria para manejar números complejos en Java, ya que Java no tiene un tipo nativo para números complejos.
- Visualización printState: Es útil para depurar y entender el estado cuántico.
Compuertas Implementadas: Hadamard, CNOT, Pauli-X, Pauli-Z, CCX (Toffoli), Rx, SWAP, T y QFT.
- Implementar Algoritmos Cuánticos:
- Algoritmo de Grover: Para búsqueda no estructurada en O(
$\sqrt{N}$ ). - Algoritmo de Deutsch-Josza: Para verificar si una función es constante o balanceada con un solo paso.
- Soporte para puertas paramétricas y Transformada de Fourier Cuántica (QFT).
- Algoritmo de Shor: Para factorización de números enteros. (Requiere trabajar con transformadas de Fourier cuánticas).
- Soporte para Estados entrelazados (Bell y GHZ)
- Algoritmo de Grover: Para búsqueda no estructurada en O(
- Agregar Decoherencia.
- Visualización del Circuito.
┌───┐
q_0: ┤ H ├──■────
└───┘┌─┴─┐
q_1: ─────┤ X ├──
└───┘
4. Añadir Simulación de Medición y Colapso del Estado.5. Optimización del Simulador.
Este proyecto no tiene ningún tipo de financiamiento o apoyo hasta el momento, todo cuanto existe en él es debido al interés y curiosidad del desarrollador por este tema emergente. Si gusta apoyar con la continuidad del mismo, no dude en contactarme.