সর্বাধিক স্থানান্তরিত সন্ধানের জন্য লিনিয়ার সময় অ্যালগরিদম


11

ধরে নিন যে আমাদের একটি অ্যারে A[1..n] নননেগেটেভ পূর্ণ সংখ্যার (অগত্যা স্বতন্ত্র নয়)।

যাক B হতে A nonincreasing অনুক্রমে সাজানো। আমরা গণনা করতে চাই

m=maxi[n]B[i]+i.

সুস্পষ্ট সমাধানটি A কে বাছাই করা হয় Aএবং তারপরে m । এটি একটি অ্যালগরিদম দেয় যা সবচেয়ে খারাপ ক্ষেত্রে সময় O(nlgn) এ চলে।

এটা কি আরও ভাল করা সম্ভব? আমরা কি লিনিয়ার সময়ে মিটার গণনা করতে পারি m?


আমার মূল প্রশ্নটি উপরেরটি। তবে সমস্যাটি নিম্নলিখিত সাধারণীকরণ সম্পর্কে জানতে আগ্রহী হবে।

যাক B হতে A কিছু তুলনা ওরাকল অনুযায়ী সাজানো এবং f একটি ওরাকল কর্তৃক প্রদত্ত একটি ফাংশন। প্রদত্ত A এবং ওরাকেল জন্য এবং f , আমরা কি সময় কম্পিউট করা প্রয়োজন সম্পর্কে বলতে পারেন m=maxi[n]f(B[i],i) ?

আমরা এখনও কম্পিউট পারেন m মধ্যে O(nlgn) সময়। তবে আমরা কি এই জেনারালাইজড কেসটির জন্য একটি সুপার-লিনিয়ার নিম্ন-সীমাবদ্ধ প্রমাণ করতে পারি?

যদি উত্তরটি হ্যাঁ হয় তবে নীচের দিকের কী ধরে রাখে যদি আমরা ধরে নিই যে পূর্ণসংখ্যার উপর স্বাভাবিক ক্রম এবং একটি "সুন্দর" ফাংশন (একঘেয়ে, বহুভুজ, লিনিয়ার ইত্যাদি)?f

উত্তর:


10

আমরা রৈখিক সময়ে ।m

সরলতার জন্য ধরুন অ্যারেগুলি 0 ভিত্তিক: , । আমরা গণনা করতে চাই ।A[0..n1]B[0..n1]m=maxiB[i]+i

যাক । অবশ্যই ।max=maxiA[i]maxm

যাক হতে বাছাই করেন। যদি আমাদের A[j]B[k]A[j]maxn

B[k]+kB[k]+(n1)=A[j]+(n1)(maxn)+(n1)=max1<maxm.

অতএব আমরা উপেক্ষা করতে পারেন যখন । আমাদের কেবলমাত্র পরিসরের সংখ্যাগুলি বিবেচনা করা দরকার ।A[j]A[j]maxn[maxn,max]

আমরা সংখ্যা সাজাতে সাজানোর কাউন্টিং ব্যবহার করতে পারেন যা সীমার মধ্যে হয় রৈখিক সময় এবং গনা অনুসারে সাজানো তালিকা ব্যবহার ।A[maxn,max]m


... মিমি ... তবে সি [x] = সি [x] +1 এর দাম কত?!?!
মারজিও ডি বায়াসি

1
তোমার উত্তর নিয়ে কোন সমস্যা আছে? কারণ এটি আমার কাছে দুর্দান্ত বলে মনে হচ্ছে: আপনি বলছেন আমরা কেবল মান সহ অ্যারে উপাদানগুলির যত্ন করি, তাই আমরা গণনা বাছাই করতে পারি। এটি যখনই সাধারণ সমস্যার জন্য কাজ করে তখনই সকলের জন্য । [Mn,M]|f(B[i],i)B[i]|=O(n)i
সাশো নিকোলভ

ধন্যবাদ @ মারজিও :) আমি স্বচ্ছতার জন্য আপনার উত্তরটি সামান্য সম্পাদনা করেছি। আমার সম্পাদনা রোল-ব্যাক বা আরও সম্পাদনা করতে নির্দ্বিধায়
কাভেহ

1
এই সমাধানটি যে কোনও জন্যও কাজ করে বলে মনে হচ্ছে যেখানে সমস্ত এবং , । f(x,i)xin|f(x,i)x|=O(n)
কাভেহ

@ কাভেঃ সম্পাদনা ঠিক আছে! আমি উত্তরটি দ্রুত লিখেছিলাম এবং আমি এর
সঠিকতা

-1

অ্যারে যদি স্বতন্ত্র পূর্ণসংখ্যার নিয়ে গঠিত, তারপর , যেহেতু এ সংলগ্ন এন্ট্রি মধ্যে দূরত্ব অন্তত হয় ; পরিস্থিতি আরও আকর্ষণীয় যখন তাদের আলাদা করার প্রয়োজন হয় না।Am=max(A)+1B1

আপনার আরও সাধারণ প্রশ্নের জন্য, এমন পরিস্থিতিটি কল্পনা করুন যেখানে কেবল "আকর্ষণীয়" থাকে । এটি একটি প্রতিদ্বন্দ্বী আমার যুক্তি, যা প্রশ্নের বাহিনী আপনি গঠন করা সম্ভব বলে মনে হয় সকলের জন্য আগে আপনি জানতে পারেন , অত আপনি বাছাই করতে প্রয়োজন করার জন্য উত্তরটি সন্ধান করুন যা তুলনা করে। (কিছু জটিলতা রয়েছে যেহেতু এটি ক্ষেত্রে সমস্যা হতে পারে যা আমরা পরীক্ষা করতে পারি যে জিজ্ঞাসাবাদ করে রৈখিক সময়ের চেয়ে ধ্রুবক অবস্থায় রয়েছি কিনা ।) এই ক্ষেত্রে এমনকি যদি একটি (উচ্চ-ডিগ্রি) বহুভুজ।f(B[i],j)i=jf(B[i],i)imaxif(B[i],i)AΩ(nlogn)A[i]=B[j]f(A[i],j)f


1
যদি A এর n - 1 জিরো এবং একটি একক থাকে? তারপর উত্তর এন হয় 1. না
গ্রেগরি Yaroslavtsev

হাই যুবাল সেখানে সংখ্যা পুনরাবৃত্তি ঘটতে পারে তা । গ্রিগরি যেমন বলেছিলেন সমাধানটি কাজ করছে বলে মনে হচ্ছে না। A
কাভেহ

আমি কম আবদ্ধ যুক্তি জন্য আপনার ধারণা দেখুন: প্রদত্ত আমরা গনা করতে দ্রুত ক্যোয়ারী করা জোড়া ব্যবহার একটি আলগোরিদিম সময় সমস্যা সমাধানের দ্বারা । আমরা নিশ্চিত অ্যালগরিদম প্রশ্নের করতে পারেন সব কিন্তু আমরা নিশ্চিত করুন যে এটি ক্যোয়ারী অন্যান্য না জোড়া করে করতে পারবেন না। তবে আমরা সেট করতে পারেন তাই আমরা ঐ জোড়া বাতিল করে দেয় অন্য জোড়া একটি পার্থক্যসূচক মান হতে পারে। ABfo(nlgn)f(B[i],i)f
কাভেহ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.