গ্রোভারের অ্যালগরিদম: তালিকাটি কোথায়?


15

গ্রোভার এর এলগরিদম অন্যান্য বিষয়ের মধ্যে ব্যবহার করা হয়, একটি আইটেম অনুসন্ধান করতে y আইটেম একটি unordered তালিকায় [x0,x1,...,xn1] দৈর্ঘ্যের n । যদিও এই বিষয়টি সম্পর্কে এখানে প্রচুর প্রশ্ন থাকলেও আমি এখনও বিষয়টিটি মিস করছি।

ক্লাসিকাল পদ্ধতিতে একটি তালিকায় অনুসন্ধান করা হচ্ছে

এমনিতে আমি অনুসন্ধান ফাংশন ডিজাইন হবে এই ভাবে

search([x0,x1,...,xn1],y)=iNsuch that xi=y
তাই আমি তালিকাটি এবং ইনপুট হিসাবে আকাঙ্ক্ষিত আইটেমটি দেই এবং আমি আউটপুট হিসাবে তালিকার আইটেমের অবস্থানটি পাই। আমি বুঝেছি যে সম্পর্কে তথ্যy ওরাকল গেট দিয়ে অ্যালগরিদম এমবেড করা হয়O , তাই আমাদের ফাংশন হয়ে
searchy([x1,x2,...,xn])=iNsuch that xi=y
আসুন একটি ব্যবহারিক উদাহরণ তৈরি করি। Spades এর টেক্কা অনুসন্ধানের বিবেচনা করুন1 A থেকে 8 তাসের ক্রমানুসারেমান 52-কার্ড ডেক:

বদলানো ডেক

8 দৈর্ঘ্যের তালিকাটি হ'ল [x0=J, x1=10, x2=4, x3=Q, x4=3, x5=1, x6=6, x7=6]

ওয়ান্টেড এলিমেন্টটি x5 । আমি প্রাপ্ত উচিত search(cards)=5 । প্রতিটি কার্ড দিয়ে এনকোড করা যেতে পারে log252=6 বিট, তালিকা আছে 8 তাই আমরা প্রয়োজন উপাদানের 6×8=48 বিট তালিকা সঙ্কেতাক্ষরে লিখা। এই ক্ষেত্রে, ওরাকল O ফাংশনটি কার্যকর করবে:

f(x)={1,x=10,otherwise

যাইহোক, গ্রোভারের অ্যালগরিদমের ইনপুটটি 48 কুইবারের রাজ্য নয় ।

(এনবি: বদলানো ডেকের চিত্রটি এখান থেকে নেওয়া হয়েছে )

গ্রোভার এবং এর ওরাকল

(। যেমন বেশ কিছু সূত্র এখানে - গ্রাফিক্যালি ব্যাখ্যা): ইনপুট একটি রাষ্ট্র সার্চ স্পেস থেকে নেওয়া হয় বলে যে আলগোরিদিম ইনপুট ভিন্ন S={0,1,2,...,N}={0,1,2,...,7} যেখানে N হল তালিকার উপাদানগুলির সংখ্যা। প্রতিটি সংখ্যা তালিকার একটি উপাদানের অবস্থানের সাথে মিলে যায়।

ইনপুট search() এখন একটি হল log28=3 qubit ভেক্টর |ψ , সার্চ স্পেস সব আইটেম একটি উপরিপাত হওয়া আবশ্যক যা S

আমরা জানি

  • |03qubits=|000J সাথে মিল ;
  • |13qubits=|001 সাথে সঙ্গতিপূর্ণ10 ;
  • |23qubits=|010 সাথে সঙ্গতিপূর্ণ4 ;
  • |53qubits=|101 অনুরূপ1 যা চেয়েছিলেন উপাদান;
  • এবং তাই ...

এই ক্ষেত্রে আমরা আছে

search(|ψ)=|53qubits
কিন্তু এই ক্ষেত্রে, আমাদের ওরাকল ফাংশন বাস্তবায়ন করতে হবে
f(|ψ)={1,|ψ=|53qubits0,otherwise

ওরাকল নির্মাণের জানাতে চাই যে, আমাদের প্রয়োজন অবস্থান 5 বিন্দু অ্যালগরিদম চালানো যদি আমরা ইতিমধ্যে অর্ডার ওরাকল গড়ে তুলতে উপাদান অনুসন্ধান করেছেন এর এ কি?


গ্রোভারের অ্যালগরিদমের সুবিধা বুঝতে আমারও অসুবিধা হচ্ছে। ধরুন আমি তালিকায় এন আইটেম আছে। ওরাকল-এর প্রতিটি কলে, এটি সমস্ত এন সম্ভাবনার মূল্যায়ন করেছিল? এমনকি যদি মূল্যায়ন খুব দ্রুত হয় তবে আমাদের যদি এখনও সমস্ত কনফিগারেশনের মাধ্যমে পুনরাবৃত্তি করতে হয় তবে ওরাকল মূল্যায়নের জটিলতা হ'ল (এন)। সুতরাং গ্রোভারের অ্যালগরিদম বোবা অনুসন্ধানের চেয়ে দ্রুত বলে মনে হচ্ছে না। এটা কি সঠিক?
সানপরিথ মারুকাতাত

@ স্যানপরিথিমারুকাতাত এটি সঠিক নয়। আপনার তালিকার আইটেমগুলি অনুসন্ধানের সাথে জড়িত রাজ্যের সুপারপজিশনের শর্তাদি। ওরাকল যখন এই রাজ্যে পরিচালনা করে, তখন এটি একক অপারেশন হিসাবে গণ্য হয়। আপনার সুপারপজিশনের অনুসন্ধানের শব্দটিকে চিহ্নিত করার জন্য ওরাকলের ক্ষমতা গ্রোভারের অন্তর্দৃষ্টিটির একটি মৌলিক অংশ। গ্রোভারের অ্যালগরিদম বোঝার জন্য, আমি আপনাকে প্রথমে বোঝার পরামর্শ দিচ্ছি যে কাঙ্ক্ষিত রাজ্যের এই চিহ্নিতকরণটি কীভাবে ঘটে। এরপরে, রাষ্ট্রের ভূমিকা বুঝতে ভুলবেন না ওরাকলে। |
আর চোপিন

যদি আপনি এটি বুঝতে পারেন, তবে আপনার সেই অপারেটরটি পড়া উচিত যা সুপারপজিশনে পছন্দসই পদটির প্রশস্ততা বাড়িয়ে তুলতে সক্ষম হয় এবং একই সাথে সুপারপজিশনের অনাকাঙ্ক্ষিত পদগুলির প্রশস্ততা হ্রাস করে। আমার কাছে গ্রোভারের কাছে যাওয়ার সহজতম উপায় হ'ল বিপরীত-গড়-অপারেটরটি দেখা। (কিছু লোক জ্যামিতিক দৃষ্টিভঙ্গি নিয়েছেন তবে আমি এটি পরিষ্কার হিসাবে পাই না))
আর। চোপিন

উত্তর:


10

যদি তালিকায় আপনার 8 টি আইটেম থাকে (যেমন আপনার কার্ডের উদাহরণে) তবে ওরাকলের ইনপুটটি 3 (কো) বিট হয়। ডেকে কার্ডের সংখ্যা (52) অপ্রাসঙ্গিক, আপনার 8 টি কার্ড এনকোড করতে কেবল 3 বিট লাগবে।

আপনি ভাবতে পারেন যে আপনি যে কার্ডটি অনুসন্ধান করছেন তার তালিকায় 3 বিট অবস্থানটি এনকোড করে; তাহলে আপনি অবস্থানটি জানেন না, তবে ওরাকল জানেন knows সুতরাং আপনি যদি কোদালের টেক্কাটি সন্ধান করছেন, তবে অরাকল জানে যে কোদালগুলির টেক্কাটি ষষ্ঠ কার্ড (বা শূন্য থেকে 5 তম গণনা) এবং f ( x ) = { 1 , x = 5, বা বাইনারি ফাংশন প্রয়োগ করে 101 ' 0 , অন্যথায়

f(x)={1,if x = 5, or binary '101'0,otherwise

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


হ্যাঁ দুঃখিত, 6 টি পূর্ববর্তী সম্পাদনা থেকে
এসেছিল

2
আপনার উত্তর করার জন্য আপনাকে ধন্যবাদ। আমি ভুল লেখা ঠিক করেছিলাম। অরগলিকটি তৈরি করার জন্য যদি অনুসন্ধানের উপাদানটির অবস্থান জানতে আমার প্রয়োজন হয় তবে অ্যালগরিদম কার্যকর করার বিষয়টি কী?
incud

1
@ ইনকুড প্রকৃতপক্ষে এটি কোনও মানে করে না। আমি উত্তর আপডেট করেছি।
kldg

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

4

এক্সএক্সএর সাথে মিলে যায় এবং তারপরে সেই কার্ডটি চিহ্নিত কার্ড কিনা। ধারণাটি হ'ল প্রতিবার যখন আপনি ওরাকলকে কল করবেন, এটি একবারে এই প্রক্রিয়াটির মধ্য দিয়ে যায়। সামগ্রিকভাবে, আপনি ফাংশনটি কয়েকবার মূল্যায়ন করেন যা আপনি ওরাকলকে কল করার সময়ের সমান। যে কোনও অনুসন্ধান অ্যালগরিদমের উদ্দেশ্য হ'ল সম্ভব ওরাকলকে যতবার সম্ভব কল করা।

এক্সএক্স

আরও বাস্তবসম্মত ব্যবহারের দৃশ্যের তুলনায় আপনার উদাহরণের মূল পার্থক্যগুলি হ'ল:

  • অনুসন্ধানের স্থানটি সাধারণত বিশাল massive সমস্ত মানকে পূর্বাভাস দেওয়ার কোনও বাস্তব সম্ভাবনা নেই। প্রকৃতপক্ষে, আমরা একেবারে এড়াতে চাইছি।

  • (এক্স)এক্স

এক্সY=(এক্স)Y=1এক্স(এক্স) হয় 'ইনপুট এক্স0, চিহ্নিত এন্ট্রি? ', এটি যে এটি করে তা প্রকৃত গণনা নয়।


2

প্রশ্নটি শেষ পর্যন্ত: "যদি আমরা ইতিমধ্যে ওরাকল তৈরির জন্য উপাদানটির সন্ধান করে থাকি তবে অ্যালগরিদম কার্যকর করার মূল বিষয়টি কী?"

কেউ যদি ওরাকলটিকে পূর্বনির্মাণ করে, তবে ওরাকলটি ব্যবহার করা ব্যক্তি নাও হতে পারে।

গ্রোভারের অ্যালগরিদমের জন্য ওরাকলকে আরও বেশি বার জিজ্ঞাসা করা উচিত তালিকার আকার। স্বাভাবিকভাবেই আমরা প্রাসঙ্গিক ডাটাবেস অনুসন্ধানের আশা করতে পারি না, যেমনটির পূর্বে প্রস্তাবিত যার বিরুদ্ধে আমি খ্যাতির অভাবের জন্য মন্তব্য করতে পারি না, 5 মিলিয়ন কী আমাদের যে সামগ্রীটি চাইবে তা ফিরিয়ে দেবে যদি আমাদের সামগ্রীতে এই 5 মিলিয়ন কী ব্যবহার করে না, তবে বলে 9 মিলিয়নতম কী, যা আমাদের নমুনায় থাকবে না। গ্রোভারের অ্যালগরিদম কীভাবে তা করে?

আমরা ওরাকলকে জিজ্ঞাসা করি: এরই মধ্যে যে প্রশ্নটি রয়েছে তার উত্তর ইতিমধ্যে এটি কী? এমনকি ম্যাটিউস এবং ওমর রানটাইম চলাকালীন "ওরাকল-ফর-এ-নির্দিষ্ট-বর্ণমালা-চিহ্ন" জিজ্ঞাসা করতেন, ইতিমধ্যে সংকলিত স্ট্রিংয়ে এর প্রতীকটির অবস্থান (গুলি) কী? ওরাকলটি কেবল একটি পরামর্শের পরে আমাদের প্রশ্নের উত্তর দেবে, তবে এই গল্পে এটি উদাহরণস্বরূপ কেবল বাইনারি স্ট্রিং হিসাবে উত্তরটি লিখতে পারে না এবং এটি আমাদের কাছে একটি শাস্ত্রীয় যোগাযোগের চ্যানেলে প্রেরণ করতে পারে না। এটি এর উত্তরটি আঁকতে এটি আমাদের জন্য একটি সুপারপজিশনে উত্তর লুকিয়ে রাখবে।

আমি অভিনবতা বা রূপকটিকে এই পরবর্তী কিছুটাতে পালাতে দিয়েছি: আমরা প্রথমবারের মতো উত্তরটি বেশ শুনি না, এবং ওরাকল কী বলেছে তা নিশ্চিত না হওয়া পর্যন্ত আমরা ওরাকলকে একই উত্তরটি বারবার পুনরাবৃত্তি করতে বলব, আমরা যদি খুব বেশি বার জিজ্ঞাসা করি তবে আমরা প্রসারণ প্রক্রিয়াটিতে ভুল তথ্য থেকে ভুল হওয়া শুরু করি।


2

আপনার প্রদত্ত ওরাকল দেওয়া, অনুসন্ধানটি সত্যই অর্থহীন। যাইহোক, এই ওরাকল গ্রোভারের অ্যালগরিদমের বিন্দুটি মিস করে কারণ কার্ডের ডেকে একটি কার্ড অনুসন্ধান করা কোনও কাঠামোগত অনুসন্ধান নয় কারণ আপনি যেমন বলেছিলেন, আপনি ইতিমধ্যে আদেশটি জানেন know কিন্তু, আপনার অনুসন্ধান কাঠামোগত হয়। এই ওরাকলটি ব্যবহার করার কারণটি হ'ল এটি দেখায় যে গ্রোভারের কোনও ওরাকল নিয়ে আলোচনা না করে কীভাবে প্রয়োগ করা যেতে পারে যা গ্রোভারের উপযোগী করে তোলে কারণ এই ধরনের ওরাকল মূল্যবানের চেয়ে জটিল হবে complicated অতএব গ্রোভারের উপযোগিতা প্রদর্শনের জন্য আরও ভাল ওরাকল কিছু হতে পারে:

(এক্স)={1,এক্স[0,...,3]+ +এক্স[4,...,7]=10100,অন্যভাবে

এই ওরাকলটি যা বোঝায় তা হল আপনার একটি 8-কুইট অনুসন্ধান রয়েছে যেখানে আপনি প্রথম চারটি কুইবিট নিয়ে যান এবং তাদের দ্বিতীয় চারটি কুইবিটে যুক্ত করুন এবং এমটি ফ্লিপ করুন যদি সংযোজন 10 (1010 বাইনারি) করে তোলে। এই ওরাকল এবং আপনি যে সরবরাহ করেছেন তার মধ্যে পার্থক্য হ'ল এই ওরাকলটি একটি প্যাটার্ন পরীক্ষা করে (অপারেণ্ডগুলি 10 যুক্ত করে) তবে আপনার সমতা পরীক্ষা করে (এটি সূচক 5)। এই ওরাকলটি তৈরি করা অনেক বেশি কঠিন তবে এটি গ্রোভারের সত্যিকারের শক্তিটি ব্যবহার করে, যা প্রকৃতপক্ষে, একটি ব্রুট-ফোর্স অনুসন্ধান যেখানে আপনার ওরাকল অনুসন্ধানের স্থানটি নির্ধারণ করে।

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