উপাদান সমস্যার জন্য সময়-স্থান ট্রেডঅফ off


14

এখানে একটি সুপরিচিত সমস্যা।

ধনাত্মক পূর্ণসংখ্যার একটি অ্যারে দেওয়া, বিন্যাসে A[1n]ক্ষুদ্রতম ধনাত্মক পূর্ণসংখ্যা আউটপুট দেয়।

সমস্যাটি O(n) স্থান এবং সময়ে সমাধান করা যেতে পারে : অ্যারেটি পড়ুন, O(n) স্পেসে ট্র্যাক রাখুন 1,2,,n+1 ঘটেছে, ক্ষুদ্রতম উপাদানের জন্য স্ক্যান করুন।

আমি লক্ষ্য করেছি যে আপনি সময়ের জন্য স্থান বাণিজ্য করতে পারেন। আপনার যদি O(nk)কেবল মেমরি, আপনিkরাউন্ডেএটি করতে পারেনএবং সময় পেতে পারেন। একটি বিশেষ ক্ষেত্রে, স্পষ্টত ধ্রুবক-স্থান চতুর্ভুজ-সময় অ্যালগরিদম আছে।O(kn)

আমার প্রশ্নটি হ'ল:

এই অনুকূল ট্রেড বন্ধ হয়, অর্থাত্ timespace=Ω(n2) ? সাধারণভাবে, কেউ এই জাতীয় সীমানা কীভাবে প্রমাণ করে?

হে (1) এ সীমাবদ্ধ পাটিগণিত এবং এ্যান্ডারে এলোমেলো অ্যাক্সেস সহ র‌্যাম মডেল ধরে নিন।

এই সমস্যার জন্য অনুপ্রেরণা: ওয়ান-টেপ মডেলের প্যালিনড্রোমগুলির জন্য সময়-স্থান ট্রেডঅফ (উদাহরণস্বরূপ, এখানে দেখুন )।


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

আমি ধরে নিই ইনপুট কেবল পঠনযোগ্য। (যদি এটি না হয় তবে সমস্যাটি সর্বোত্তমভাবে সময় / ( 1 ) স্পেসে সমাধান করা যেতে পারে : ইনপুট 2 দ্বারা O(n)O(1)O(n)/O(n)
গুণান

ধ্রুব স্পেস অ্যালগরিদম কি? দেখে মনে হচ্ছে আপনার এন 2 ভার্সনের জন্য স্পেসের দরকার হবে যা আমার কাছে "স্পষ্ট"lognn2
জোদরপ

এই মডেলটিতে, শব্দ-আকারের পূর্ণসংখ্যাগুলি ; যদি এটি আরও সুবিধাজনক হয় তবে আপনি প্রশ্নের যে কোনও রূপের সময় স্পেস = Ω ( এন 2) দিয়ে উত্তর দিতে পারেনO(1)কিছু ধ্রুবককেtimespace=Ω(n2logkn)k
sdcvvc

@ এসডিসিভিভিসি, আমি আপনার অ্যালগরিদম বুঝতে পারি না , আপনি কি এটি আরও কিছুটা বর্ণনা করবেন? (কেবলমাত্র নোট করুন যে বিটগুলিতে পড়তে O ( লগ এন ) লাগে )। O(n)/O(1)O(logn)

উত্তর:


2

এটি O(nlogn) শব্দ ক্রিয়াকলাপ এবং O(1) মেমরির শব্দগুলিতে (যথাক্রমে O(nlog2n) সময় এবং O(logn) মেমরি বিট-লেভেল র‌্যাম মডেলের) এ করা যেতে পারে। প্রকৃতপক্ষে, সমাধানটি নিম্নলিখিত পর্যবেক্ষণের ভিত্তিতে তৈরি হবে।

বলুন আছে n0 এমনকি n1 সীমার মধ্যে বিজোড় সংখ্যা [1,n+1] (তাই n0n1 এবং n0+n1=n+1 )। তারপরে b{0,1} যেমন ইনপুটটিতে প্যারিটি বি সহ সর্বাধিক nb1 মান রয়েছে । আসলে, অন্যথায় কমপক্ষে n 0 আছে 0bn0এমনকি এবং ইনপুটটিতে কমপক্ষে n1 স্বতন্ত্র মানগুলি বোঝায় যে n0+n1=n+1 কমপক্ষে n 0 + n 1 = n + 1 মান রয়েছে, দ্বন্দ্ব রয়েছে (সেগুলির মধ্যে কেবল n আছে )। এর অর্থ হ'ল আমরা কেবলমাত্র বিজোড় বা এমনকি সংখ্যার মধ্যে হারিয়ে যাওয়া সংখ্যার সন্ধান চালিয়ে যেতে পারি। একই অ্যালগরিদম বাইনারি স্বরলিপি উচ্চতর বিট এছাড়াও প্রয়োগ করা যেতে পারে।

সুতরাং আমাদের অ্যালগরিদম এর মতো দেখাবে:

  1. ধরুন যে আমরা ইতিমধ্যে এখন বাকি মডিউল 2 বি এর সাথে আর [ 0 , 2 বি ) সমান ইনপুটটিতে কেবলমাত্র x মানগুলি পেয়েছি তবে কমপক্ষে কমপক্ষে x + 1 সংখ্যা রয়েছে [ 1 , n + 1 ] যা বাকি মডুলো 2 বি (শুরুতে আমরা জানি যে বি = 0 , আর = 0 এর জন্য নিশ্চিত )।2br[0,2b)x+1[1,n+1]r2bb=0,r=0

  2. বলুন আছে x0 বাকি ইনপুট মান r মডিউল 2b+1 এবং x1 বাকি ইনপুট মান r+2b মডিউল 2b+1 (আমরা ইনপুট মাধ্যমে একটি একক পাস এই সংখ্যা জানতে পারেন)। স্পষ্টতই, x0+x1=x । তদতিরিক্ত, কারণ বাকি আর মডুলো 2 বি এর সাথে ইনপুটটিতে কমপক্ষে x+1 নম্বর রয়েছে , কমপক্ষে জোড়াটি যুক্ত করুনr2b(r,b+1),(r+2b,b+1) পদক্ষেপ1 এর প্রয়োজনীয়তা পূরণ করে।

  3. যখন আমি অনুপস্থিত সংখ্যা পাওয়া যায় 2bn+1 সীমার মধ্যে শুধুমাত্র একটি সংখ্যা থাকে: [1,n+1] থাকতে পারে বাকি r মডিউল 2b ( r নিজেই যদি তা সীমার মধ্যে থাকে), তাই এ ইনপুটটিতে সর্বাধিক শূন্য মানগুলির মধ্যে এই জাতীয় অবশিষ্ট রয়েছে। সুতরাং r সত্যিই অনুপস্থিত।

স্পষ্টতই, O(logn) পদক্ষেপগুলিতে অ্যালগোরিদম থামে , তাদের প্রত্যেকের জন্য O(n) সময় প্রয়োজন (ইনপুট অ্যারের উপরে একক পাস)। তদুপরি, কেবল O(1) মেমরির শব্দ প্রয়োজন।


আমি প্রশ্ন এই সময়ের পরে :) উত্তর দিলেন দেখতে খুশি
sdcvvc

1

যদি আমি আপনার সংজ্ঞাগুলি বুঝতে পারি তবে এটি ধ্রুবক স্পেস সহ রৈখিক সময়ে করা যেতে পারে। এটি অবশ্যই সর্বনিম্ন বাউন্ড, কারণ আমাদের কমপক্ষে পুরো ইনপুটটি পড়তে হবে।

উত্তর দেওয়া এই প্রশ্নের সন্তুষ্ট।

এটি কম সময় বা স্থান দিয়ে চালানো অসম্ভব এবং অতিরিক্ত সময় বা স্থান যুক্ত করা অকেজো, সুতরাং এখানে স্থান-সময় ট্রেড অফ নেই। (সেই পর্যবেক্ষণ করুন, সুতরাং আপনি যে ট্রেড অফ দেখেছেন তা কোনও ক্ষেত্রেই তাত্পর্যপূর্ণ নয় doesn't)n=O(n/k)

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

tsf,gLMf(t,s)g(t,s)

অজানা, এবং একটি শক্তিশালী উত্তর অনেকগুলি মুক্ত সমস্যা সমাধান করবে (সবচেয়ে উল্লেখযোগ্যভাবে এসসি সম্পর্কে), বোঝায় যে কোনও সহজ সমাধান নেই।


nn+1

nkn/kk=n/s then we run in nn/sn=sn time. So I think this proves what you want.

The difficulty is in showing that each time through we get only k bits. If you assume that our only legal operation is =, then we're good. However, if you allow more complex operations, then you'll be able to get more information.


3
The question you linked assumes that each number appears at most once. I do not make this assumption, so the solution does not apply. Thank you for second link.
sdcvvc

@sdcvvc: My mistake, I assumed you were using the version I'm familiar with. I don't have a complete answer, but it's too long for a comment - hopefully my edit is useful.
Xodarap

5
I don't buy your argument after "EDIT". Even if you can only collect k bits in a single pass, that's enough in principle to distinguish 2k possible outputs. So this argument can only imply a lower bound of n/2k passes, not n/k.
JeffE
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.