O (k) এ অ্যারেতে ক্ষুদ্রতম কে উপাদানগুলি সন্ধান করছে


12

এটি ওয়েবে আমি একটি আকর্ষণীয় প্রশ্ন পেয়েছি। N সংখ্যাযুক্ত একটি অ্যারে দেওয়া (তাদের সম্পর্কে কোনও তথ্য ছাড়াই), আমাদের রৈখিক সময়ের মধ্যে অ্যারে প্রাক প্রক্রিয়া করা উচিত যাতে আমরা ও (কে) সময়কালের সবচেয়ে ছোট উপাদানগুলিকে ফিরিয়ে দিতে পারি, যখন আমাদের একটি নম্বর দেওয়া হয় <= k <= এন

আমি কিছু বন্ধুদের সাথে এই সমস্যাটি নিয়ে আলোচনা করেছি তবে কেউই এর সমাধান খুঁজে পেল না; কোন সাহায্য প্রশংসা হবে!

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


4
একটি মিনিট গাদা ব্যবহার সম্পর্কে?
শির

1
কে-স্কাইব্যান্ড এবং শীর্ষ-কে গণনা দেখুন। কাগজ cs.sfu.ca/~jpei/publications/subsky_tkde07.pdf সম্পর্কিত সাহিত্যের একটি সুন্দর পর্যালোচনা আছে।
আন্দ্রেস সালামন

1
শির-আমি ন্যূনতম গাদা ধারণাটি পরীক্ষা করেছি। তবে কম ক্ষুদ্রতম সংখ্যার কে মুদ্রণের জন্য ও (ক্লোনিং) সময় হয় এবং ও (কে) প্রয়োজন অনুসারে নয়
ইদান

4
@ আইডানিক: আপনি কেন মনে করেন যে মিনিট- হ্যাপে ক্ষুদ্রতম উপাদানগুলি খুঁজে পেতে me সময় লাগে ? Ω(klogn)k
ক্রিস্টোফার আরনসফেল্ট হ্যানসেন

8
আমি মনে করি না এটি গবেষণা স্তর is এটি একটি অ্যাসাইনমেন্টের মতো দেখাচ্ছে। দুই মেয়ে?
কাভেহ

উত্তর:


24

সময়ে মানগুলির অ্যারে প্রসেস করুন :nO(n)

  • in
  • যখনi>2
    • মধ্যমা গণনা এর সময়mA[1..i]O(i)
    • বিভাজন কে এবং একই সময়েA[1..i]A[1..i/21]mA[i/2+1..i]m
    • ii/2

মোট precomputation সময়ের মধ্যে হয় O(1+2+4+...+n)O(n)

একটা জিজ্ঞাসা উত্তর ক্ষুদ্রতম উপাদান একটি সময় হে ( ) :kAO(k)

  • llog2k
  • নির্বাচন তম উপাদান এক্স এর একটি [ 2 .2 l + 1 ] সময় ( 2 লি ) ( কে )(k2l)xA[2l..2l+1]O(2l)O(k)
  • বিভাজন একই সময়ে x দ্বারাA[2l..2l+1]x

এর মধ্যে K ক্ষুদ্রতম উপাদান থাকে।A[1..k]k

তথ্যসূত্র:

  • 1999 সালে দোর এবং জুইক মধ্যমা গনা একটি আলগোরিদিম দিয়েছেন মধ্যে সময় উপাদানের 2,942 এন + + ( এন ) তুলনা, যা নির্বাচন করতে একটি আলগোরিদিম উৎপাদ থেকে তম উপাদান এন কম সময়ে unordered উপাদানের 6 এন তুলনা।n2.942n+o(n)kn6n

1
আমার ধারণা বাহ্যিক লুপটি আমার জন্য 'বলে মনে হয়। আপনার অ্যালগরিদম যুয়াল ফিল্মাস জবাবের চেয়ে আলাদা কি? {2lgn,,4,2,1}
রাদু গ্রিগোর

2
এটি আমার অ্যালগরিদমের একটি সাধারণীকরণকে সালিশী । এটি কিছু বাস্তবায়ন বিশদও বানান যা আমার উদ্দেশ্য থেকে (ইচ্ছাকৃতভাবে) রেখে দেওয়া হয়েছিল। n
যুবাল ফিল্মাস

3
@ ইউভালফিল্মাস আপনি কি আমার মন্তব্যে বোঝাতে চান যে আমার উত্তর অনৈতিকভাবে আপনার নিকটবর্তী? আমি প্রশ্নটি পর্যালোচনা করার সময় এটি সমাধানটি মনে আসল। আমি দেখেছি আপনি একটি অনুরূপ পোস্ট করেছেন, তবে এটি অস্পষ্ট বলে মনে হয়েছে, তাই আমি আমার নিজের লেখা (আপনার একটি বড় সম্পাদনা করার বিরোধিতা করে)। চূড়ান্তভাবে গুরুত্বপূর্ণ বিষয়গুলি হ'ল সিস্টেমে জবাবগুলির গুণগত মান, আসলে সেগুলি কে লিখেছেন: ব্যাজ এবং খ্যাতি কেবল উত্সাহ নয়, নিজের মধ্যে উদ্দেশ্য নয়।
জেরেমি

4
@ জেরেমি মোটেও নয়; কেবলমাত্র দুটি সমাধান একই (তবে আপনার নির্বিচারে জন্য কাজ করে ), এবং এটি বাস্তবে কোনও হোমওয়ার্কের প্রশ্নে আমি বিশদটি বের করতে পারিনি। n
যুবাল ফিল্মাস

2
ওহ :( ততক্ষণে দুঃখিত। (ভেবেছিলাম আমি এখনও নিয়োগের সন্দেহের
জেরেমি

14

সরলতার জন্য ধরে নিন যে 2 মি - 1 , 2 মি - 2 , 2 মি - 3 , , 1 পজিশনে উপাদানগুলি খুঁজতে লিনিয়ার সময় নির্বাচনের অ্যালগরিদম ব্যবহার করুন ; এটি লিনিয়ার সময় লাগে। প্রদত্ত কে , টি এমন 2 টি - 1কে 2 টি টি সন্ধান করুন ; নোট করুন যে 2 টি2 কে । সর্বাধিক পদে সব উপাদান ফিল্টার 2 টিn=2m2m1,2m2,2m3,,1kt2t1k2t2t2k2t, এবং এখন ল টাইম হে ( 2 টি ) = ( কে ) এ অবস্থানের উপাদানটি খুঁজে পেতে লিনিয়ার সময় নির্বাচন অ্যালগরিদম ব্যবহার করুন ।kO(2t)=O(k)

স্পষ্টকরণ: মনে হতে পারে যে প্রাক-প্রসেসিংয়ে সময় লাগে , এবং যদি আপনি সতর্ক না হন তবে প্রকৃতপক্ষে এটিই ঘটবে। রৈখিক সময়ে প্রাক প্রসেসিংটি কীভাবে করা যায় তা এখানে:Θ(nlogn)

while n > 0:
  find the (lower) median m of A[0..n-1]
  partition A in-place so that A[n/2-1] = m
  n = n/2

স্থানটিতে পার্টিশনটি কুইকোর্টের মতো করা হয়। চলমান সময় রৈখিক হয় , এবং তাই রৈখিক। শেষের দিকে, অ্যারে A নীচের সম্পত্তিটিকে সন্তুষ্ট করে: প্রতিটি কে , [ 0 .. এন / 2 কে - 1 ] এর মধ্যে এন / 2 কে সবচেয়ে ছোট উপাদান থাকে।n+n/2+n/4++1<2nAkA[0..n/2k1]n/2k


1
স্বাভাবিকভাবে. যদি অ্যারে বাছাই করা হয় তবে আপনি প্রিপ্রোসেসিং ছাড়াই এটি সমাধান করতে পারেন । সম্ভবত আপনি রৈখিক সময় নির্বাচন অ্যালগরিদম যে জানতে পারেন সচেতন নয় সময় তম বৃহত্তম উপাদান হে ( ) ? O(1)kO(n)
যুবাল ফিল্মাস

4
lognnlogn

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

3
n+n/2+n/4++1<2n

5
ঘটনাক্রমে এই অ্যালগরিদমটি আমার আগের প্রশ্নের উত্তরে সাবরুটিন হিসাবে উপস্থিত হয়: cstheory.stackexchange.com/questions/17378/…
ডেভিড

2

O(n)O(k)k

ফ্রেডরিকসন, গ্রেগ এন। , মিনিট-হিপ , ইনফ -এ নির্বাচনের জন্য একটি অনুকূল অ্যালগরিদম । Comput। 104, নং 2, 197-214 (1993)। ZBL0818.68065 ..


1
kO(k)

@ a3nm এটি আসলে কোনও সাধারণ অ্যালগরিদম নয়, তবে আমি রেফারেন্সটি আপডেট করেছি।
hqztrue

kkO(k)k

kx<xO(k)

kk/2k

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