কিউআইএসকিটিতে একক কোয়ান্টাম প্রোগ্রামে একাধিক কোয়ান্টাম সার্কিট রচনা করা


9

আমি ভাবছিলাম যে একাধিক কোয়ান্টাম সার্কিটের সাথে একটি প্রোগ্রাম রচনা করার জন্য যদি কোনও সার্কিটের জন্য এ পুনরায় পুনঃনির্মাণ না করে কোনও উপায় আছে কি না ?0

বিশেষত, আমি প্রথমটি চালানোর পরে দ্বিতীয় কোয়ান্টাম সার্কিটটি চালাতে চাই, যেমন এই উদাহরণ হিসাবে:

qp = QuantumProgram()
qr = qp.create_quantum_register('qr',2)
cr = qp.create_classical_register('cr',2)

qc1 = qp.create_circuit('B1',[qr],[cr])
qc1.x(qr)

qc1.measure(qr[0], cr[0])
qc1.measure(qr[1], cr[1])

qc2 = qp.create_circuit('B2', [qr], [cr])
qc2.x(qr)
qc2.measure(qr[0], cr[0])
qc2.measure(qr[1], cr[1])

#qp.add_circuit('B1', qc1)
#qp.add_circuit('B2', qc2)

pprint(qp.get_qasms())

result = qp.execute()

print(result.get_counts('B1'))
print(result.get_counts('B2'))

দুর্ভাগ্যবশত, কি আমি পেতে দুই রানে একই ফলাফল (অর্থাত একটি গণনা হয় 11জন্য B1এবং B2পরিবর্তে 11এবং 00যেন সেকেন্ডের জন্য, B2একটি সম্পূর্ণ নতুন রাষ্ট্র উপর সক্রিয়া চালানো হয় 00পরে B1


1
আপনি একাধিক অংশ সমন্বিত একটি দীর্ঘ সার্কিট চান হিসাবে আমি কি এটি বুঝতে পারি, এবং আপনি প্রতিটি অংশের পরে আউটপুট দেখতে সক্ষম হতে চান?
জেমস ওয়াটন

হ্যাঁ. কল্পনা করুন যে আমার কাছে একটি কোড বেস রয়েছে যা আমাকে সার্কিট দেয় এবং আমি তাদের ধাঁধা হিসাবে রচনা করতে সক্ষম হতে চাই :)
এসিডেফ

(পরিমাপটি কেবল আপনাকে দেখানোর জন্য রয়েছে যা প্রত্যাশিত আচরণ নয়)
এসডিএফফ

উত্তর:


2

কিস্কিটে আপনি দুটি বড় সার্কিট তৈরি করতে একটি বড় সার্কিট তৈরি করতে পারেন। আপনি কেবলমাত্র +সার্কিটগুলিতে অপারেটরটি ব্যবহার করে এটি করতে পারেন ।

এটি চিত্রিত করার জন্য আপনার প্রোগ্রামটি এখানে আবার লেখা হয়েছে (দ্রষ্টব্য: এটির জন্য আপনাকে কিসকিটের সর্বশেষ সংস্করণ প্রয়োজন, এর সাথে আপগ্রেড করুন pip install -U qiskit)।

from qiskit import *
qr = QuantumRegister(2)
cr = ClassicalRegister(2)
qc1 = QuantumCircuit(qr, cr)
qc1.x(qr)

qc2 = QuantumCircuit(qr, cr)
qc2.x(qr)

qc3 = qc1 + qc2

আপনি দেখতে পাচ্ছেন যে Qc3 হল কিউ 1 এবং কি 2 এর সংমিশ্রণ।

print(qc3.qasm())

উৎপাদনের:

OPENQASM 2.0;
include "qelib1.inc";
qreg q0[2];
creg c0[2];
x q0[0];
x q0[1];
x q0[0];
x q0[1];

এখন, আপনি রাষ্ট্রটি দুবার অনুসন্ধান করতে চান বলে মনে হচ্ছে: একবার যেখানে qc1 শেষ হয় এবং একবার QC2 শেষ হয়। snapshotকমান্ড সন্নিবেশ করে আপনি সিমুলেটারে এটি করতে পারেন । এটি সার্কিটের একটি নির্দিষ্ট সময়ে রাষ্ট্রপরিচালককে সংরক্ষণ করবে। এটি রাষ্ট্রের ধসে পড়ে না।

from qiskit.extensions.simulator import *
qc1.snapshot('0')    # save the snapshot in slot "0"
qc2.snapshot('1')    # save the snapshot in slot "1"
qc2.measure(qr, cr)  # measure to get final counts

qc3 = qc1 + qc2

আপনি এখন qc3একটি সিমুলেটারে চালিত করতে পারেন ।

job = execute(qc3, 'local_qasm_simulator')
result = job.result()
print(result.get_snapshot('0'))
print(result.get_snapshot('1'))
print(result.get_counts())

ফলন: [0. + 0.j 0. + 0.j 0. + 0.j 1. + 0.j] [1. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j] {'00': 1024}

সুতরাং রাষ্ট্রটি প্রত্যাশার মতো | 00> এ ফিরে যায়।


0

আপনি একবার কোনও পরিমাপ করলে, কোয়ান্টাম রাষ্ট্র / নিবন্ধকের তরঙ্গসংশ্লিষ্ট হয়ে পড়ে এবং এটি তার কোয়ান্টামের প্রকৃতি হারিয়ে ফেলে। এটিতে অন্য একটি সার্কিট প্রয়োগ করা কোনও অর্থবোধ করে না।


অবশ্যই নিশ্চিত, কিন্তু যদি আমি পুরা মাপ অপসারণ, আমি 00 পেতে আশা, যখন আমি 1. পেতে পরিমাপ ঠিক দেখানোর জন্য যে, আমি 11. সক্রিয়া qubits দ্বিতীয় সার্কিট শুরু করতে চান হয়
asdf ও ডিফেন্ডার

প্রকৃতপক্ষে আমি চাই আমার তরঙ্গসংশ্লিষ্ট কোয়ান্টাম অবস্থায় পতিত হোক এবং 00 নয় যদি আপনি এটি
সেভাবেই

2
@ বিদ্যা আমি বুঝতে পারি যে এটি ধসে পড়েছে তবে আমি সম্মত নই যে এটি পূর্ববর্তী সার্কিটের ধসে পড়া আউটপুটটিতে অন্য একটি সার্কিট প্রয়োগ করা বুদ্ধিমান হবে না।
জানভিডিএ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.