Visió general

El mòdul functionals proporciona procediments d’execució quàntica d’alt nivell combinant eines dels mòduls analog, digital i core. Actualment inclou els funcionals d’execució següents:

  • Propagació Digital: Propaga un circuit quàntic digital a través del backend.

  • Evolució Analògica: Simula l’evolució temporal analog d’un o més Hamiltonians d’acord amb un esquema dependent del temps.

  • Reservoris Quàntics: Executa un pipeline de reservoir quàntic (preprocessament, dinàmica del reservoir, postprocessament) a través de múltiples capes d’entrada.

A més, proporciona funcionals més complexos que s’utilitzen per executar algorismes més complexos:

  • Programes Variacionals: Construeix un programa parametritzat per ser optimitzat en un entorn híbrid quàntic-clàssic.

Visió general de l’arquitectura

Cada funcional es conforma a la interfície abstracta Functional. Els funcionals primitius com DigitalPropagation i AnalogEvolution també hereten de PrimitiveFunctional, que incorpora el contracte Parameterizable. Això permet als backends consultar i actualitzar paràmetres simbòlics de manera consistent abans de l’execució.

La lectura està desacoblada dels funcionals: els detalls de mesura (shots, observables, tomografia d’estat) s’especifiquen mitjançant objectes readout passats al mètode execute() del backend. Tots els funcionals primitius retornen un FunctionalResult unificat.

Objectes de resultat

  • FunctionalResult

    El tipus de resultat unificat per a tots els funcionals primitius. Accediu als resultats mitjançant: samples per als comptadors de shots, probabilities per a les probabilitats de mesura, state per a l’estat terminal QTensor (quan s’utilitza with_state_tomography()), i expectation_values per als valors d’expectació (quan s’utilitza with_expectation()). Quan store_intermediate_results=True, els resultats intermedis estan disponibles mitjançant intermediate_states, intermediate_samples, intermediate_probabilities i intermediate_expectation_values.

  • VariationalProgramResult

    agrupa la trajectòria de l’optimitzador (cost òptim, paràmetres, passos intermedis) juntament amb el resultat funcional obtingut en la convergència.

Aquests objectes fan que els fluxos de treball de postprocessament siguin ergonòmics. Per exemple, després d’una propagació digital podeu obtenir les cadenes de bits més probables:

from qilisdk.digital import Circuit
from qilisdk.backends import QiliSim
from qilisdk.functionals import DigitalPropagation
from qilisdk.readout import Readout

backend = QiliSim()
circuit = Circuit(2)
result = backend.execute(DigitalPropagation(circuit), Readout().with_sampling(nshots=1_000))
print("Most likely outcomes:", result.get_probabilities())