ভঙ্গুর অবজেক্টের তালিকা মার্জ করা হচ্ছে


19

পটভূমি: চাও জু কিছু সময় আগে নিম্নলিখিত প্রশ্নটি পোস্ট করেছিলেন: " এমন কোনও জ্ঞানের তুলনা বাছাই করা অ্যালগরিদম রয়েছে যেগুলি নেটওয়ার্ক বাছাইয়ের ক্ষেত্রে হ্রাস করে না, যেমন প্রতিটি উপাদানকে বারের সাথে তুলনা করা হয় ?O(logn) " দেখে মনে হচ্ছে আমরা কিছুটা সমস্যার সাথে আটকে আছি; ২০০৯ সালে ভ্যালেন্টিন পোলিশচুকের সাথে একই সমস্যাটি নিয়ে আলোচনা করেছি এবং আমরা কোথাও পাইনি।

কিছু নতুন ধারণা পেতে, আমি সম্ভবত সবচেয়ে সহজ প্রশ্নটি নিয়ে আসার চেষ্টা করেছি যা একই রকমের স্বাদযুক্ত এবং সম্পূর্ণরূপে তুচ্ছ নয়। সুতরাং নিম্নলিখিত প্রশ্ন।


প্রশ্ন: আপনাকে দু'টি বাছাই করা তালিকা দেওয়া হয়েছে, সেগুলির প্রতিটি উপাদান রয়েছে। আপনি কি তালিকাগুলি মার্জ করতে পারবেন যাতে প্রতিটি উপাদানকে কেবল ( 1 ) বারের সাথে তুলনা করা যায় ?nO(1)

স্বাভাবিকভাবেই, আউটপুট একটি অনুসারে সাজানো তালিকা সব রয়েছে হওয়া উচিত উপাদান।2n

[এটি তুচ্ছ হিসাবে প্রমাণিত হয়েছিল, উত্তরটি "না"]


প্রশ্ন 2: আপনাকে দুটি সাজানো তালিকা দেওয়া হবে, সেগুলির প্রতিটি উপাদান রয়েছে। আপনি কি তালিকাগুলি মার্জ করতে পারবেন যাতে প্রতিটি উপাদানকে কেবল ( 1 ) বারের সাথে তুলনা করা হয় , যদি আপনাকে উপাদানের একটি ছোট ভগ্নাংশটি বাতিল করার অনুমতি দেওয়া হয় ?nO(1)

আরও স্পষ্টভাবে, আউটপুটটি একটি সাজানো তালিকা হওয়া উচিত যাতে উপাদান থাকে এবং একটি "ট্র্যাশচ্যান" যাতে টি ( এন ) উপাদান থাকে। আপনি টি ( এন ) মানটি কতটা ছোট করতে পারেন ? পথ টি ( এন ) = তুচ্ছ হয়। টি ( এন ) = এন / 100 এর মতো কিছু সোজা পদ্ধতিতে করণীয় হওয়া উচিত। তবে আপনি টি ( এন ) = ( এন ) পেতে পারেন?2nT(n)T(n)T(n)T(n)=nT(n)=n/100 ?T(n)=o(n)


মন্তব্য:

  • আমরা এখানে তুলনা মডেল ব্যবহার। নির্ধারিত অ্যালগরিদম শুধুমাত্র, আমরা সবচেয়ে খারাপ ক্ষেত্রে গ্যারান্টি আগ্রহী।

  • নোট করুন যে উভয় তালিকার ঠিক উপাদান রয়েছে। আমাদের যদি এন উপাদানগুলির সাথে একটি তালিকা এবং অন্য 1 টি উপাদান সহ তালিকা থাকে তবে উত্তরটি পরিষ্কারভাবে "না"; তবে, উভয় তালিকাগুলি দীর্ঘ হলে মনে হয় যে কেউ "লোড ব্যালেন্সিং" করতে সক্ষম হতে পারে।nn1

  • এবার যে কোনও ধরণের অ্যালগরিদম বৈধ। যদি আপনার অ্যালগরিদম বিল্ডিং ব্লক হিসাবে বাছাই করার নেটওয়ার্কগুলি ব্যবহার করে তবে এটি পুরোপুরি ঠিক আছে।

  • শুরুর পয়েন্টের জন্য, এখানে একটি সাধারণ অ্যালগরিদম যা প্রতিটি উপাদানকে প্রায় 200 বারের সাথে তুলনা করে: কেবলমাত্র মানক মার্জ অ্যালগরিদম ব্যবহার করুন, তবে তালিকার শীর্ষগুলির জন্য কাউন্টারগুলি বজায় রাখুন। একবার আপনি 200 এ পৌঁছানোর পরে, উপাদানটি বাতিল করুন। এখন আপনি যে প্রতিটি উপাদানটি বাতিল করবেন তার জন্য আপনি 200 টি উপাদান সফলভাবে আপনার আউটপুট অ্যারেতে রেখেছেন। সুতরাং আপনি T(n)=n/100


8
আপনি বলেছিলেন যে "যদি আমাদের n টি উপাদানগুলির সাথে একটি তালিকা এবং অন্য 1 টি উপাদান সহ তালিকা থাকে তবে উত্তরটি পরিষ্কারভাবে হ'ল না" " প্রতিটি তালিকায় এন উপাদানগুলির ক্ষেত্রে কি আরও সাধারণ সমস্যা নয়? উদাহরণস্বরূপ, যদি আমরা প্রতিশ্রুতি দিয়েছি যে প্রথম তালিকাগুলি বাদে দ্বিতীয় তালিকার সমস্ত উপাদান প্রথম তালিকার সমস্ত উপাদানগুলির চেয়ে অনেক বড়, তবে এটি কি প্রথম সমস্যার মধ্যে হ্রাস পাবে না?
রবিন কোঠারি

@ রবিন: ঠিক আছে, তাই আমি একটি তুচ্ছ প্রশ্ন তুলতে ব্যর্থ হয়েছি, ধন্যবাদ। আপনার পর্যবেক্ষণটি all ( লগ এন ) কম দেবে বলে মনে হচ্ছে যদি আমরা সমস্ত উপাদানকে সাজানোর জন্য জোর দিয়ে থাকি । আমাকে প্রশ্নটি সামান্য বাড়িয়ে দিন ...Ω(logn)
Jukka Suomela

এবং যদি কেউ প্রশ্ন করে যে প্রশ্ন 2-তে আপাতদৃষ্টিতে অদ্ভুত সংজ্ঞাটির মূল বক্তব্যটি কী: যদি আমরা খুব ছোট করে তুলতে পারি তবে সম্ভবত আমরা মূল সমস্যাটি প্রায় সমাধান করার জন্য মার্জ সাজ্টের মতো কিছু ব্যবহার করতে পারি এবং একটি ক্ষুদ্র ভগ্নাংশ নিয়ে উদ্বেগ প্রকাশ করি ট্র্যাশকোনের উপাদানগুলির পরে। T(n)
Jukka Suomela

উত্তর:


5

না, এই জাতীয় একটি অ্যালগরিদমের অস্তিত্ব থাকতে পারে।

ধরুন উপাদান প্রতি তুলনা অনুমোদিত।t

2t2t+1t+1

nn/2tn/2t

to(n)

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

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