একটি নমুনা কোয়ান্টাম অ্যালগরিদম, ভাষা প্রদর্শনের জন্য দরকারী


9

আমি একটি কোয়ান্টাম অ্যালগরিদম সন্ধান করছি যা আমি বিভিন্ন কোয়ান্টাম-ভাষার সিনট্যাক্স প্রদর্শন করতে ব্যবহার করতে পারি। আমার প্রশ্ন অনুরূপ এই , আমার জন্য, কিন্তু "ভালো" মাধ্যম:

  • এটি কী করে তা 1-2 অনুচ্ছেদে বর্ণিত হতে পারে এবং এটি বুঝতে সহজ হওয়া উচিত।
  • "কোয়ান্টাম-প্রোগ্রামিং-ওয়ার্ল্ড" এর আরও উপাদান ব্যবহার করা উচিত (আমি বলতে চাইছি যে অ্যালগোরিদমটি যতটা সম্ভব ক্লাসিকাল ধ্রুবক, পরিমাপ, শর্ত, ক্রেগিস্টার, অপারেটর ইত্যাদি ব্যবহার করা উচিত)।
  • অ্যালগরিদমটি ছোট হওয়া উচিত (সর্বাধিক 15-25 সিউডোকোড-লাইন দীর্ঘ)।

দরকারী অ্যালগরিদমগুলি প্রায়শই খুব দীর্ঘ / শক্ত হয় তবে ডয়চেসের অ্যালগরিদম সেই সমস্ত উপাদান ব্যবহার করে না। কেউ আমাকে ডেমো-এর জন্য ভাল একটি অ্যালগরিদম প্রস্তাব করতে পারেন?


আপনার প্রয়োজনীয়তাটি কি এটিও যে এটি একটি ধ্রুপদী ইনপুট এবং শাস্ত্রীয় আউটপুট সহ একটি "অ্যালগরিদম" হওয়া উচিত এবং সমমানের ধ্রুপদী অ্যালগোরিদম যেভাবে কাজ করবে তার থেকে সুস্পষ্ট সুবিধা / পার্থক্য হওয়া উচিত?
ড্যাফটওয়ুলি

নিবন্ধন করুন কোনও অপারেটরের পরামিতি বা ক্লাসিকান ধ্রুবক সূচনাটি আমার জন্য "ইনপুট" উপস্থাপন করতে পারে এবং প্রয়োজনে আমি আউটপুট ফর্ম্যাটটি সরবরাহ করব। এটি করার / বিশেষ হওয়ার দরকার নেই। ফোকাসটি ভাষার সিনট্যাক্সের দিকে রয়েছে, বর্ণনাকে বৈধ করার জন্য কেবল বিভিন্ন ভাষায় কোডগুলি একই are অ্যালগরিদমের অর্থ অপ্রাসঙ্গিক।
ক্লেনিয়াম

কোয়ান্টাম কম্পিউটিং এসই তে স্বাগতম! শুধু যাচাই করতে পারেন, একটি উত্তরের উত্তরের জন্য আপনার মানদণ্ডটি কি সংক্ষিপ্ত সিউডো কোডের সর্বাধিক উপাদান?
মিত্রান্দির 24601

1
@ মিত্রান্দির 24601 ধন্যবাদ! হ্যাঁ, একরকম।
ক্লেনিয়াম

উত্তর:


3

আমি ইগেনভ্যালু / ইগেনভেেক্টর অনুমান প্রোটোকল দেখার পরামর্শ দিই। সমস্যাটি যতটা সহজ বা আপনি চান হিসাবে শক্ত করতে অনেক নমনীয়তা রয়েছে।

দুটি পরামিতি বাছাই করে শুরু করুন, n এবং k। আপনি একটি ডিজাইন করতে চানn-কুইট একক, U যে ফর্ম eigenvalues ​​আছে e2πiq/2k পূর্ণসংখ্যার জন্য q। নিশ্চিত হয়ে নিন যে সেগুলির মধ্যে কমপক্ষে একটি আইজভ্যালু অনন্য এবং এটি কল করুনω। এটি নিশ্চিত করুন যে একটি সাধারণ পণ্য রাষ্ট্র, বলুন|0n, ইগন্যালিউজের ইগেনভেেক্টরটির সাথে শূন্য-ওভারল্যাপ রয়েছে ω

লক্ষ্য হ'ল এ সম্পর্কে একটি পর্যায় অনুমানের অ্যালগরিদম বাস্তবায়ন করা k, এবং একটি ভেক্টর আউটপুট আউট করার কাজ দেওয়া হচ্ছে |ψ এটি ইগেনভেক্টর সম্পর্কিত ইগেনভেেক্টর ω। সাধারণত এটি একটি সার্কিট গঠিত হবেn+k কুইটস (নিয়ন্ত্রিত- প্রয়োগ করার জন্য আপনার অ্যাসিলাসের প্রয়োজন না হলে)U)।

এটি নিম্নলিখিত হিসাবে কাজ করে:

  • দুটি রেজিস্টার স্থাপন করুন, একটি k কোয়েট, এবং অন্যান্য nqubits। ( কোয়ান্টাম রেজিস্টার ব্যবহার )

  • প্রতি কুইবিট রাজ্যে আরম্ভ করা হয় |0। ( কোয়ান্টাম নিবন্ধগুলির সূচনা )

  • প্রথম রেজিস্টারে প্রতিটি কুইজে একটি হাদামার্ড প্রয়োগ করুন ( একক-কুইট গেট )

  • কোয়েট থেকে r প্রথম রেজিস্টারে নিয়ন্ত্রিত-U2r, দ্বিতীয় রেজিস্টারকে লক্ষ্য করে ( বহু-কুইবিট নিয়ন্ত্রিত গেট )

  • প্রথম নিবন্ধে বিপরীতমুখী ফুরিয়ার রূপান্তর প্রয়োগ করুন, এবং প্রথম নিবন্ধের প্রতিটি কুইবিটকে স্ট্যান্ডার্ড ভিত্তিতে পরিমাপ করুন। এগুলি একত্রিত করা যায়, আধা-শাস্ত্রীয় ফুরিয়ার রূপান্তরটি বাস্তবায়ন করা । ( ক্লাসিকাল ডেটা পরিমাপ এবং ফিড-ফরোয়ার্ড )

  • সঠিক পরিমাপের ফলাফলের জন্য, দ্বিতীয় নিবন্ধটি পছন্দসই অবস্থায় রয়েছে |ψ

সরলতার জন্য, আপনি বাছাই করতে পারেন n=2, k=1, সুতরাং আপনার একটি প্রয়োজন 4×4 ইগেনভ্যালু সহ ইউনিটরি ম্যাট্রিক্স ±1। আমি এরকম কিছু ব্যবহার করব

(U1U2)C(U1U2),
কোথায় Cনিয়ন্ত্রিত- নোটকে বোঝায়। ইগেনভ্যালু -১ সহ একটি মাত্র আইগনেক্টর রয়েছে, যা|ψ=(U1U2)|1(|0|1)/2, এবং আপনি পছন্দগুলি নিয়ে গণ্ডগোল করতে পারেন U1 এবং U2 বাস্তবায়ন অন্বেষণ Uসর্বজনীন গেট সেটের ক্ষেত্রে পচন ব্যবহার করে (আমি সম্ভবত এটি প্রাথমিক সমস্যা হিসাবে সেট করেছি)। তারপরে, নিয়ন্ত্রিত-Uকেবলমাত্র নিয়ন্ত্রিত-নং-এর পরিবর্তে একটি নিয়ন্ত্রিত-নিয়ন্ত্রিত-নট (টফোলি) গেট দিয়ে সহজেই প্রয়োগ করা হয়। অবশেষে, বিপরীত ফুরিয়ার রূপান্তরটি কেবল একটি হাদামারড গেট।

আরও কিছু জটিল জন্য, রাখুন k=3, এবং প্রতিস্থাপন C অদলবদলের গেটের বর্গমূলের সাথে,

(1000012i200i21200001)
সঙ্গে ω=e±iπ/4 এবং |ψ=(U1U2)(|01±|10)/2

3

আপনি যেমন কোয়ান্টাম "হ্যালো ওয়ার্ল্ড" চান মনে হচ্ছে। এর সবচেয়ে সোজা কোয়ান্টাম সংস্করণটি Hello Worldহ'ল কুইটসের একটি রেজিস্টারে পাঠ্যের একটি বাইনারি এনকোডড সংস্করণ লিখুন । তবে এটির জন্য ~ 100 কুইবিট লাগবে, এবং কোড দৈর্ঘ্যের জন্য আপনার উপরের সীমা থেকে দীর্ঘ হবে।

সুতরাং আসুন লেখার একটি সংক্ষিপ্ত পিস লিখুন। আসুন লিখুন ;), আমাদের দৈর্ঘ্যের 16 স্ট্রিং দরকার need বিশেষত, ASCII এনকোডিং ব্যবহার করে

;)  =  00111011 00101001

QISKit ব্যবহার করে, আপনি নিম্নলিখিত কোডটি ব্যবহার করে এটি করতে চাইবেন।

from qiskit import QuantumProgram
import Qconfig

qp = QuantumProgram()
qp.set_api(Qconfig.APItoken, Qconfig.config["url"]) # set the APIToken and API url

# set up registers and program
qr = qp.create_quantum_register('qr', 16)
cr = qp.create_classical_register('cr', 16)
qc = qp.create_circuit('smiley_writer', [qr], [cr])

# rightmost eight (qu)bits have ')' = 00101001
qc.x(qr[0])
qc.x(qr[3])
qc.x(qr[5])

# second eight (qu)bits have 00111011
# these differ only on the rightmost two bits
qc.x(qr[9])
qc.x(qr[8])
qc.x(qr[11])
qc.x(qr[12])
qc.x(qr[13])

# measure
for j in range(16):
    qc.measure(qr[j], cr[j])

# run and get results
results = qp.execute(["smiley_writer"], backend='ibmqx5', shots=1024)
stats = results.get_counts("smiley_writer")

অবশ্যই, এটি খুব কোয়ান্টাম নয়। সুতরাং আপনি পরিবর্তে দুটি পৃথক ইমোটিকন একটি সুপারপজিশন করতে পারে। সবচেয়ে সহজ উদাহরণ হ'ল সুপারপোজ;) এর সাথে 8), যেহেতু এগুলির জন্য বিট স্ট্রিংগুলি কেবল 8 এবং 9 এর স্তরে পৃথক হয়।

;)  =  00111011 00101001
8)  =  00111000 00101001

সুতরাং আপনি কেবল লাইনগুলি প্রতিস্থাপন করতে পারেন

qc.x(qr[9])
qc.x(qr[8])

উপরের সাথে

qc.h(qr[9]) # create superposition on 9
qc.cx(qr[9],qr[8]) # spread it to 8 with a cnot

Hadamard একটি উপরিপাত সৃষ্টি 0এবং 1এবং cnot একটি উপরিপাত সেটিকে তোলে 00এবং 11দুই qubits উপর। এটি ;)এবং এর জন্য কেবলমাত্র প্রয়োজনীয় সুপারপজিশন 8)

আপনি যদি এর বাস্তব বাস্তবায়ন দেখতে চান তবে এটি QISKit টিউটোরিয়ালটিতে পাওয়া যাবে (সম্পূর্ণ প্রকাশ: এটি আমার লেখা ছিল)।


আমি এই লিঙ্কটির জন্য 404 পাই। আপনি ফাইল অন্য কোথাও সরানো হয়েছে?
ক্লেনিয়াম

টিউটোরিয়ালটি সবেমাত্র আপডেট হয়েছে বলে মনে হচ্ছে। আমি লিঙ্কটি পরিবর্তন করেছি, সুতরাং এটি এখনই কাজ করা উচিত।
জেমস ওয়াটন 15

1

আমি (নিখুঁত) 1-বিট র্যান্ডম নম্বর জেনারেটরের প্রস্তাব দেব would এটি প্রায় তুচ্ছ সহজ:

আপনি সাধারণ প্রাথমিক অবস্থায় একক কুইট দিয়ে শুরু করুন |0। তারপরে আপনি হাদামারদ গেটটি প্রয়োগ করুনH যা সমান সুপারপজিশন উত্পাদন করে |0 এবং |1। পরিশেষে, আপনি 0 বা 1 পেতে প্রতিটি এই 50% সম্ভাব্যতার সাথে পরিমাপ করেন।

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