ফিশার-ইয়েটস সাফলে অ্যালগরিদমের জটিলতা


15

এই প্রশ্নটি একটি প্রদত্ত অ্যারের এলোমেলো পরিবর্তন ফিরিয়ে দেওয়ার জন্য ফিশার-ইয়েটস অ্যালগরিদম সম্পর্কিত। উইকিপিডিয়া পৃষ্ঠা বলছেন যে তার জটিলতা হে (ঢ), কিন্তু আমি মনে করি এটা হে যে (n log n)।

প্রতিটি পুনরাবৃত্তিতে i, 1 এবং i এর মধ্যে একটি এলোমেলো পূর্ণসংখ্যা বেছে নেওয়া হয়। কেবল মেমোরিতে পূর্ণসংখ্যার লেখা হ'ল ও (লগ আমি), এবং যেহেতু এন পুনরাবৃত্তি রয়েছে, মোটটি

ও (লগ 1) + ও (লগ 2) + ... + ও (লগ এন) = ও (এন লগ এন)

যা নিষ্পাপ অ্যালগরিদমের চেয়ে ভাল নয়। আমি কি এখানে কিছু মিস করছি?

দ্রষ্টব্য: নিষ্পাপ অ্যালগরিদম হ'ল প্রতিটি উপাদানকে বিরতিতে (0,1) একটি এলোমেলো সংখ্যা নির্ধারণ করে, তারপরে নির্ধারিত সংখ্যাগুলির সাথে অ্যারে বাছাই করে।

উত্তর:


24

আমি যে এখানে সন্দেহ মত সবচেয়ে আলগোরিদিম কাজের মধ্যে, পড়া ও লেখার খরচ বিট সংখ্যা একটি ধ্রুবক হতে অধিকৃত হয়। এটি একটি ছোটখাটো পাপ, যতক্ষণ না আপনি দুর্ঘটনাক্রমে P এবং PSPACE ভেঙে না পড়েO(logn)


4
যদিও এটি একটি "ছোটখাট পাপ", আমি মনে করি এটি টিসিএস শিক্ষাবর্ষের একটি বড় পাপ যে এটি কখনই স্পষ্টভাবে উল্লেখ করা হয়নি! প্রতিটি সিএস শিক্ষার্থী নিজেরাই এটি আবিষ্কার করে এবং যতক্ষণ না তাদের বলা হয় যে এই বিষয়টি সবাই জানে তবে কেউ এ বিষয়ে কথা বলে না এমন পর্যন্ত বড় কিছু ভুল বলে মনে করে। এছাড়াও, কয়েক বছর আগে যখন ওমেগা (এন ^ 3) অনুমান করা হয়েছিল যে কোনও বিখ্যাত সমস্যার জন্য সাব-কিউবিক সময় অ্যালগরিদম দেওয়ার জন্য ও (লগ এন) মডেলটি কাজে লাগিয়ে কেউ যখন ব্রোহাহা ছিলেন না তখন? কখনও কি সমাধান হয়েছে?
এলোমেলোভাবে

2
আপনি যে ব্রাউহাকে উল্লেখ করছেন তা সম্পর্কে আমি সচেতন নই। এটি উল্লেখ না হিসাবে, আপনি অবশ্যই সঠিক। আমি প্রথম জেফ এরিকসনের পোস্টটি পড়ার পরে, আমি এখন আমার জ্যামিতি ক্লাসে পি = পিএসপিএসিই কেবল কিক্সের জন্য প্রমাণ করার বিষয়টি উল্লেখ করেছি :)
সুরেশ ভেঙ্কট

1
উত্তরের জন্য ধন্যবাদ. আমি কখনই জানতাম না যে এটি এত বড় ব্যাপার। লিঙ্কটি একটি ভাল পঠন সরবরাহ করে।
টোমর ভ্রমন

1
নীচের লাইন: সর্বদা আপনার মডেলকে স্পষ্ট করে তুলুন।
Jukka Suomela

2
আমি মনে করি যে আমরা বিট আপসকে ধ্রুবক সময় হতে দেই তার মূল কারণটি হ'ল (বহুপক্ষীয় সময়ে) আপনি বেশিরভাগ ক্ষেত্রে ( লগ এন ) -বিট অপারেশনের সমস্ত জোড়ের জন্য একটি ধ্রুবক অ্যাক্সেস লকিং টেবিলটি প্রোগ্রাম করতে পারেন "আধুনিক" গণনা মডেল। এ সম্পর্কে "পাপী" কিছুই নেই ... আমার কাছে, আমি এই সম্পত্তিটিকে এক হিসাবে দেখি যা সাধারনতার ক্ষতি ছাড়াই ধরে নেওয়া যায়। O(logn)O(logn)
রায়ান উইলিয়ামস

17

গণনার মানক মডেল ধরে নেয় যে হে (লগ এন) -বিট পূর্ণসংখ্যার গাণিতিক ক্রিয়াকলাপ ধ্রুবক সময়ে কার্যকর করা যেতে পারে, যেহেতু সেই ক্রিয়াকলাপগুলি সাধারণত হার্ডওয়ারে হস্তান্তরিত হয়। সুতরাং ফিশার-ইয়েটস অ্যালগরিদমে "মেমরিতে পূর্ণসংখ্যা লিখতে" কেবল ও (1) সময় লাগে।

অবশ্যই, বিট ক্রিয়াকলাপগুলির ক্ষেত্রে অ্যালগরিদম বিশ্লেষণ করা পুরোপুরি অর্থবহ, তবে বিট-কস্টের মডেলটি প্রকৃত আচরণের জন্য কম অনুমানযোগ্য। এমনকি সাধারণ লুপের for i = 1 to n: print(i)জন্য ও (এন লগ এন) বিট অপারেশন প্রয়োজন requires


লুপের সাথে সুন্দর পয়েন্ট। কখনই তা খেয়াল
করেননি

8

এটির একটি উত্তর "[ফিশার-ইয়েটস অ্যালগরিদম] নিষ্পাপ অ্যালগরিদমের চেয়ে ভাল নয় I আমি কি এখানে কিছু মিস করছি?" যা আপনি প্রশ্নে জিজ্ঞাসা করেছেন।

আপনার "নিষ্পাপ" অ্যালগরিদমে যা আসল সংখ্যা ব্যবহার করে: আপনি কত বিট নির্ভুলতা ব্যবহার করেন? যদি আপনি বিট জটিলতা গণনা করছেন (যেমনটি আপনি ফিশার-ইয়েটসের জন্য করছেন বলে মনে হয়) এবং অ্যালগরিদম আসল সংখ্যার জন্য k এলোমেলো বিট ব্যবহার করে, তবে তার চলমান সময়টি Ω (এনএল লগ এন) হবে, যেহেতু দুটি কে- বিট আসল সংখ্যায় Ω (কে) সময় লাগে। তবে দুটি অভিন্ন উপাদানটিকে একই প্রকৃত সংখ্যায় ম্যাপ করা রোধ করতে কে কমপক্ষে Ω (লগ এন) হওয়া দরকার যার অর্থ অ্যালগরিদম Ω (n লগ 2 এন) সময় নেয় যা একটি ফিশার-ইয়েটস পরিবর্তনের চেয়ে ধীর হয় is লগের ফ্যাক্টর n।

আপনি শুধু বেড়ে চলেছে থাকেন সংখ্যা গাণিতিক এবং তুলনা অপারেশনের এবং তাদের বিট জটিলতা উপেক্ষা, তারপর ফিশার-ইয়েটস Θ (ঢ) এখনও লগ এন পৃথক্ একটি ফ্যাক্টর রয়েছে এবং আপনার অ্যালগরিদম Θ হয় (n log n)।


আমি সন্দেহ করেছিলাম যে "
নিষ্পাপ

1
নিম্নলিখিত হিসাবে "নিখুঁত" অ্যালগরিদম পরিষ্কারভাবে প্রয়োগ করা যেতে পারে। প্রতিটি উপাদানকে 1 এবং n ^ 3 এর মধ্যে একটি এলোমেলো পূর্ণসংখ্যার বরাদ্দ করুন এবং তারপরে রেডিক্স সাজানোর মাধ্যমে ও (এন) সময়গুলিতে সংখ্যাগুলি সাজান। (উচ্চ সম্ভাবনার সাথে, কোনও দুটি উপাদানই এলোমেলো নম্বর
পাবে না d

@ জেফি: ধন্যবাদ! এটি খুব পরিষ্কার, এবং ফিশার-ইয়েটসের মতো একই জটিলতা রয়েছে। এটি পোস্ট করার পরে, আমি আসলে অনুভব করছিলাম যে "নিষ্পাপ" অ্যালগরিদম আরও খারাপ হওয়া উচিত নয় ... আমি এই বিষয়টি মিস করেছি যে এন কে-বিট সংখ্যাগুলি ও (এন কে) এ বাছাই করা যেতে পারে, ও (এনক্লগ এন) এর প্রয়োজন হয় না। তবে আমি অনুমান করি যে নুথ-ফিশার-ইয়েটস এখনও ধ্রুবকগুলিতে আরও ভাল: এটির জন্য ঠিক (লগ এন!) এলোমেলো বিট দরকার 1 একটি র্যান্ডম পূর্ণসংখ্যা 1 থেকে এন, পরে 1 থেকে এন -1 ইত্যাদি — যা সর্বোত্তম (পরিবর্তে) 3n লগ এন), এবং এটি কেবল ধ্রুবক অতিরিক্ত মেমরির সাথে স্থানে করা যায়।
শ্রীভাত্সআর

6

এই সমস্যার জন্য পূর্ণসংখ্যা সম্পর্কে বিশেষ কিছু নেই।

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

র্যান্ডমওয়াকার দ্বারা বর্ণিত ব্রোহাহাটি পিওপিএল ২০০৮-এর একটি কাগজ সম্পর্কে ছিল ( http://portal.acm.org/citation.cfm?doid=1328438.1328460 ), এখানে আলোচনা করা হয়েছে: http://blog.computationalcomplexity.org/2009/05/shaving- লগ-সঙ্গে-ইউনিট-cost.html

সেই পোস্টে ল্যান্স ফোর্টনু বর্ণনা করেছেন যে কীভাবে একজন ছাত্র হিসাবে তিনি অভিযোগ করেছিলেন যে বাছাই করার জন্য সত্যিকার অর্থে n লগ requires 2 n সময় প্রয়োজন যদি আমাদের অবশ্যই দুটি উপাদানগুলির সমস্ত লগ এন বিটগুলি তাদের সাথে তুলনা করার জন্য পড়তে হয়, যা একটি যুক্তিসঙ্গত আপত্তি বলে মনে হয়।


আমি ব্লগ পোস্টের লেখক পাই না। তিনি অভিযোগ করেন যে বাছাই করা আসলে ও (এন লগ ^ 2 এন), তবে তারপরে বলে যে কাগজটি শক্ত?
টোমর ভ্রোমেন

কাগজটি শক্ত (যেমন, মিথ্যা নয়) এর মধ্যে এমন একটি মডেল রয়েছে যেখানে গাণিতিক ক্রিয়াকলাপগুলি ইউনিট সময় নেয় এবং সেই মডেলটিতে কাগজের অ্যালগোরিদম সর্বপ্রথম o (n ^ 3) অপারেশন অর্জন করে।
ডেভ ডটি

আমি ও (এন লগ ^ 2 এন) আপত্তিটি পাই না কারণ বিটের ক্ষেত্রে, ইনপুটটি নিজেই আকারের ও (এন লগ এন) হয়। বিটিডব্লিউ, একটি পার্শ্ব নোট হিসাবে, জটিলতা ব্লগে মন্তব্যগুলির মানের স্তরটি তখন অনেক বেশি ছিল ....
অর্ণব

4

উইকিপিডিয়া পৃষ্ঠাটি বলছে যে এর জটিলতা ও (এন), তবে আমি মনে করি এটি ও (এন লগ এন)।

প্রকৃতপক্ষে, ও (এন লগ এন) এমন মডেলগুলিতে এই সমস্যাটির জন্য নিম্ন বাউন্ড যেখানে বাছাই হয় ও (এন লগ এন)। যদি সমস্ত ক্রমানুসারে সমানভাবে সম্ভাবনা থাকে তবে এলোমোথিমটি এলোমেলো স্ট্রিম থেকে ক্রমানুসরণ পর্যন্ত ক্রিয়াকলাপ হিসাবে অবশ্যই লক্ষ্যমাত্রাযুক্ত হতে হবে। সেখানে নাই! ক্রমশক্তি যাতে সিদ্ধান্ত গাছের মডেলের মতো কিছুতে দৈর্ঘ্যের শাখা থাকে কমপক্ষে হে (লগ এন!) = হে (এন লগ এন)।

1-εহে(ε)


3

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

সংক্ষেপে: আপনি টিএমএসের শর্তে ভাবেন, আরএমসের নিবন্ধে নিবন্ধ লেখক। আপনি উভয় ঠিক আছে।

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