কেন Radix কেমন হয়


23

রেডিক্স সাজানোর মধ্যে আমরা প্রথমে কমপক্ষে উল্লেখযোগ্য অঙ্ক অনুসারে বাছাই করি তারপরে আমরা দ্বিতীয় ন্যূনতম উল্লেখযোগ্য অঙ্ক অনুসারে বাছাই করি এবং সাজানো তালিকার সাথে শেষ করি।

এখন যদি আমাদের সংখ্যাগুলির তালিকা থাকে তবে সেই সংখ্যার মধ্যে পার্থক্য করার জন্য আমাদের লগ এন বিটগুলি দরকার । সুতরাং আমরা যে পরিমাণ রেডিক্স সাজানোর পাস করব তা লগ এন হবে । প্রতিটি পাস লাগে হে ( ) সময় এবং অত: পর র্যাডিক্স সাজানোর সময় চলমান হে ( লগ ইন করুন এন )nlognlognO(n)O(nlogn)

তবে এটি সর্বজনবিদিত যে এটি লিনিয়ার টাইম অ্যালগরিদম। কেন?


এ কারণেই লিনিয়ার টাইম প্রকারের জন্য সাধারণত কোনও নির্দিষ্ট ব্যাপ্তির জন্য ইনপুটটির পূর্ণসংখ্যার প্রয়োজন হয়। মূল্যের বাছাইয়ের জন্য অঙ্কগুলিতে একটি নির্দিষ্ট ব্যাপ্তি প্রয়োজন। আপনার উদাহরণে আপনি ধরে নিয়েছেন যে এই ব্যাপ্তিটি ছিল তবে অঙ্কগুলির জন্য কোনও পূর্ণসংখ্যার ব্যাপ্তি সম্ভব; উদাহরণস্বরূপ, আপনি [ 0 , chosen বেছে নিতে পারতেন [0,1][0,n]
জো

উত্তর:


19

আমাদের যদি সংখ্যাগুলির একটি তালিকা থাকে তবে আমাদের লগ এন বিটগুলি দরকারnlogn

না: যদি আমাদের থেকে 2 কে - 1 এর মধ্যে সংখ্যার একটি তালিকা থাকে তবে আমাদের কে বিটগুলি দরকার । সাধারণভাবে কে এবং লগ এন এর মধ্যে কোনও সম্পর্ক নেই ।02k1kklogn

সংখ্যার সব স্বতন্ত্র, তাহলে সাজানোর স্বতন্ত্র সংখ্যা, এবং সোর্স তাই একটি সময় জটিলতা রয়েছে Ω ( লগ ইন করুন এন ) । সাধারণভাবে, মূল্যের সাজানোর জটিলতা হ'ল Θ ( এন)lognkΩ(nlogn) যেখানে এন হল বাছাই করার জন্য উপাদানগুলির সংখ্যা এবং কে প্রতিটি উপাদানের বিটের সংখ্যা।Θ(nk)nk

বলতে চাই যে র্যাডিক্স জটিলতা কেমন হয় সংখ্যার জন্য একটি নির্দিষ্ট বিট আকার গ্রহণ উপায়। এটি বোঝায় যে যথেষ্ট পরিমাণে এন এর জন্য অনেকগুলি সদৃশ মান থাকবে।O(n)n


একটি সাধারণ উপপাদ্য রয়েছে যে একটি অ্যারে বা তালিকা বাছাইয়ের পদ্ধতি যা একবারে দুটি উপাদানের তুলনা করে কাজ করে সবচেয়ে খারাপ ক্ষেত্রে চেয়ে দ্রুত চলতে পারে না । রেডিক্স সাজানোর উপাদানগুলির তুলনা করে কাজ করে না, তবে একই প্রমাণ পদ্ধতিটি কাজ করে method রেডিক্স বাছাই হ'ল অ্যারেতে কোন অনুক্রমের প্রয়োগ করতে হবে তা নির্ধারণ করার সিদ্ধান্ত প্রক্রিয়া; আছে এন ! অ্যারের ক্রমবিন্যাস, এবং রেডিক্স সাজানোর ক্ষেত্রে বাইনারি সিদ্ধান্ত নেওয়া হয়, অর্থাত্ এটি প্রতিটি পর্যায়ে দুটি উপাদান অদলবদল করবে কিনা তা স্থির করে। মিটার বাইনারি সিদ্ধান্তের পরে , রেডিক্স বাছাই 2 মিটার অনুক্রমের মধ্যে সিদ্ধান্ত নিতে পারে । এন পৌঁছাতে ! সম্ভাব্য অনুমতি, এটি যে প্রয়োজনΘ(nlogn)n!m2mn!mlog(n!)=Θ(nlogn)

আমি উপরে যে প্রমাণটি লিখিনি তা প্রমাণের একটি অনুমান হ'ল উপাদানগুলি স্বতন্ত্র হলে সেই ক্ষেত্রে অ্যালগরিদম অবশ্যই কাজ করবে। যদি এটি একটি প্রাইরি হিসাবে পরিচিত হয় যে উপাদানগুলি সমস্ত স্বতন্ত্র নয়, তবে সম্ভাব্য ক্রম সংখ্যাটি পুরো চেয়ে কম ! । যখন বাছাই -বিট সংখ্যা, এটি শুধুমাত্র করা সম্ভব এন স্বতন্ত্র উপাদান যখন এন 2 ; সেক্ষেত্রে র‌্যাডিক্স সাজানোর জটিলতা প্রকৃতপক্ষে Ω ( n লগ এন )এন এর বৃহত্তর মানগুলির জন্য অবশ্যই সংঘর্ষ হওয়া উচিত, যা ব্যাখ্যা করে যে কীভাবে র‌্যাডিক্স সাজ্টের জটিলতা Θ এর চেয়ে কম হতে পারে Θ (n!knn2kΩ(nlogn)n যখন এন > 2 কেΘ(nlogn)n>2k


1
বিকল্পের দৃষ্টিভঙ্গি শব্দ-র‌্যামের দামের মডেলটি: আমাদের মেশিনটি স্থির সময়ে বিটের পূর্ণসংখ্যার সাথে কাজ করতে পারে । (বর্তমান মেশিনে ডাব্লু = having৪ রয়েছে ।) এইভাবে, 2 ডাব্লু বালতি সহ বিতরণ বাছাইয়ের এক ধাপ ( 1 ) সময়ে সরাসরি কোনও সম্পর্কিত অ্যারে উপাদান অ্যাক্সেসের মাধ্যমে করা যেতে পারে । এই ভাবে, র্যাডিক্স সাজানোর জন্য রৈখিক হয় এন এর পূর্ণসংখ্যার W = হে ( লগ ) প্রতিটি বিট। ww=642wO(1)nw=O(logn)
সেবাস্তিয়ান

9

আপনার বিশ্লেষণে সতর্ক থাকুন: সময়ে আপনি বাছাইয়ের জন্য কী অনুমান করেন? এটি কারণ আপনার প্রতিটি অঙ্ক 0 থেকে কে - 1 এর মধ্যে রয়েছে যার অর্থ আপনার অঙ্কগুলি কে সম্ভাব্য মানগুলি গ্রহণ করতে পারে । আপনার একটি স্থিতিশীল বাছাই অ্যালগরিদম প্রয়োজন, যাতে আপনি উদাহরণস্বরূপ গণনা বাছাই করতে পারেন। গণনা বাছাই Θ ( n + কে ) সময়ে চলে। যদি কে = ( এন ) হয় , গণনা সাজানোর রৈখিক সময়ে চলে।O(n)0k1kΘ(n+k)k=O(n)

আপনার প্রতিটি স্ট্রিং বা সংখ্যার ডিজিট রয়েছে। আপনি বলতে হিসাবে, আপনি করতে তাদের উপর প্রেরণ করা হয়। সুতরাং, Radix সাজানোর স্পষ্টভাবে Θ ( d ( n + k ) ) সময়ে চলে। কিন্তু যদি আমরা বিবেচনা ধ্রুবক এবং হতে = হে ( ) , আমরা রৈখিক সময় যে র্যাডিক্স সাজানোর রান দেখতে পাচ্ছি।ddΘ(d(n+k))dk=O(n)


1
উদাহরণস্বরূপ, ধরুন আপনি ধ্রুবক d এর জন্য কিছু এন = ( এন ডি ) এর জন্য পরিসীমাতে পূর্ণসংখ্যাগুলি বাছাই করছেন । তারপরে আপনার O ( d ) রেঞ্জের ( n ) রেঞ্জের সাথে প্রত্যেকটিই থাকতে পারে । [0,N1]N=O(nd)dO(d)O(n)
জো

-2

আমি অনুমান করি ভুল। আপনি উদাহরণস্বরূপ, হেক্স সহ সংখ্যার সাথে রেডিক্স সাজানোর কাজটি করতে পারেন। সুতরাং, প্রতিটি পদক্ষেপে আপনি সংখ্যার অ্যারেটিকে 16 বালতিতে বিভক্ত করেন ।k=log2(n)16


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