Metadata-Version: 2.4
Name: QuantumWalkSimulation
Version: 0.1.0
Summary: Simulacao generica de caminhadas quanticas discretas (MSLQW-PPI) por dispatcher de estrutura (hipercubo, grade, ...)
Author-email: Igor <igorgomesdeoliveira@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/Igoro2016/QuantumWalkSimulation
Project-URL: Repository, https://github.com/Igoro2016/QuantumWalkSimulation
Project-URL: Bug Tracker, https://github.com/Igoro2016/QuantumWalkSimulation/issues
Keywords: quantum walk,quantum computing,hypercube,grid,lackadaisical,simulation,physics
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: OS Independent
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: numpy>=1.21
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"

# QuantumWalkSimulation

Simulacao generica de caminhadas quanticas discretas (MSLQW-PPI —
Multi-self-loop Lackadaisical Quantum Walk com Inversao Parcial de Fase,
Souza et al., arXiv:2305.19614) via uma unica funcao `qw()`, parametrizada
por `base`, `degree` e `structure`. A moeda lackadaisical e o oraculo de
inversao parcial sao os mesmos independente da estrutura; apenas o
deslocamento (shift) muda, escolhido internamente por dispatcher:

- `structure="hypercube"` -> shift por distancia de Hamming (bit flip)
- `structure="grid"`      -> shift por distancia de Manhattan (grade periodica)

## Instalacao

```bash
pip install QuantumWalkSimulation
```

## Uso

```python
from QuantumWalkSimulation import qw

# Hipercubo Q_3 (N = 2**3 = 8 vertices)
r = qw(
    base=2, degree=3, num_selfloop=3, t_f=100,
    weight_value=1/8, marked_vertices=[0],
    inverted_self_loops=2, structure="hypercube",
)

# Grade 4x4 (N = 4**2 = 16 vertices; degree = 2*n_dims)
r = qw(
    base=4, degree=4, num_selfloop=3, t_f=100,
    weight_value=1/16, marked_vertices=[0],
    inverted_self_loops=2, structure="grid",
)

r.probs        # (t_f, N)
r.det_times    # (t_f,)
r.peak_detection
r.peak_step
```

## Parametros

| Parametro | Tipo | Descricao |
|---|---|---|
| `base` | `int` | N = base ** n_dims. Hipercubo exige base=2. |
| `degree` | `int` | Grau do vertice. Hipercubo: degree = n_dims. Grade: degree = 2 * n_dims (par). |
| `num_selfloop` | `int` | m self-loops por vertice. |
| `t_f` | `int` | Passos de simulacao. |
| `weight_value` | `float` | Peso l do self-loop. |
| `marked_vertices` | `list[int]` | Vertices marcados. |
| `inverted_self_loops` | `int` | s: quantos dos m self-loops tem fase invertida (1 <= s <= m). |
| `structure` | `str` | `"hypercube"` ou `"grid"`. |

## Licenca

MIT
