আইটেমগুলি সন্ধানের জন্য তুলনা ভিত্তিক ডেটা কাঠামো


34

সেখানে একটি ডাটা স্ট্রাকচার যে একটি unordered অ্যারে লাগে আইটেম, এ preprocessing সঞ্চালিত হয় কিছু উপাদান: ও উত্তর প্রশ্ন তালিকায়, খারাপ সময় প্রতিটি প্রশ্নের সাথে ?( এন ) এক্স ( লগ এন )nO(n)xO(logn)

আমি সত্যিই মনে করি সেখানে নেই, সুতরাং একটি প্রমাণ যে স্বাগত জানানো হয়।


3
(1) আপনি কেন বলতে পারেন তা আমি জানি না "অবশ্যই আমি প্রত্যাশিত সময়টিকে বিবেচনা করি," কারণ আপনি আপনার প্রশ্নে একেবারেই "প্রত্যাশিত" বক্তব্য রাখেন না। বলার অপেক্ষা রাখে না আগে আরো স্পষ্ট করে আপনার প্রশ্নের রাষ্ট্র করার চেষ্টা করুন (2) অনুগ্রহ করে সংজ্ঞায়িত "অবশ্যই।" "অ hashable।"
Tsuyoshi ইটো

2
(1) আমি দেখছি। ব্যাখ্যা করার জন্য ধন্যবাদ. যদি কেউ জিজ্ঞাসা করে যে "আপনি কি চলমান সময় সম্পর্কে চিন্তা করেন?" তবে উত্তরটি অবশ্যই "অবশ্যই" পাওয়া যাবে। :) :) (২) আমার মনে হয় যে "তালিকার দুটি মানকেই একমাত্র অনুমোদিত কর্ম বলে" আরও সুনির্দিষ্ট কেবল "নন-হ্যাশেবল" হিসাবে উল্লেখ করার চেয়ে আপনি কী প্রশ্নটি সম্পাদনা করতে পারেন যাতে "নন-হাশেবল" এর অর্থ বোঝার জন্য লোকেরা মন্তব্যগুলি পড়তে না পারে?
Tsuyoshi Ito

3
যাইহোক, আপনি যদি এটি প্রমাণ করতে না পারেন তবে কেন আপনি জানেন যে এটি অসম্ভব? যদি এটি কোনও পাঠ্যপুস্তক বা শ্রেণিতে অনুশীলন হয় তবে আপনি কোনও ভুল ওয়েবসাইটে জিজ্ঞাসা করছেন।
Tsuyoshi Ito

6
এটি কি আপনার প্রশ্ন: এমন কোনও ডাটা স্ট্রাকচার যা এন আইটেমের একটি সীমানাবিহীন অ্যারে নেয়, ও (এন) এ প্রিপ্রোসেসিং সম্পাদন করে এবং প্রশ্নের উত্তর দেয়: তালিকাটিতে কিছু উপাদান রয়েছে, প্রতিটি প্রশ্নের জন্য সবচেয়ে খারাপ সময় হে (লগ এন) আছে?
sdcvvc

2
@ ফিলিপ: এটি দেখতে কি সহজ? যদি এটি সত্য হয়, তবে আমি সম্মত হই যে এটি প্রশ্নটি সমাধান করে।
সোসোশি ইতো

উত্তর:


30

এটি অসম্ভব যে একটি প্রমাণ এখানে। মনে করুন আপনি এই জাতীয় ডেটা স্ট্রাকচার তৈরি করতে পারেন। এটি তৈরি করুন। তারপর চয়ন n/logn তালিকা থেকে এলোমেলোভাবে আইটেম যোগ ϵ তাদের প্রতিটি, যেখানে ϵ তালিকায় কোন দুটি আইটেম মধ্যে পার্থক্য চেয়ে ছোট হয়, এবং কিনা ফলে আইটেম কোনো কিনা চেক করতে প্রশ্নের সঞ্চালন তালিকা। আপনি এখনও অবধি O(n) কোয়েরি করেছেন।

আমি দাবি যে তুলনা করেছ কিনা একটি আইটেম যথেষ্ট চাই মূল তালিকায় চেয়ে ছোট বা কোন নতুন আইটেম চেয়ে বড় । ধরুন আপনি বলতে পারবেন না। তারপরে, কারণ এটি তুলনা-ভিত্তিক মডেল, আপনি জানেন না যে একটি খ এর সমান ছিল কিনা , আপনার ডেটা কাঠামোটি কাজ করে এমন অনুমানের বৈপরীত্য।abab

এখন, যেহেতু আপনি যে আইটেমগুলি বেছে নিয়েছেন তা এলোমেলো ছিল, আপনার তুলনাগুলিতে উচ্চ সম্ভাব্যতার সাথে মূল তালিকাটি এন / লগ এনগুলিতে বিভক্ত করার জন্য যথেষ্ট পরিমাণ তথ্য রয়েছে যা প্রতিটি আকারের ( লগ এন ) তালিকা করে । এই তালিকাগুলির প্রত্যেককে বাছাইয়ের মাধ্যমে আপনি একটি এলোমেলোভাবে হে ( এন লগ লগ এন ) -কালীন বাছাই করা অ্যালগরিদমকে কেবলমাত্র তুলনা, একটি বৈপরীত্যের ভিত্তিতে পাবেন।n/lognn/lognO(logn)O(nloglogn)


প্রমাণটি বুঝতে সহায়তা করার জন্য কয়েকটি ইঙ্গিতগুলি (ধরে নিলাম আমি অবশ্যই এটি সঠিকভাবে বুঝতে পেরেছি): আইটেমগুলি ϵ তাদের যুক্ত করার পরে আইটেমগুলিতে পূরণ করা উচিত ; তুলনা মডেল নিশ্চয়তা আপনি কি জানেন মামলার যা একটি এবং একটি ঝুলিতে; এন / লগ এন তালিকায় 'অর্ডার আরোহী' আছেন: কোন উচ্চতর তালিকা প্রতিটি উপাদান কোনো নিম্ন তালিকা প্রতিটি উপাদান বেশী; মূল প্রশ্নের পরে আপনার এলোমেলোভাবে যে আইটেমগুলি বেছে নেওয়া হয়েছে তার চারপাশে তালিকা তৈরি করার জন্য আপনার কাছে পর্যাপ্ত তথ্য রয়েছেbϵababn/logn
অ্যালেক্স টেন ব্রিঙ্ক

(অব্যাহত) নোট করুন যে প্রমাণটি ধরে রাখার জন্য আপনাকে প্রদত্ত সময়ে তালিকাটি স্পষ্টভাবে তৈরি করতে সক্ষম হবে না।
অ্যালেক্স দশ ব্রিংক

আমি এই প্রমাণটি চুপ করে বুঝতে পারি না। চূড়ান্ত অসঙ্গতি "একমাত্র তুলনা উপর ভিত্তি করে অ্যালগরিদম" বন্ধ, কিন্তু আমাদের এলগরিদম প্রথম পদক্ষেপ আমরা যোগ প্রতিটি আইটেমের (আরো, "যেখানে ε তালিকায় কোন দুটি আইটেম মধ্যে পার্থক্য চেয়ে ছোট")। আমাদের আইটেমগুলিতে একটি অ-বিচ্ছিন্ন মোট অর্ডার আছে বলে ধরে নিলে আমরা এখনও কেন আমাদের অ্যালগরিদমকে কেবল তুলনা ভিত্তিক যুক্তিযুক্ত? ϵϵ
আর্টেম কাজনাটচিভ

5
@ আর্টেম: আপনার আসল ইনপুটটিতে উপাদান রয়েছে । তারপরে আপনি একটি নতুন সেট এক্স = এক্স × { 0 , 1 const তৈরি করবেন ; আপনি প্রতিনিধিত্ব করেন একটি মূল এক্স এক্স যেমন ( এক্স , 0 ) এক্স ' এবং একটি পরিবর্তিত এক্স + + ε যেমন ( এক্স , 1 ) এক্স ' । এখন আপনি ব্ল্যাক বক্স অ্যালগরিদম ব্যবহার করুন; অ্যালগরিদম তুলনা উপাদান এক্স 'xXX=X×{0,1}xX(x,0)Xx+ϵ(x,1)XXপরস্পরের সাথে; এই জাতীয় প্রশ্নের উত্তর দিতে, আপনাকে কেবল ধ্রুবক সংখ্যার একে অপরের সাথে তুলনা করতে হবে। সুতরাং অবিচ্ছিন্ন ওভারহেড সহ তুলনা মডেলটিতে সমস্ত কিছু করা উচিত। X
জুলকা সুমেলা

1
@ আর্যভট্ট: তা করে। কি অ্যালগরিদম? O(log2n)
পিটার শোর

24

আমি বিশ্বাস করি যে এখানে ( ) কে -প্রি-প্রসেসিং সহ কোনও ক্যোয়ারির সময় কাঠামোর অসম্ভবতা প্রমাণ করে একটি ভিন্ন প্রমাণ রয়েছে ।O(logkn)O(n)

মনে করুন প্রিপ্রোসেসিংয়ে আপনি তুলনা করেন যা একটি আংশিক ক্রম বাড়ে।O(n)

এখন এটিতে বৃহত্তম এন্টিচেইনের আকার বিবেচনা করুন । যেহেতু এই উপাদান তুলনীয়, আমাদের একটি আছে জন্য নয় হে ( লগ এন ) ক্যোয়ারী অ্যালগরিদম, আমরা থাকতে হবে যে একটি = হে ( লগ এন )AO(logkn)A=O(logkn)

দিলওয়ার্থের উপপাদ্য অনুসারে শৃঙ্খলাবদ্ধ করে এখানে এর আকারের একটি বিভাজন রয়েছে ।A

পার্টিশনের চেইনগুলি নির্ধারণ করতে এখন আমরা অ্যালগরিদমের পরিপূরক করতে পারি। তুলনাগুলির একটি নির্দেশিত গ্রাফ তৈরি করে এবং একটি পুনঃব্যবহারযোগ্য বিশ্লেষণ করে দুটি উপাদান তুলনীয় কিনা তা আমরা নির্ধারণ করতে পারি। এটি কোনও অতিরিক্ত তুলনা ছাড়াই করা যেতে পারে। এখন 'আকার প্রতিটি সম্ভাব্য পার্টিশন ঠিক পাশব বল তা নির্ধারণ করার জন্য চেইন একটি পার্টিশন।A

একবার আমরা চেইন আছে, আমরা তাদের একটি দিতে মার্জ করতে পারবেন তুলনা পুরো তালিকা বাছাইয়ের জন্য অ্যালগরিদম।O(nloglogn)


1
এটি একটি দুর্দান্ত ধারণা। এবং যদি আপনি দেখাতে পারেন যে চেইন পার্টিশনটি অবশ্যই অ্যালগরিদমের সাথে জানা থাকতে পারে তবে আপনি জেনসেন ব্যবহার না করে পুরো ইনপুটটি সাজানোর জন্য অতিরিক্ত O (n লগ ল) এন তুলনা করতে হবে তা দেখানোর জন্য আপনি মার্জোর্ট ব্যবহার করতে পারেন। তবে একটি সমস্যা রয়েছে: প্রিপ্রসেসিং অ্যালগরিদমকে কেন একটি চেইন পার্টিশন বানাতে হবে? হ্যাঁ, একটি চেইন পার্টিশন থাকা আবশ্যক, তবে এটি অ্যালগরিদমের সাথে পরিচিত হওয়ার থেকে আলাদা।
ডেভিড এপস্টেইন

8
ঠিক আছে, আমি এখন এই প্রমাণ বিশ্বাস করি। এবং এটা আরও জোরালোভাবে দেখায় যে polylog ক্যোয়ারী টাইমে অর্জন করা আপনি একটি যুত মধ্যে যে তুলনা একটি নম্বর ব্যবহার করতে হবে বাছাই। খুশী হলাম। যাইহোক, চেইন পার্টিশনটি ব্রুটি ফোর্স অনুসন্ধানের প্রয়োজনের চেয়ে ইতিমধ্যে সম্পাদিত তুলনাগুলির সেট থেকে বহু সময়ে পাওয়া যায়, তবে এটি আপনার যুক্তির পক্ষে কোনও পার্থক্য করে না। O(nloglogn)
ডেভিড এপস্টেস্টিন

6
প্রমাণগুলি আসলে দেখায় যে আপনার অবশ্যই প্রতিটি প্রশ্নের জন্য প্রিপ্রোসেসিং বা Ω ( n ) থাকতে হবে have অবশ্যই দুটোই শক্ত। এটি দেখায় যে বাইনারি অনুসন্ধান এবং লিনিয়ার অনুসন্ধান হ'ল "আকর্ষণীয়" অনুসন্ধান অ্যালগরিদম (অন্তত শাস্ত্রীয় বিশ্বে)। Ω(nlogn)Ω(n)
যুবাল ফিল্মাস

1
@ ইউভাল: সম্ভবত আপনার এই পর্যবেক্ষণটি একটি আসল উত্তর হিসাবে লেখা উচিত, কারণ আমার কাছে মনে হয়েছে যে উত্তরগুলির প্রমাণগুলি থেকে উপরের ফলাফলটি পেতে আপনাকে একটি মাঝারি পরিমাণে কাজ করতে হবে।
পিটার শোর

1
@Yuval: thinking about the proofs, I only see that you must have either Ω(nlogn) preprocessing or Ω(n1ϵ) query time for all ϵ. It's possible to have o(nlogn) preprocessing time and O(n/logn) query time. One can divide the list into logn lists of size n/logn each in time বারবার মিডিয়ান-ফাইন্ডিং ব্যবহার করে। θ(nloglogn)
পিটার শর

0

পিটার শোরের উত্তর হিসাবে নোট হিসাবে, তুলনা-ভিত্তিক মডেলটিতে সদস্যপদ প্রত্যাখ্যান করার জন্য, আমাদের কীভাবে উপাদানটি প্রতিটি সদস্যের সাথে তুলনা করে তা জানতে হবে। সুতরাং, র্যান্ডম ক্যোয়ারী ব্যবহার করা (কোয়েরি ননমেম্বারের চেয়ে কম সদস্যের সংখ্যা এলোমেলো), আমরা এন সাওর্টেড মানগুলির সাথে সম্পর্কিত Θ ( n লগ কে ) তথ্য অর্জন করি । অতএব, কিছু ধ্রুবক জন্য > 0 ব্যবহার k<nΘ(nlogk)nc>0cnlogkcnlogk/kk=k/logkn/lognO(nlogk)=O(nlogk)O(n/k)

In particular, using O(n) preprocessing, we cannot have o(n) query cost. Also, o(nlogn) preprocessing corresponds to k in O(nε) for every ε>0 and thus Ω(n1ε) query cost.

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