{
"cells": [
{
"cell_type": "markdown",
"id": "3c6dfa0e",
"metadata": {},
"source": [
"# When should I use CDR?\n",
"\n",
"## Advantages\n",
"\n",
"The main advantage of CDR is that it can be applied without knowing the specific details of the noise model.\n",
"Indeed, in CDR, the effects of noise are indirectly _learned_ through the execution of an appropriate set of test circuits.\n",
"In this way, the final error mitigation inference tends to be tuned to the used backend.\n",
"\n",
"This self-tuning property is even stronger in the case of _variable-noise-CDR_, i.e., when using the `scale_factors` option in {func}`.execute_with_cdr`.\n",
"In this case, the final error mitigated expectation value is obtained as a linear combination of noise-scaled expectation values.\n",
"This is similar to [Zero-Noise Extrapolation](zne-5-theory.md) but, in CDR, the coefficients of the linear combination are learned instead of being fixed by the extrapolation model.\n",
"\n",
"## Disadvantages\n",
"\n",
"The main disadvantage of CDR is that the learning process is performed on a suite of test circuits which only _resemble_ the original circuit of interest.\n",
"Indeed, test circuits are _near-Clifford approximations_ of the original one.\n",
"Only when the approximation is justified, the application of CDR can produce meaningful results.\n",
"Increasing the `fraction_non_clifford` option in {func}`.execute_with_cdr` can alleviate this problem to some extent.\n",
"Note that, the larger `fraction_non_clifford` is, the larger the classical computation overhead is.\n",
"\n",
"Another relevant aspect to consider is that, to apply CDR in a scalable way, a valid near-Clifford simulator is necessary.\n",
"Note that the computation cost of a valid near-Clifford simulator should scale with the number of non-Clifford gates, independently from the circuit depth.\n",
"Only in this case, the learning phase of CDR can be applied efficiently."
]
}
],
"metadata": {
"jupytext": {
"text_representation": {
"extension": ".md",
"format_name": "myst",
"format_version": 0.13,
"jupytext_version": "1.11.1"
}
},
"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.12.3"
},
"source_map": [
12
]
},
"nbformat": 4,
"nbformat_minor": 5
}