{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "d59934c8-76a1-4eda-97ba-4fcfb6f15776",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Configurare la gestione del rumore con Estimator\"\n",
        "description: \"Come configurare la gestione del rumore con la primitiva \\\"Estimator\\\" di \\\" IBM Quantum \\\".\"\n",
        "---\n",
        "\n",
        "<span id=\"configure-noise-management-with-estimator\" />\n",
        "\n",
        "# Configurare la gestione del rumore con Estimator\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "8f3a25e1-b73d-48d1-8b82-9c57095c9108",
      "metadata": {
        "tags": [
          "version-info"
        ]
      },
      "source": [
        "{/*\n",
        "  DO NOT EDIT THIS CELL!!!\n",
        "  This cell's content is generated automatically by a script. Anything you add\n",
        "  here will be removed next time the notebook is run. To add new content, create\n",
        "  a new cell before or after this one.\n",
        "  */}\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"Versioni del pacchetto\">\n",
        "    Il codice presente in questa pagina è stato sviluppato sulla base dei seguenti requisiti.\n",
        "    Si consiglia di utilizzare queste versioni o quelle più recenti.\n",
        "\n",
        "    ```\n",
        "    qiskit-ibm-runtime~=0.47.0\n",
        "    ```\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "3f1ea669-4144-4071-a4e9-88e01056f465",
      "metadata": {},
      "source": [
        "Esistono diversi modi per gestire gli errori, in genere ricorrendo a varie tecniche di mitigazione e soppressione degli errori per prevenirli prima che si verifichino.  Queste tecniche comportano solitamente un sovraccarico di elaborazione preliminare.  È quindi importante trovare un equilibrio tra il perfezionamento dei risultati e la garanzia che il lavoro venga portato a termine in un lasso di tempo ragionevole.\n",
        "\n",
        "Estimator supporta le seguenti tecniche di gestione del rumore. Per una spiegazione dettagliata di ciascuna di esse, consultare [la sezione \"Tecniche di mitigazione e soppressione degli errori\"](error-mitigation-and-suppression-techniques). Per le istruzioni su come abilitare queste tecniche, consultare la sezione [\"Impostazioni degli errori personalizzati\"](#advanced-error).\n",
        "\n",
        "* [disaccoppiamento dinamico](/docs/api/qiskit-ibm-runtime/options-dynamical-decoupling-options#dynamicaldecouplingoptions)\n",
        "* [Il giro di Pauli](/docs/api/qiskit-ibm-runtime/options-twirling-options)\n",
        "* [PEA](/docs/api/qiskit-ibm-runtime/options-zne-options)\n",
        "* [Pec](/docs/api/qiskit-ibm-runtime/options-resilience-options-v2#pec)\n",
        "* [`resilience_level`](/docs/api/qiskit-ibm-runtime/options-estimator-options#resilience_level)\n",
        "* [TREX](/docs/api/qiskit-ibm-runtime/options-resilience-options-v2#measure_mitigation)\n",
        "* [ZNE](/docs/api/qiskit-ibm-runtime/options-resilience-options-v2#zne)\n",
        "\n",
        "<span id=\"resilience\" />\n",
        "\n",
        "<span id=\"resilience-level\" />\n",
        "\n",
        "## Livello di resilienza\n",
        "\n",
        "Il `resilience_level` specifica il livello di resilienza da garantire\n",
        "in caso di errori. Livelli più elevati producono risultati più accurati, a scapito di\n",
        "tempi di elaborazione più lunghi. I livelli di resilienza possono essere utilizzati per configurare il\n",
        "compromesso tra costo e precisione quando si applica la gestione del rumore alla query\n",
        "primitiva. La gestione del rumore riduce gli errori (distorsioni) nei risultati elaborando\n",
        "i segnali in uscita da un insieme, o ensemble, di circuiti correlati. Il\n",
        "grado di riduzione dell'errore dipende dal metodo utilizzato. Il livello di resilienza\n",
        "astratte la scelta specifica del metodo di gestione del rumore per consentire\n",
        "agli utenti di valutare il compromesso tra costo e precisione più adeguato alla\n",
        "loro applicazione.\n",
        "\n",
        "Di conseguenza, ogni livello corrisponde a uno o più metodi con\n",
        "un carico di campionamento quantistico crescente, per consentirti di sperimentare\n",
        "diversi compromessi tra tempo e precisione. La tabella seguente mostra\n",
        "quali livelli e metodi corrispondenti sono disponibili per ciascuna delle\n",
        "primitive.\n",
        "\n",
        "<span id=\"resilience-table\" />\n",
        "\n",
        "| Livello di resilienza         | Descrizione                                                                                                                       | Tecnica                                                                                                                             |\n",
        "| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |\n",
        "| 0                             | Nessuna misura di mitigazione                                                                                                     | Nessuna                                                                                                                             |\n",
        "| 1 \\[Impostazione predefinita] | Costi di mitigazione minimi: mitigare gli errori legati agli errori di lettura                                                    | [Rotazione della lettura dell'errore TREX ( eXtinction )](/docs/guides/error-mitigation-and-suppression-techniques#trex)            |\n",
        "| 2                             | Costi di mitigazione medi. In genere riduce la distorsione negli stimatori, ma non garantisce che la distorsione sia pari a zero. | Livello 1 + [Estrapolazione a rumore zero (ZNE)](/docs/guides/error-mitigation-and-suppression-techniques#zne) e rotazione del gate |\n",
        "\n",
        "<Admonition type=\"info\" title=\"Attenzione\">\n",
        "  I livelli di resilienza sono attualmente in fase beta, pertanto il carico di campionamento e\n",
        "  la qualità della soluzione varieranno da circuito a circuito. Nuove funzionalità,\n",
        "  opzioni avanzate e strumenti di gestione saranno rilasciati\n",
        "  progressivamente. Non è garantito che specifici metodi di gestione del rumore vengano\n",
        "  applicati a ogni livello di resilienza.\n",
        "</Admonition>\n",
        "\n",
        "<span id=\"configure-estimator-with-resilience-levels\" />\n",
        "\n",
        "### Configurare Estimator con i livelli di resilienza\n",
        "\n",
        "È possibile utilizzare i livelli di resilienza per specificare le tecniche di gestione del rumore, oppure è possibile impostare tecniche personalizzate singolarmente, come descritto nella sezione [\"Impostazioni personalizzate degli errori\"](#advanced-error).\n",
        "\n",
        "<Admonition type=\"note\" title=\"Importante\">\n",
        "  Qualsiasi opzione specificata manualmente oltre al livello di resilienza viene applicata in aggiunta all'insieme di opzioni di base definito dal livello di resilienza. Pertanto, in linea di principio, si potrebbe impostare il livello di resilienza su 1, ma poi disattivare la mitigazione delle misurazioni, anche se questa operazione non è consigliabile.\n",
        "\n",
        "  Ad esempio, impostando il livello di resilienza su 0 si disattiva la funzione `zne_mitigation`, ma tale impostazione `estimator.options.resilience.zne_mitigation = True` ha la precedenza su quel valore.\n",
        "</Admonition>\n",
        "\n",
        "<span id=\"example\" />\n",
        "\n",
        "### Esempio\n",
        "\n",
        "Il codice seguente abilita ZNE, TREX e il gate twirling\n",
        "impostando `resilience_level 2`.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "id": "841b526d-55b8-4125-bd2c-758d9db8dbb3",
      "metadata": {},
      "outputs": [],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService\n",
        "from qiskit_ibm_runtime import EstimatorV2 as Estimator\n",
        "\n",
        "service = QiskitRuntimeService()\n",
        "backend = service.least_busy(operational=True, simulator=False)\n",
        "\n",
        "# Setting options during primitive initialization\n",
        "estimator = Estimator(backend, options={\"resilience_level\": 2})"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "c497a0e5-bcb7-4954-8096-70b4514ea498",
      "metadata": {},
      "source": [
        "<span id=\"advanced-error\" />\n",
        "\n",
        "<span id=\"custom-noise-management-settings\" />\n",
        "\n",
        "## Impostazioni personalizzate per la gestione del rumore\n",
        "\n",
        "È possibile attivare e disattivare i singoli metodi di gestione del rumore utilizzando le [opzioni dello Estimator](/docs/guides/estimator-options).\n",
        "\n",
        "<Admonition type=\"note\">\n",
        "  Non tutte le opzioni sono compatibili tra loro su tutti i tipi di circuiti.  Per ulteriori dettagli, consultare la [tabella di compatibilità delle funzionalità](estimator-options#options-compatibility-table).\n",
        "</Admonition>\n",
        "\n",
        "<span id=\"example\" />\n",
        "\n",
        "### Esempio\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "id": "89f1827d-92a1-40a4-bd71-6d67a18f0932",
      "metadata": {},
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            ">>> gate twirling is turned on: True\n",
            ">>> measurement error mitigation is turned on: True\n"
          ]
        }
      ],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService\n",
        "from qiskit_ibm_runtime import EstimatorV2 as Estimator\n",
        "\n",
        "service = QiskitRuntimeService()\n",
        "backend = service.least_busy(operational=True, simulator=False)\n",
        "\n",
        "estimator = Estimator(backend)\n",
        "options = estimator.options\n",
        "# Turn on gate twirling.\n",
        "options.twirling.enable_gates = True\n",
        "# Turn on measurement error mitigation.\n",
        "options.resilience.measure_mitigation = True\n",
        "\n",
        "print(\n",
        "    f\">>> gate twirling is turned on: {estimator.options.twirling.enable_gates}\"\n",
        ")\n",
        "print(\n",
        "    f\">>> measurement error mitigation is turned on: \"\n",
        "    f\"{estimator.options.twirling.enable_gates}\"\n",
        ")"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "0eba7825-2725-4406-82b7-3911c33957c5",
      "metadata": {},
      "source": [
        "<span id=\"turn-off-all-error-mitigation\" />\n",
        "\n",
        "## Disattiva tutte le misure di mitigazione degli errori\n",
        "\n",
        "Per istruzioni su come disattivare tutte le misure di mitigazione degli errori, consultare la sezione [\"Disattivare tutte le funzioni di soppressione e mitigazione degli errori\"](estimator-options#no-error-mitigation) nella guida alle opzioni di Estimator.\n",
        "\n",
        "<span id=\"next-steps\" />\n",
        "\n",
        "## Passi successivi\n",
        "\n",
        "<Admonition type=\"tip\" title=\"Suggerimenti\">\n",
        "  * Esamina un esempio che utilizza la mitigazione degli errori nella [lezione](/learning/courses/variational-algorithm-design/cost-functions) dedicata alla funzione «Cost» su IBM Quantum Learning.\n",
        "  * Scopri di più sulle [tecniche di mitigazione e soppressione degli errori](error-mitigation-and-suppression-techniques).\n",
        "  * Scopri [le opzioni di Estimator](/docs/guides/estimator-options).\n",
        "  * Decidi in quale [modalità di esecuzione](/docs/guides/execution-modes) eseguire il tuo processo.\n",
        "</Admonition>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "id": "a1b8767d",
      "source": "© IBM Corp., 2017-2026"
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 4
}