সময় এবং স্থানের নির্দিষ্ট সংখ্যা নির্ধারণ (সবচেয়ে খারাপ ক্ষেত্রে)


10

প্রদত্ত যে A[1..n] এমন পূর্ণসংখ্যা যা 0A[k]m সব 1kn এবং প্রতিটিটির উপস্থিতি A [1 \ ldotd n] এ একটি নির্দিষ্ট সংখ্যা ব্যতীত সংখ্যাগুলিA[1..n] একটি বিজোড় সংখ্যা। যার সংঘটনটি একটি সমান সংখ্যার সংখ্যাটি সন্ধান করার চেষ্টা করুন।

একটি Θ(nlogn) অ্যালগরিদম রয়েছে: আমরা A[1..n] কে B[1..n] এবং B[1..n] কে অনেক টুকরো টুকরো টুকরো করি, যার উপাদানগুলির মান হ'ল একই, সুতরাং আমরা প্রতিটি উপাদান এর উপস্থিতি গণনা করতে পারেন।

আমি একটি খারাপ-কেস পেতে চাই - O(n) -টাইম-ও- O(n) -স্পেস স্পেস অ্যালগরিদম।

মনে করুন যে m=Ω(n1+ϵ) এবং ϵ>0 , সুতরাং মূল সূত্রটি গ্রহণযোগ্য নয়। বাইনারি বিটওয়াইজ ক্রিয়াকলাপগুলি গ্রহণযোগ্য, উদাহরণস্বরূপ, A[1]xorA[2]


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

1
@ লুকম্যাথিসন: আমি সেই উত্তরটি মুছে ফেলেছি, কারণ আমি এখনও নিশ্চিত নই যে আমি যে কাগজটি উদ্ধৃত করেছি তা কোনও পরিবর্তন ছাড়াই কাজ করবে, এবং এ ছাড়া ওপি কেবল ইউনিফর্ম ব্যয় র‌্যাম মডেলের প্রতি আগ্রহী বলে মনে হয়।
আর্যভাটা

@ আর্যভট্ট: হেই, উত্তরে যে উত্তর নেই তা তখন নেই! আকর্ষণীয়, এবং সম্ভবত ফ্র্যাঙ্কের জন্য দরকারী, আপনি কী ভেবেছিলেন যে কাগজে ফলাফলটি মানিয়ে নিতে সমস্যা হয়েছিল? একটি দ্রুত স্কিম এটি প্রয়োগ করার পরামর্শ দিয়েছিল, তবে আমি অবশ্যই এটি পড়ি নি।
লুক ম্যাথিসন

@ লুকম্যাথিসন: এই সত্য যে অন্যান্য উপাদানগুলির বর্তমান সমস্যাটিতে একটি অদ্ভুত বার দেখা দরকার appear যেহেতু, আমি প্রমাণটিও পেয়েছি ...
আর্যভাটা

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

উত্তর:


2

এখানে একটি সাধারণ অ্যালগরিদমের জন্য একটি ধারণা দেওয়া হয়েছে; শুধু সমস্ত ঘটনা গণনা!

  1. এই । - সময়Θ ( এন )m=maxAΘ(n)
  2. "বরাদ্দ করুন" অ্যারে । - সময় ¹C[0..m]O(1)
  3. যখনই আপনি খুঁজে পান তখন উপর দিয়ে ইটারেট করুন এবং বৃদ্ধি করুন । যদি ছিল , যোগ একটি রৈখিক লিস্টে । - সময়AC[x]A[_]=xC[x]0xLΘ(n)
  4. পুনরুক্তি এবং উপাদান খুঁজে সঙ্গে এমনকি। - সময় ।এক্স সি [ এক্স ] ( এন )LxeC[xe]O(n)
  5. রিটার্ন ।xe

সব মিলিয়ে এটি আপনাকে একটি রৈখিক-সময়ের অ্যালগোরিদম দেয় যা প্রচুর স্মৃতি ব্যবহার করতে পারে (বরাদ্দ করার অর্থে)। নোট করুন যে স্বতন্ত্রভাবে অবিচ্ছিন্ন সময়ে এলোমেলোভাবে অ্যাক্সেস করতে সক্ষম হওয়া এখানে গুরুত্বপূর্ণ isমিCm

এই পদ্ধতির সাথে মহাকাশে আবদ্ধ অতিরিক্ত আরও কঠিন; সময় দেখার প্রস্তাব দেয় এমন কোনও অভিধানের ডেটা-কাঠামো সম্পর্কে আমি জানি না । আপনি হ্যাশ-টেবিলগুলি ব্যবহার করতে পারেন যার জন্য এখানে প্রত্যাশিত লুকের সময় ( টেবিলের আকার, সঞ্চয়ী উপাদানের সংখ্যা সাথে বাস্তবায়ন রয়েছে যাতে আপনি লিনিয়ার স্পেসের সাথে নির্বিচারে ভাল পেতে পারেন - প্রত্যাশায়। সমস্ত মান যদি একই হ্যাশ মান ম্যাপ, আপনি মাতাল হয়।( 1 ) ( 1 + কে / এন ) এন কে O(n)O(1)O(1+k/n) nkA


  1. একটি র‌্যামে, এটি স্পষ্টভাবে সম্পন্ন করা হয়; আমাদের কেবল দরকার শুরু শুরুর অবস্থান এবং সম্ভবত শেষের অবস্থান।

0

একটি প্রায় তুচ্ছ সমাধান - যা তবে স্পেস ব্যবহার করে - হ্যাশ ম্যাপ ব্যবহার করা। মনে রাখবেন যে কোনও হ্যাশ মানচিত্রটিতে উপাদানগুলি যুক্ত করতে এবং সন্ধানের জন্য রানটাইম ( 1 )Θ(n)O(1)

সুতরাং, আমরা নিম্নলিখিত অ্যালগরিদম ব্যবহার করতে পারি:

  1. একটি হ্যাশ মানচিত্র বরাদ্দ । পুনরুক্তি । এ এর প্রতিটি উপাদানের জন্য দেখা যাওয়া সংখ্যার সংখ্যা বৃদ্ধি করুন, যেমন ।আই এইচ ( আই ) + +HAiAH(i)++

  2. হ্যাশ মানচিত্রের কী সেটটি পরীক্ষা করুন এবং কীগুলির মধ্যে কোনটির উপস্থিতিগুলির একটি এমনকি গণনা রয়েছে তা পরীক্ষা করুন।

এখন এটি একটি সাধারণ অ্যালগরিদম যা সত্যিই কোনও বড় কৌশল ব্যবহার করে না, তবে কখনও কখনও এমনকি এটি যথেষ্টও না। যদি তা না হয় তবে আপনি কোন স্থান সীমাবদ্ধতা আরোপ করেছেন তা নির্দিষ্ট করে দিতে পারেন।


আমি এখনও জানতে চাই, যদি বহুবর্ষীয় স্থান ব্যবহার করে কোনও অ-র্যান্ডমাইজড সময় অ্যালগরিদম থাকে। বিশেষত, এমন কোন তাত্ত্বিক প্রমাণ রয়েছে যে একমাত্র বৈসাদৃশ্য আইটেমটি খুঁজে পাওয়ার চেয়ে একমাত্র সম-উপস্থিত আইটেমটি খুঁজে পাওয়া শক্ত? O(n)
এ.চুল্জ

@ এ.স্কুলজ আমি মনে করি এটি হ্যাশ টেবিল ব্যবহার করে -এক্সপেক্টড-টাইম অ্যালগরিদম। আমার মনে আছে যে কেউ আমাকে একটি -অ্যালগোরিদম (বা কিছু বিশেষ ক্ষেত্রে বলে, বিজোড় = 1 এবং এমনকি = 2) সম্ভবত স্ট্যাক সহ বলেছিলেন, তবে আমি এটি মনে করতে পারি না। ( এন )O(n)O(n)
ইয়েফফাহ

প্রতিটি হ্যাশটেবল প্রয়োগের এই সম্পত্তি থাকে না; সাধারণত, অনুসন্ধান নয়, এমনকি এমওরাইজডও নয় (আফাইক)। প্রকৃতপক্ষে, পূর্বের আলোচনায় এমন কোনও বাস্তবায়ন পাওয়া যায়নি যা ধ্রুবক সময় অনুসন্ধান করে। আপনি আরো নির্দিষ্ট হতে পারে? O(1)
রাফেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.