গ্রোভারের অ্যালগরিদমের জন্য ওরাকল নির্মাণ


16

মাইক এবং আইকের "কোয়ান্টাম গণনা এবং কোয়ান্টাম তথ্য" তে গ্রোভারের অ্যালগরিদমটি দুর্দান্তভাবে ব্যাখ্যা করা হয়েছে। তবে গ্রোভারের অ্যালগরিদমের জন্য বইটিতে এবং সমস্ত ব্যাখ্যা আমি অনলাইনে খুঁজে পেয়েছি, গ্রোভারের ওরাকল কীভাবে নির্মিত তা সম্পর্কে কোনও উল্লেখ নেই বলে মনে হয়, যদি না আমরা ইতিমধ্যে না জানি যে আমরা কোন রাজ্যের সন্ধান করছি, উদ্দেশ্যটিকে পরাস্ত করে অ্যালগরিদম। বিশেষত, আমার প্রশ্নটি হ'ল: কিছু f (x) দেওয়া যেমন কিছু x মান, f (x) = 1 এর জন্য দেওয়া হয় তবে অন্য সকলের জন্য, f (x) = 0, কীভাবে কোনও একটি ওরাকল তৈরি করে যা আমাদের কাছ থেকে পাবেন আমাদের প্রাথমিক, স্বেচ্ছাসেবক অবস্থা | x> | y> থেকে | x> | y + f (x)>? যতটা সম্ভব স্পষ্টত বিশদ (সম্ভবত একটি উদাহরণ?) প্রশংসিত হবে। হাদামারড, পাওলি বা অন্যান্য স্ট্যান্ডার্ড কোয়ান্টাম গেট দিয়ে যেকোন স্বেচ্ছাসেবী কাজের জন্য যদি এমন নির্মাণ সম্ভব হয়,


"এখানে গ্রোভারের ওরাকল কীভাবে নির্মিত হবে তার কোনও উল্লেখ করা যায় না, যদি না আমরা ইতিমধ্যে জানতে পারি যে কোন রাজ্যের মধ্যে আমরা আলগোরিদমের উদ্দেশ্যকে পরাস্ত করছি এটিই আমরা অনুসন্ধান করছি।" ... "গ্রোভারের ওরাকল" সমস্যাটি সমাধান করা। আপনি এটি নির্মাণ করবেন না। আপনাকে এটি দেওয়া হয়েছে (এতে ওরাকল অ্যাক্সেস) এবং মানটি উদ্ঘাটন করতে গণনা সম্পাদন করতে বলা হয়েছে। যদি এটি সাহায্য করে, ভান করুন যে আমি ওরাকলটি তৈরি করি এবং তারপরে আপনাকে সমস্যার সমাধান করতে বলি । (এছাড়াও, দ্রষ্টব্য যে আইটেমগুলির একটি ডাটাবেস পড়া / লেখা / প্রস্তুত করা গ্রোভারের running চালানোর চেয়ে বেশি সময় নেয় N টাইম অ্যালগরিদম।)N
ড্যানিয়েল আপন

2
তবে কী যদি ওরাকল দেওয়ার পরিবর্তে আমাদের কিছু চ (এক্স) দেওয়া হয়? কল্পনা করুন যে আমরা একটি 3-SAT সমস্যা সমাধান করছি এবং সমাধানটির গতিপথ সরবরাহ করতে গ্রোভারগুলি ব্যবহার করতে চাই। আমরা প্রশ্নে f (x) জানি (3-স্যাট সত্যের ধারাগুলি), তবে 3-স্যাট-এ প্লাগ ইন করার সময় কোন বিট স্ট্রিং এক্স একটি সত্য ফলাফল দেবে তা অগত্যা জানি না। সঠিক বিট স্ট্রিংটি খুঁজে পেতে 3-SAT ফাংশন থেকে কোনও ওরাকল তৈরির উপায় নেই? যদি তা না থাকে এবং আপনার পরামর্শ অনুসারে এটি অন্য কারও দ্বারা সরবরাহ করা হবে, গ্রোভারের অ্যালগরিদম বরং কৃত্রিম বলে মনে হচ্ছে, এটি আপনাকে দেওয়া অনুশীলন।
উইল

উত্তর:


20

ওরাকলটি মূলত আপনি যে সন্তোষজনক সমাধানের জন্য অনুসন্ধান করতে চান সেই প্রাকটিকের কেবলমাত্র একটি বাস্তবায়ন।

উদাহরণস্বরূপ, ধরুন আপনার কাছে 3-sat সমস্যা রয়েছে:

(¬x1 ∨ ¬x3 ∨ ¬x4) ∧
    (x2 ∨ x3 ∨ ¬x4) ∧
    (x1 ∨ ¬x2 ∨ x4) ∧
    (x1 ∨ x3 ∨ x4) ∧
    (¬x1 ∨ x2 ∨ ¬x3)

অথবা, টেবিল আকারে প্রতিটি সারিতে 3-ধারা রয়েছে, x এর অর্থ "এই ভেরিয়েবল মিথ্যা", o এর অর্থ "এই পরিবর্তনশীল সত্য" এবং স্থানটির অর্থ "ধারাটিতে নয়":

1 2 3 4
-------
x   x x
  o o x
o x   o
x o x

এখন একটি সার্কিট তৈরি করুন যা ইনপুটটি কোনও সমাধান হিসাবে এটির হিসাব করে:

সমাধান পরীক্ষক

এখন, আপনার সার্কিটটিকে ওরাকলে পরিণত করার জন্য, জেড গেট দিয়ে আউটপুট বিটটি চাপুন এবং আপনার তৈরি কোনও আবর্জনা আবদ্ধ করবেন না (যেমন বিপরীতে ক্রমাগত সার্কিটটি চালান):

ওরাকল সার্কিট

এখানেই শেষ এটা পেতে ওখানে যাও. ভবিষ্যদ্বাণীটি গণনা করুন, ফলাফলকে একটি জেড দিয়ে আঘাত করুন, প্রেডিকেটটিকে অসম্পূর্ণ করুন। এটি একটি ওরাকল।

ওরাকল পদক্ষেপের সাথে ছড়িয়ে পড়া পদক্ষেপগুলি সনাক্ত করুন এবং আপনি নিজেকে একটি গ্রোভার সন্ধান পেয়েছেন :

গ্রোয়ার অনুসন্ধান

... যদিও আপনার সম্ভবত কম সমাধানের সাথে একটি উদাহরণ বেছে নেওয়া উচিত, সুতরাং অগ্রগতি ধীরে ধীরে হয় (আমার উদাহরণ হিসাবে প্রতি পদে 90 ডিগ্রির বেশি দিয়ে স্টার্ট-স্টেট-সলিউশন-রাজ্য বিমানটি বরাবর ঘোরার পরিবর্তে)।


ধন্যবাদ, এটি অত্যন্ত সহায়ক ছিল। অবিশ্বাস্যরূপে পরিষ্কার, আমি জিজ্ঞাসিত সমস্ত কিছুর উত্তর দিয়েছি (এবং এমনকি সাধারণ কোয়ান্টাম গেটগুলিও ব্যবহার করেছেন!) আপনার শুরু করার সমস্ত কুইটগুলি হাদামারদ গেটের সাথে কেবলমাত্র 0-এর পরিবর্তে সুপারপজিশনে রাখার আগে | 1> রাজ্যে পরিবর্তন করার সিদ্ধান্ত নেওয়ার কোনও কারণ আছে কি? > হাডামার্ডসের মাধ্যমে রাষ্ট্রীয় কবিট (মানে কি এর কোনও সুবিধা আছে)? এছাড়াও, আপনার ছড়িয়ে পড়া পদক্ষেপের জন্য এটি কী অপারেশন? নিয়ন্ত্রণ করা এক্স এর মত দেখাচ্ছে তবে আপনি কি নিয়ন্ত্রণ হিসাবে> 1> 's বা | 0>' গুলি ব্যবহার করছেন?
উইল

(12|012|1)n

চমত্কার উত্তর, এবং algassert.com/quirk লিঙ্কের জন্য ধন্যবাদ !
ফ্রিডেরিক গ্রোহানস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.