<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Python on kenji.blog</title><link>http://kenji.blog/ar/categories/python/</link><description>Recent content in Python on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>ar</language><copyright>kenjinote</copyright><lastBuildDate>Fri, 11 Sep 2026 20:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/ar/categories/python/index.xml" rel="self" type="application/rss+xml"/><item><title>مقدمة فائقة في البرمجة الكمومية باستخدام Qiskit</title><link>http://kenji.blog/ar/p/qiskit-quantum-programming-intro/</link><pubDate>Fri, 11 Sep 2026 20:00:00 +0900</pubDate><guid>http://kenji.blog/ar/p/qiskit-quantum-programming-intro/</guid><description>&lt;img src="http://kenji.blog/p/qiskit-quantum-programming-intro/img/eyecatch.jpg" alt="Featured image of post مقدمة فائقة في البرمجة الكمومية باستخدام Qiskit" />&lt;h2 id="1-مقدمة">1. مقدمة
&lt;/h2>&lt;p>أحدثت أجهزة الكمبيوتر الحديثة (الكلاسيكية) تغييراً جذرياً في حياتنا، وهي تدعم جميع جوانب المجتمع بقدراتها الحسابية العالية. ومع ذلك، من المعروف أنه بالنسبة لبعض المشكلات المحددة (مثل تحليل الأعداد الضخمة إلى عواملها الأولية، ومحاكاة الهياكل الجزيئية المعقدة، ومشكلات التحسين، إلخ)، حتى أحدث أجهزة الكمبيوتر الفائقة الحالية قد تستغرق وقتًا أطول من عمر الكون لحلها.&lt;/p>
&lt;p>لكسر هذه &amp;ldquo;الحدود لأجهزة الكمبيوتر الكلاسيكية&amp;rdquo;، يبرز &lt;strong>الكمبيوتر الكمومي (Quantum Computer)&lt;/strong> كاحتمال واعد. من خلال الاستفادة من الخصائص العجيبة لميكانيكا الكم (التراكب والتشابك الكمومي) كموارد حسابية، يُعتقد أنه يمكن تسريع حل مشكلات معينة بشكل هائل.&lt;/p>
&lt;p>في هذه المقالة، سنتخذ الخطوة الأولى نحو عالم البرمجة الكمومية باستخدام &lt;strong>Qiskit&lt;/strong>، وهو إطار عمل مفتوح المصدر للحوسبة الكمومية تقدمه IBM. هذا الدليل التمهيدي مفصل للغاية، حيث يشرح الأساسيات الفيزيائية والرياضية بعناية، ويغطي العملية من كتابة الكود فعليًا بلغة Python إلى تشغيل الدوائر الكمومية على جهاز محاكاة.&lt;/p>
&lt;hr>
&lt;h2 id="2-الأساسيات-الفيزيائية-والرياضية-التي-تدعم-الحوسبة-الكمومية">2. الأساسيات الفيزيائية والرياضية التي تدعم الحوسبة الكمومية
&lt;/h2>&lt;p>لفهم البرمجة الكمومية، يجب أولاً فهم المفاهيم الأساسية لميكانيكا الكم. هنا، سنشرح ثلاث ركائز مهمة: الكيوبتات (البتات الكمومية)، التراكب، والتشابك الكمومي.&lt;/p>
&lt;h3 id="21-البت-الكلاسيكي-والبت-الكمومي-qubit">2.1 البت الكلاسيكي والبت الكمومي (Qubit)
&lt;/h3>&lt;p>وحدة المعلومات في الكمبيوتر الكلاسيكي هي &amp;ldquo;البت (Bit)&amp;rdquo;. يتخذ البت دائمًا إحدى الحالتين إما &lt;code>0&lt;/code> أو &lt;code>1&lt;/code>.&lt;/p>
&lt;p>من ناحية أخرى، تسمى أصغر وحدة للمعلومات في الكمبيوتر الكمومي &lt;strong>البت الكمومي (Qubit: Quantum bit)&lt;/strong>. لا يمكن للبت الكمومي أن يتخذ الحالة &lt;code>0&lt;/code> و &lt;code>1&lt;/code> فحسب، بل يمكنه &lt;strong>الاحتفاظ بكلتا الحالتين في نفس الوقت&lt;/strong>.&lt;/p>
&lt;p>رياضياً، يتم التعبير عن حالة البت الكمومي $|\psi\rangle$ كتركيب خطي (تراكب) للحالات الأساسية $|0\rangle$ و $|1\rangle$.&lt;/p>
$$
|\psi\rangle = \alpha|0\rangle + \beta|1\rangle
$$
&lt;p>هنا، $\alpha$ و $\beta$ عبارة عن أعداد مركبة، وتمثل سعات الاحتمال لملاحظة الحالتين $|0\rangle$ و $|1\rangle$ على التوالي. استنادًا إلى المبادئ الأساسية لميكانيكا الكم، يجب أن يكون مجموع الاحتمالات 1، لذا فإنها تلبي شرط المعايرة التالي:&lt;/p>
$$
|\alpha|^2 + |\beta|^2 = 1
$$
&lt;p>بمعنى آخر، عند &amp;ldquo;قياس (ملاحظة)&amp;rdquo; هذا البت الكمومي، فإن احتمال الحصول على $|0\rangle$ هو $|\alpha|^2$، واحتمال الحصول على $|1\rangle$ هو $|\beta|^2$. حقيقة أن الحالة لا تتحدد إلا بشكل احتمالي قبل القياس هي الفرق الحاسم بينه وبين البت الكلاسيكي.&lt;/p>
&lt;div class="mermaid">graph LR
A["البت الكلاسيكي (Classical Bit)"] --> B["حالة محددة: 0 أو 1"]
C["البت الكمومي (Qubit)"] --> D["تراكب: 0 و 1 معًا"]
D --> E["تتحدد الحالة احتماليًا عن طريق القياس"]&lt;/div>
&lt;h3 id="22-التراكب-superposition">2.2 التراكب (Superposition)
&lt;/h3>&lt;p>كما ذُكر سابقًا، يُطلق على الحالة التي تمتزج فيها الحالتان $|0\rangle$ و $|1\rangle$ اسم &lt;strong>التراكب (Superposition)&lt;/strong>.&lt;/p>
&lt;p>على سبيل المثال، إذا كان بت كمومي واحد في حالة تراكب متساوٍ تمامًا، فإن $\alpha = \frac{1}{\sqrt{2}}$ و $\beta = \frac{1}{\sqrt{2}}$.&lt;/p>
$$
|\psi\rangle = \frac{1}{\sqrt{2}}|0\rangle + \frac{1}{\sqrt{2}}|1\rangle
$$
&lt;p>إذا قمت بقياس هذه الحالة، فستتم ملاحظة $|0\rangle$ و $|1\rangle$ باحتمال 50% لكل منهما.
إذا كان هناك 2 بت كمومي، يمكننا إنشاء تراكب من 4 حالات: $|00\rangle, |01\rangle, |10\rangle, |11\rangle$. وإذا كان هناك $n$ بت كمومي، فيمكن تمثيل $2^n$ حالة في نفس الوقت، وهذا هو أحد مصادر قدرة المعالجة المتوازية للكمبيوتر الكمومي.&lt;/p>
&lt;h3 id="23-التشابك-الكمومي-entanglement">2.3 التشابك الكمومي (Entanglement)
&lt;/h3>&lt;p>الخاصية الأقوى والأكثر غرابة في الحوسبة الكمومية هي &lt;strong>التشابك الكمومي (Entanglement)&lt;/strong>. هذه الظاهرة، التي أطلق عليها أينشتاين اسم &amp;ldquo;التأثير الشبحي عن بُعد&amp;rdquo;، تعني أن اثنين أو أكثر من البتات الكمومية مرتبطة ببعضها البعض بقوة، وبمجرد تحديد حالة أحد البتات الكمومية، تتحدد حالة البت الكمومي الآخر على الفور، بغض النظر عن المسافة الفيزيائية بينهما.&lt;/p>
&lt;p>واحدة من أشهر حالات التشابك الكمومي، &amp;ldquo;حالة بيل (Bell State)&amp;quot;، تُعرف بحالة $\Phi^+$ وتُعبر عنها المعادلة التالية:&lt;/p>
$$
|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}
$$
&lt;p>في هذه الحالة، لا توجد حالات مثل $|01\rangle$ أو $|10\rangle$. لذلك، إذا قمت بقياس البت الكمومي الأول ووجدت أنه $|0\rangle$، فمن المؤكد أن البت الثاني سيكون $|0\rangle$ دون الحاجة إلى قياسه. والعكس صحيح، إذا كان الأول $|1\rangle$، فإن الثاني سيكون دائمًا $|1\rangle$.&lt;/p>
&lt;hr>
&lt;h2 id="3-البوابات-المنطقية-الكمومية-quantum-logic-gates">3. البوابات المنطقية الكمومية (Quantum Logic Gates)
&lt;/h2>&lt;p>تمامًا كما تستخدم أجهزة الكمبيوتر الكلاسيكية البوابات المنطقية مثل AND و OR و NOT لإجراء الحسابات، تستخدم أجهزة الكمبيوتر الكمومية &lt;strong>البوابات الكمومية&lt;/strong> لمعالجة حالات البتات الكمومية. نظرًا لأن الحالة الكمومية هي متجه، يتم تمثيل البوابة الكمومية كـ &amp;ldquo;مصفوفة وحدوية (Unitary matrix)&amp;rdquo; تعمل على هذا المتجه.&lt;/p>
&lt;h3 id="31-بوابات-باولي-pauli-x-y-z">3.1 بوابات باولي (Pauli-X, Y, Z)
&lt;/h3>&lt;p>بوابات باولي هي العمليات الأساسية على بت كمومي واحد.&lt;/p>
&lt;p>&lt;strong>・بوابة Pauli-X (بوابة NOT)&lt;/strong>
تعادل بوابة NOT الكلاسيكية. تقلب $|0\rangle$ إلى $|1\rangle$ و $|1\rangle$ إلى $|0\rangle$. (دوران بمقدار 180 درجة حول المحور X في كرة بلوخ)&lt;/p>
$$
X = \begin{pmatrix} 0 &amp; 1 \\ 1 &amp; 0 \end{pmatrix}
$$
&lt;p>&lt;strong>・بوابة Pauli-Y&lt;/strong>
تقوم بدوران بمقدار 180 درجة حول المحور Y. لها تأثير عكس كل من الطور والبت.&lt;/p>
$$
Y = \begin{pmatrix} 0 &amp; -i \\ i &amp; 0 \end{pmatrix}
$$
&lt;p>&lt;strong>・بوابة Pauli-Z (بوابة عكس الطور)&lt;/strong>
تبقي حالة $|0\rangle$ كما هي، وتعكس طور حالة $|1\rangle$ (بالضرب في $-1$). (دوران بمقدار 180 درجة حول المحور Z)&lt;/p>
$$
Z = \begin{pmatrix} 1 &amp; 0 \\ 0 &amp; -1 \end{pmatrix}
$$
&lt;h3 id="32-بوابة-هادامارد-hadamard-gate">3.2 بوابة هادامارد (Hadamard Gate)
&lt;/h3>&lt;p>بوابة هادامارد (بوابة H) هي بوابة مهمة جدًا تحول حالة محددة ($|0\rangle$ أو $|1\rangle$) إلى حالة تراكب.&lt;/p>
$$
H = \frac{1}{\sqrt{2}}
\begin{pmatrix}
1 &amp; 1 \\
1 &amp; -1
\end{pmatrix}
$$
&lt;p>عند تطبيق بوابة H على $|0\rangle$، نحصل على حالة تراكب متساوية $|+\rangle$.&lt;/p>
$$
H|0\rangle = \frac{1}{\sqrt{2}}|0\rangle + \frac{1}{\sqrt{2}}|1\rangle = |+\rangle
$$
&lt;h3 id="33-بوابات-الطور-phase-gates">3.3 بوابات الطور (Phase Gates)
&lt;/h3>&lt;p>بوابة الطور هي تعميم لبوابة Z، وتقوم بتدوير طور الحالة $|1\rangle$ بزاوية محددة $\theta$.&lt;/p>
$$
P(\theta) = \begin{pmatrix} 1 &amp; 0 \\ 0 &amp; e^{i\theta} \end{pmatrix}
$$
&lt;p>ومن الأمثلة النموذجية بوابة S ($\theta = \pi/2$) وبوابة T ($\theta = \pi/4$).&lt;/p>
&lt;h3 id="34-بوابة-cnot-controlled-not-gate">3.4 بوابة CNOT (Controlled-NOT Gate)
&lt;/h3>&lt;p>بوابة CNOT (بوابة CX) هي بوابة تقوم بإجراء عملية بين اثنين من البتات الكمومية، وهي ضرورية لتوليد التشابك الكمومي. تتكون من &amp;ldquo;بت التحكم (Control bit)&amp;rdquo; و &amp;ldquo;البت المستهدف (Target bit)&amp;rdquo;.&lt;/p>
&lt;p>فقط إذا كان بت التحكم $|1\rangle$، يتم تطبيق بوابة X (عملية NOT) على البت المستهدف، وإذا كان بت التحكم $|0\rangle$، لا يتم إجراء أي تغيير.&lt;/p>
$$
CNOT = \begin{pmatrix}
1 &amp; 0 &amp; 0 &amp; 0 \\
0 &amp; 1 &amp; 0 &amp; 0 \\
0 &amp; 0 &amp; 0 &amp; 1 \\
0 &amp; 0 &amp; 1 &amp; 0
\end{pmatrix}
$$
&lt;hr>
&lt;h2 id="4-أساسيات-qiskit-وإعداد-البيئة">4. أساسيات Qiskit وإعداد البيئة
&lt;/h2>&lt;p>من هنا، سنقوم فعليًا بكتابة برامج كمومية باستخدام Python و Qiskit.&lt;/p>
&lt;h3 id="41-ما-هو-qiskit">4.1 ما هو Qiskit؟
&lt;/h3>&lt;p>&lt;strong>Qiskit&lt;/strong> عبارة عن مجموعة أدوات تطوير برمجيات (SDK) مفتوحة المصدر للحوسبة الكمومية تم تطويرها بواسطة IBM Quantum. تتيح لك بناء الدوائر الكمومية بشكل حدسي باستخدام Python، وتشغيلها إما على أجهزة محاكاة محلية أو على أجهزة كمبيوتر كمومية حقيقية من IBM عبر السحابة.&lt;/p>
&lt;h3 id="42-طريقة-التثبيت">4.2 طريقة التثبيت
&lt;/h3>&lt;p>لاستخدام Qiskit، ستحتاج إلى بيئة Python. يمكنك تثبيت Qiskit والحزم ذات الصلة (أجهزة المحاكاة ومكتبات الرسم) باستخدام الأمر التالي.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install qiskit qiskit-aer qiskit-ibm-runtime matplotlib pylatexenc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="43-التدفق-الأساسي-للبرمجة">4.3 التدفق الأساسي للبرمجة
&lt;/h3>&lt;p>تتقدم البرمجة الكمومية باستخدام Qiskit بشكل أساسي عبر الخطوات التالية.&lt;/p>
&lt;div class="mermaid">graph TD
A["1. بناء الدائرة (Build)"] --> B["2. الترجمة/التصريف (Compile)"]
B --> C["3. التنفيذ (Execute)"]
C --> D["4. تحليل النتائج وتصورها (Analyze)"]&lt;/div>
&lt;ol>
&lt;li>&lt;strong>بناء الدائرة&lt;/strong>: قم بإنشاء كائن &lt;code>QuantumCircuit&lt;/code> وإضافة البوابات إليه.&lt;/li>
&lt;li>&lt;strong>الترجمة&lt;/strong>: قم بتحسين الدائرة لتلائم الواجهة الخلفية (الجهاز الحقيقي أو جهاز المحاكاة) التي سيتم التنفيذ عليها.&lt;/li>
&lt;li>&lt;strong>التنفيذ&lt;/strong>: أرسل المهمة إلى الواجهة الخلفية واحصل على النتائج.&lt;/li>
&lt;li>&lt;strong>التحليل&lt;/strong>: ارسم المدرج التكراري لنتائج القياس وغيرها من التمثيلات.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="5-تطبيق-عملي-بناء-دائرة-تصنع-حالة-بيل-التشابك-الكمومي">5. تطبيق عملي: بناء دائرة تصنع حالة بيل (التشابك الكمومي)
&lt;/h2>&lt;p>دعونا ننشئ &amp;ldquo;التشابك الكمومي (حالة بيل)&amp;rdquo; التي درسناها نظريًا باستخدام Qiskit. الحالة المستهدفة هي $|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}$.&lt;/p>
&lt;h3 id="51-تصميم-الدائرة">5.1 تصميم الدائرة
&lt;/h3>&lt;p>لإنشاء حالة بيل، نتبع الخطوات التالية:&lt;/p>
&lt;ol>
&lt;li>قم بإعداد 2 من البتات الكمومية (الحالة الأولية لكليهما هي $|0\rangle$).&lt;/li>
&lt;li>طبق بوابة هادامارد (H) على البت الكمومي الأول لجعله في حالة تراكب.&lt;/li>
&lt;li>طبق بوابة CNOT بحيث يكون البت الكمومي الأول هو &amp;ldquo;بت التحكم&amp;rdquo; والثاني هو &amp;ldquo;البت المستهدف&amp;rdquo;.&lt;/li>
&lt;li>قم بالقياس (Measure) لقراءة النتائج.&lt;/li>
&lt;/ol>
&lt;h3 id="52-التنفيذ-بالكود-عبر-pythonqiskit">5.2 التنفيذ بالكود عبر Python/Qiskit
&lt;/h3>&lt;p>دعونا نلقي نظرة على الكود الفعلي.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QuantumCircuit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">transpile&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit_aer&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">Aer&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit.visualization&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">plot_histogram&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">matplotlib.pyplot&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">plt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 1. تهيئة الدائرة&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># إنشاء دائرة كمومية تحتوي على 2 بت كمومي و 2 بت كلاسيكي&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QuantumCircuit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 2. تطبيق بوابة H&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># تطبيق بوابة هادامارد على البت الكمومي 0 (q0)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">h&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 3. تطبيق بوابة CNOT&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># تطبيق CNOT بجعل q0 بت التحكم و q1 البت المستهدف&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cx&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 4. القياس&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># قياس البت الكمومي 0 و 1 وكتابة النتائج في البت الكلاسيكي 0 و 1 على التوالي&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">measure&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># رسم مخطط الدائرة (باستخدام matplotlib)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># qc.draw(&amp;#39;mpl&amp;#39;)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">draw&lt;/span>&lt;span class="p">())&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>عند تشغيل هذا الكود، سيظهر المخطط التوضيحي التالي للدائرة الكمومية على شكل فن الأسكي (ASCII art) في وحدة التحكم.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl"> ┌───┐ ┌─┐
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">q_0: ┤ H ├──■──┤M├───
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └───┘┌─┴─┐└╥┘┌─┐
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">q_1: ─────┤ X ├─╫─┤M├
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └───┘ ║ └╥┘
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">c: 2/═══════════╩══╩═
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 0 1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>تشير &lt;code>H&lt;/code> إلى بوابة هادامارد، والجمع بين &lt;code>■&lt;/code> و &lt;code>X&lt;/code> يمثل بوابة CNOT، و &lt;code>M&lt;/code> تمثل القياس.&lt;/p>
&lt;h3 id="53-التنفيذ-على-جهاز-المحاكاة-وتفسير-النتائج">5.3 التنفيذ على جهاز المحاكاة وتفسير النتائج
&lt;/h3>&lt;p>بعد ذلك، سنقوم بتشغيل هذه الدائرة على جهاز محاكاة &lt;code>Aer&lt;/code> عالي الأداء من IBM للتحقق من النتائج.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># الحصول على الواجهة الخلفية لجهاز المحاكاة Aer&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">simulator&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Aer&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_backend&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;qasm_simulator&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># ترجمة الدائرة لجهاز المحاكاة (تحسين)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">compiled_circuit&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">transpile&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">qc&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">simulator&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># تشغيل الدائرة (هنا نقوم بتنفيذ 1000 طلقة &amp;#34;shots&amp;#34;)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">job&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">simulator&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">run&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">compiled_circuit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">shots&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">1000&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># الحصول على النتيجة&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">job&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># الحصول على عدد مرات مشاهدة الحالة (العدد)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">counts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">result&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_counts&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">compiled_circuit&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">نتيجة القياس:&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">counts&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># رسم المدرج التكراري (الهيستوجرام)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># plot_histogram(counts)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># plt.show()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>تفسير النتائج&lt;/strong>&lt;/p>
&lt;p>يجب أن يكون مخرج وحدة التحكم كالتالي تقريبًا.
&lt;code>نتيجة القياس: {'00': 495, '11': 505}&lt;/code>
(* نظرًا لأن الاحتمالات عشوائية، فستتقلب الأرقام بشكل طفيف مع كل تنفيذ)&lt;/p>
&lt;p>في بيئة المحاكاة المثالية، تُلاحظ نتائج القياس &lt;code>00&lt;/code> و &lt;code>11&lt;/code> بنسبة 50% تقريبًا لكل منهما، ولا تُلاحظ &lt;code>01&lt;/code> أو &lt;code>10&lt;/code> على الإطلاق.
هذا يتوافق تمامًا مع التوقع النظري لحالة بيل التي أنشأناها $|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}$. تمت محاكاة &amp;ldquo;التشابك الكمومي&amp;rdquo; بدقة، حيث إذا كان البت الكمومي الأول 0، فإن الثاني سيكون بالتأكيد 0، وإذا كان 1، فسيكون الثاني بالتأكيد 1.&lt;/p>
&lt;p>بالمناسبة، إذا تم التشغيل على جهاز كمبيوتر كمومي حقيقي (IBM Quantum Hardware)، قد تتم ملاحظة القليل من &lt;code>01&lt;/code> و &lt;code>10&lt;/code> بسبب تأثير الضوضاء (فك الترابط الكمومي وأخطاء البوابات). إن كيفية تقليل هذه الضوضاء (تصحيح الخطأ الكمومي) تعد إحدى أكبر التحديات في تطوير أجهزة الكمبيوتر الكمومية حاليًا.&lt;/p>
&lt;hr>
&lt;h2 id="6-التوسع-إلى-خوارزميات-أكثر-تقدما">6. التوسع إلى خوارزميات أكثر تقدمًا
&lt;/h2>&lt;p>يمكن اعتبار إنشاء حالة بيل بمثابة &amp;ldquo;Hello World&amp;rdquo; في البرمجة الكمومية. من خلال تطوير هذا بشكل أكبر، يمكننا بناء خوارزميات قوية تتفوق على أجهزة الكمبيوتر الكلاسيكية.&lt;/p>
&lt;h3 id="61-خوارزمية-دويتش-جوزا-deutsch-jozsa-algorithm">6.1 خوارزمية دويتش-جوزا (Deutsch-Jozsa Algorithm)
&lt;/h3>&lt;p>هذه مسألة تتعلق بتحديد ما إذا كانت دالة معينة $f(x)$ هي &amp;ldquo;دالة ثابتة (تُخرج دائمًا 0 أو تُخرج دائمًا 1 بغض النظر عن المدخلات)&amp;rdquo; أو &amp;ldquo;دالة متوازنة (تُخرج 0 لنصف المدخلات و 1 للنصف الآخر)&amp;rdquo;.
في الكمبيوتر الكلاسيكي، يتطلب الأمر في أسوأ الحالات تقييم الدالة $2^{n-1} + 1$ مرة، ولكن باستخدام خوارزمية دويتش-جوزا، يمكنك الاستفادة من التوازي الكمومي لتحديد ذلك من خلال &lt;strong>تقييم واحد فقط&lt;/strong>. يوضح هذا النمط الأساسي للخوارزمية الكمومية، حيث يتم إدخال حالة تراكب واستخدام التداخل (Interference) لإلغاء الحالات غير الضرورية وتضخيم الإجابة المطلوبة.&lt;/p>
&lt;h3 id="62-خوارزمية-غروفر-grovers-algorithm">6.2 خوارزمية غروفر (Grover&amp;rsquo;s Algorithm)
&lt;/h3>&lt;p>في مشكلة البحث للعثور على بيانات معينة من قاعدة بيانات غير مصنفة تحتوي على $N$ من العناصر، بينما تتطلب الخوارزمية الكلاسيكية في المتوسط $N/2$ عملية حسابية، يمكن لخوارزمية غروفر العثور على البيانات المطلوبة في $\sqrt{N}$ عملية.
تستخدم هذه الخوارزمية صندوقًا أسود يسمى &amp;ldquo;أوراكل (Oracle)&amp;rdquo; لقلب طور الحل المستهدف، ثم تقوم بـ &amp;ldquo;تضخيم السعة (Amplitude Amplification)&amp;rdquo; لزيادة احتمال ملاحظة الحل المستهدف بشكل كبير.&lt;/p>
&lt;div class="mermaid">graph TD
A["التهيئة (تراكب لجميع الحالات)"] --> B["أوراكل (عكس طور الإجابة الصحيحة)"]
B --> C["مُعامل الانتشار (تضخيم السعة عبر الانعكاس حول المتوسط)"]
C --> D{"هل وصلنا لاحتمال كافٍ؟"}
D -- "لا" --> B
D -- "نعم" --> E["القياس"]&lt;/div>
&lt;hr>
&lt;h2 id="7-الخاتمة-وماذا-تتعلم-بعد-ذلك">7. الخاتمة وماذا تتعلم بعد ذلك
&lt;/h2>&lt;p>في هذه المقالة، بدأنا بالمفاهيم الأساسية للحوسبة الكمومية، وهي التراكب والتشابك الكمومي، وقمنا بشرح مفصل لكيفية التعامل مع البوابات المنطقية الكمومية باستخدام Qiskit، وصولاً إلى بناء ومحاكاة حالة بيل فعليًا وتفسير النتائج.&lt;/p>
&lt;p>يعد Qiskit أداة قوية تتيح لك تجاوز الحواجز الرياضية والفيزيائية والتركيز على بناء الخوارزميات، وذلك لأنه يتيح الكتابة بلغة مألوفة مثل Python. تعيش الحوسبة الكمومية حاليًا في عصر &amp;ldquo;الأجهزة الكمومية ذات الحجم المتوسط المصحوبة بالضوضاء&amp;rdquo; (NISQ: Noisy Intermediate-Scale Quantum)، ولكن يتم إحراز تقدم سريع عالميًا في الأبحاث التطبيقية في العديد من المجالات، مثل التعلم الآلي الكمومي (Quantum Machine Learning)، والمحاكاة الكيميائية (Quantum Chemistry)، وفك التشفير.&lt;/p>
&lt;p>انتهز هذه الفرصة واستخدم Qiskit لبناء دوائر كمومية متنوعة بنفسك، وحاول تشغيلها على معالج IBM Quantum الحقيقي. من المؤكد أنك ستتمكن من تجربة نموذج الحوسبة المستقبلي بيديك.&lt;/p>
&lt;h3 id="مراجع">مراجع
&lt;/h3>&lt;ul>
&lt;li>&lt;a class="link" href="https://qiskit.org/documentation/" target="_blank" rel="noopener"
>وثائق Qiskit الرسمية&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://qiskit.org/textbook/ja/preface.html" target="_blank" rel="noopener"
>كتاب Qiskit&lt;/a> - نص رسمي موصى به لأولئك الذين يرغبون في التعمق في الخلفية الرياضية والخوارزميات&lt;/li>
&lt;li>IBM Quantum Learning&lt;/li>
&lt;/ul>
&lt;p>مرحباً بك في العالم الكمومي!&lt;/p></description></item></channel></rss>