
إطار عمل لتقدير الموارد يعتمد على Qiskit لتصميم دوائر قلبية معيارية فعالة من حيث المساحة وإضافة نقاط أفينية، تُستخدم في خوارزميات اللوغاريتم المنفصل للمنحنيات الإهليلجية.
يحتوي هذا المستودع على كود Qiskit لتقدير الموارد لدوائر المعكوس المعياري الكمومي الموفرة للمساحة ودوائر جمع النقاط الأفينية المستخدمة في سياقات اللوغاريتمات المتقطعة على المنحنيات الإهليلجية.
ترتكز قاعدة الكود الحالية على ثلاثة مسارات عمل:
.
├── README.md
│
├── eea_model/: original classical EEA reference implementation used for algorithm prototyping and correctness validation.
│
├── run_eea_s835_fastdual_recursive_chunks_checkpoint.py
├── run_eea_s835_fastdual_recursive_chunks_checkpoint_nctopt.py
├── count_s835_fastdual_wrapped_point_addition_blocks_compiled.py
│
├── eea_circuit.py
├── eea_circuit_s835_fastdual.py
├── eea_circuit_s835_lowaux.py
├── eea_circuit_updated.py
├── under1000_eea_shared_s835_fastdual_wrapped.py
├── under1000_modular_arithmetic_base.py
│
├── point_addition_fig14_s835_fastdual_wrapped_quadratic.py
├── quadratic_fig15_inplace_s835_fastdual_wrapped.py
├── quadratic_gidney_arithmetic.py
├── quadratic_lazy_instruction.py
├── quadratic_modular_arithmetic.py
├── quadratic_squ_minus.py
│
├── ccx_recursive_block_counter.py
├── nct_template_segment_optimizer.py
│
├── test_eea_strict_main.py
└── test_point_addition_strict_main.py
run_eea_s835_fastdual_recursive_chunks_checkpoint.py
يعدّ خطوات الخوارزمية 3 لـ EEA بشكل تكراري، في أجزاء بنقاط حفظ.
run_eea_s835_fastdual_recursive_chunks_checkpoint_nctopt.py
نفس مسار عمل عد EEA، لكن مع تحسين محلي باستخدام قوالب NCT.
count_s835_fastdual_wrapped_point_addition_blocks_compiled.py
يعدّ دائرة جمع النقاط المغلفة عبر العد التكراري للكتل الفرعية المجمَّعة القابلة لإعادة الاستخدام وتجميع المكونات الحسابية المتكررة بأعداد تكرار مضبوطة.
eea_circuit_s835_fastdual.py: التنفيذ الرئيسي لدائرة EEA الإنتاجية.eea_circuit_s835_lowaux.py: روتينات مساعدة منخفضة الكيوبتات الإضافية يستخدمها التنفيذ الرئيسي.eea_circuit_updated.py: اللبنات المشتركة لدائرة EEA وأدوات العد التكراري للموارد.eea_circuit.py: غلاف توافق رجعي للاختبارات.point_addition_fig14_s835_fastdual_wrapped_quadratic.py: يبني دائرة جمع النقاط الأفينية المغلفة المطابقة لجدول الشكل 14.quadratic_fig15_inplace_s835_fastdual_wrapped.py: يبني بنية القسمة الموضعية والضرب الموضعي للشكل 15 مع EEA والضرب والقياس وإعادة الضبط وتصحيح الطور بالتغذية الأمامية.quadratic_modular_arithmetic.py: تعليمات الجمع/الطرح المعياري والضرب والضرب العكسي والمضاعفة والتنصيف المستخدمة بواسطة عداد جمع النقاط.quadratic_gidney_arithmetic.py: الأوليات الحسابية بأسلوب Gidney ومساعدات القياس والتغذية الأمامية المستخدمة بواسطة طبقة الحساب المعياري التربيعي.quadratic_squ_minus.py: كتلة التربيع-الطرح المستخدمة في جدول جمع النقاط الأفينية.under1000_eea_shared_s835_fastdual_wrapped.py: غلاف EEA المشترك والأداة المساعدة المستخدمة بواسطة دائرة جمع النقاط.under1000_modular_arithmetic_base.py: أدوات صغيرة مشتركة للحساب المعياري.ccx_recursive_block_counter.py: عداد تكراري لدوائر Qiskit، مع سياسات لتوسيع MCX وتوسيع SWAP.nct_template_segment_optimizer.py: محسِّن محلي قائم على القوالب لمقاطع {X, CX, CCX}.البيئة الموصى بها:
ثبّت الاعتماد الرئيسي باستخدام:
python -m pip install --upgrade pip
python -m pip install qiskit
شغّل مجموعة الاختبارات:
python test_eea_strict_main.py
python test_point_addition_strict_main.py
لإجراء اختبار إقلاع أسرع لجمع النقاط:
python test_point_addition_strict_main.py --skip-n256 --skip-report
نقطة الدخول القياسية لعد EEA هي:
python run_eea_s835_fastdual_recursive_chunks_checkpoint.py \
--n 192 \
--chunk-size 25 \
--measurement-uncompute \
--resume \
--workdir eea_s835_fastdual_chunks25 \
--out eea_s835_fastdual_algorithm3_recursive_chunks_n192_measurement.json
الوسائط المهمة:
--n: عرض البت.--T-max: تجاوز اختياري لعدد خطوات الخوارزمية 3؛ افتراضيًا تُستخدم القيمة من eea.get_n_config(n).--chunk-size: عدد خطوات الخوارزمية 3 المعدودة لكل جزء بنقطة حفظ.--aux-size: تجاوز اختياري لمجموعة كيوبتات المساعدة؛ إذا حُذف، يُحسب حجم مساعدة التخطيط تلقائيًا.--measurement-uncompute: يفعّل إلغاء الحساب القائم على القياس في كتل EEA المعدودة.--resume: يعيد استخدام ملفات JSON غير الفارغة الموجودة للأجزاء في --workdir.--workdir: دليل ملفات نقاط الحفظ لكل جزء.--out: ملخص JSON التراكمي المكتوب بعد كل جزء.يكتب السكربت ملفات لكل جزء مثل:
eea_s835_fastdual_chunks25/eea_s835_fastdual_n192_T0001_0025.json
وملف إخراج JSON تراكمي يحتوي على حقول مثل:
mode
n
T_max
num_qubits
len_width
shift_width
aux_size
measurement_based
ops
chunks
elapsed_s_so_far
نقطة الدخول للعد المحسَّن هي:
python run_eea_s835_fastdual_recursive_chunks_checkpoint_nctopt.py \
--n 128 \
--chunk-size 25 \
--measurement-uncompute \
--templates small-nct \
--rounds 1 \
--max-nct-segment-gates 40 \
--segment-timeout-s 10 \
--timeout-mode auto \
--resume \
--workdir eea_s835_fastdual_chunks_nctopt_failopen_r1_128_seg40_to10 \
--out eea_s835_fastdual_algorithm3_recursive_chunks_n128_measurement_nctopt_failopen_r1_seg40_to10.json
يحاول مسار العمل هذا إجراء تحسين محلي بالقوالب على مقاطع {X, CX, CCX}. وهو مصمم كعداد fail-open محدود: إذا انتهت مهلة خطوة محسَّنة أو أثارت استثناءً، تُعدّ تلك الخطوة بدقة دون جولات قوالب ثم تُحفظ كنقطة حفظ، بحيث تبقى الأعداد النهائية المبلغ عنها كاملة.
وسائط مفيدة إضافة إلى وسائط EEA القياسية:
--templates {small-nct,all-nct}: اختيار مكتبة القوالب.--rounds: عدد جولات تحسين القوالب.--max-nct-segment-gates: الحد الأقصى لحجم المقطع القابل للعكس المرسل إلى تحسين القوالب.--max-nct-segment-qubits: الحد الأقصى لعدد الكيوبتات في المقطع.--segment-timeout-s: المهلة الزمنية لتحسين المقطع الفردي.--step-timeout-s: المهلة الزمنية لخطوة الخوارزمية 3 كاملة قبل التراجع إلى العد غير المحسَّن.--fallback-step-timeout-s: المهلة الزمنية لعد الرجوع الدقيق.--force: إعادة الحساب حتى لو كانت نقاط حفظ الخطوات/الأجزاء موجودة بالفعل.--ignore-policy-mismatch: إعادة استخدام نقاط الحفظ القديمة حتى عندما تختلف سياسة التحسين؛ هذا أساسًا للتنقيح.يكتب مسار العمل المحسَّن نقاط حفظ على مستوى الخطوات تحت:
<workdir>/steps/
وملخصات على مستوى الأجزاء تحت:
<workdir>/
يعتمد عداد جمع النقاط على ملف JSON لخوارزمية EEA 3 ناتج عن أحد مسارات عمل EEA أعلاه. يجب أن تطابق قيمة --n لعداد جمع النقاط حقل n في ملف JSON الخاص بـ EEA.
مثال لـ n=64:
python run_eea_s835_fastdual_recursive_chunks_checkpoint.py \
--n 64 \
--chunk-size 25 \
--measurement-uncompute \
--resume \
--workdir eea_s835_fastdual_chunks25_n64 \
--out eea_s835_fastdual_algorithm3_recursive_chunks_n64_measurement.json
ثم شغّل:
python count_s835_fastdual_wrapped_point_addition_blocks_compiled.py \
--n 64 \
--eea-steps-json eea_s835_fastdual_algorithm3_recursive_chunks_n64_measurement.json \
--out point_addition_s835_fastdual_wrapped_blocks_compiled_counts_n64.json
مثال لمخرجات EEA المحسَّنة لـ n=128:
python count_s835_fastdual_wrapped_point_addition_blocks_compiled.py \
--n 128 \
--eea-steps-json eea_s835_fastdual_algorithm3_recursive_chunks_n128_measurement_nctopt_failopen_r1_seg40_to10.json \
--out point_addition_s835_fastdual_wrapped_blocks_compiled_counts_n128.json
الوسائط المهمة: