দক্ষ অ্যালগরিদম কী?


10

অ্যাসিম্পটোটিক আচরণের দৃষ্টিকোণ থেকে, "দক্ষ" অ্যালগরিদমকে কী বিবেচনা করা হয়? সেই বিন্দুতে লাইন আঁকার জন্য মান / কারণ কী? ব্যক্তিগতভাবে, আমি ভাবব যে আমি যা কিছু বলি তা নির্দ্বিধায় "উপ-বহুবচন" বলতে পারি, যেমন যেমন efficient দক্ষ এবং যা কিছু হবে "অদক্ষ" হবে। যাইহোক, আমি এমন কোনও কিছু শুনেছি যা কোনও বহুপদী ক্রমকে দক্ষ বলা হয়। যুক্তি কি?f(n)=o(n2)n1+ϵΩ(n2)


উত্তর:


11

এটি প্রসঙ্গে নির্ভর করে। তাত্ত্বিক কম্পিউটার বিজ্ঞানে সাধারণত প্রতিটি বহুপদী সময় অ্যালগোরিদমকে 'দক্ষ' বলে মনে করা হয়। উদাহরণস্বরূপ অ্যালগরিদমে উদাহরণস্বরূপ একটি রানটাইম কার্যকর হিসাবে বিবেচিত হবে, যদিও এটি practice কোনও যুক্তিসঙ্গত মানের জন্য ব্যবহারযোগ্য হবে না । স্যাট-এর জন্য একটি অ্যালগরিদম যা in এ চলে একটি আশ্চর্যজনক অগ্রগতি হবে।n1/ϵ1/ϵϵn2100

ক্লাসিক অ্যালগোরিদমগুলিতে, অর্থাৎ ৮০ এর দশক এবং তার আগের এলগরিদমগুলিতে, কম রানটাইম বা তার বেশি মনে করুন (ম্যাট্রিক্সের গুণ, কম দামের মিল, প্রবাহ, লিনিয়ার প্রোগ্রামিং) দক্ষ বলে বিবেচিত হয়। তারা এখনও বেশিরভাগ লোকদের দ্বারা দক্ষ হিসাবে বিবেচিত হয়, আমি বলব। অবশ্যই একটি অ্যালগরিদমকে দক্ষ হিসাবে বিবেচনা করা হয় না যদি কোনও অ্যালগরিদম পরিচিত হয়, উদাহরণস্বরূপ বাছাইয়ের ক্ষেত্রে।n3n2nlogn

আজকাল সাবলাইনার অ্যালগোরিদম বা স্ট্রিমিং অ্যালগরিদমের দিকে ঝোঁক রয়েছে যা ডেটা টেরাবাইটের সাথে ডিল করতে সক্ষম। গুগলের সূচীতে সমস্ত পৃষ্ঠার পৃষ্ঠার র‌্যাঙ্কটি গণনা করতে ম্যাট্রিক্স গুণনের চেষ্টা করুন। যে কাজ করবে না।

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


9
সংক্ষেপে: দক্ষতা এমনটাই আপনার সমস্যার উপযুক্ত সময়সীমার মধ্যে আপনার সমস্যার সমাধান করে।
রাফেল

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

সম্ভবত "দক্ষ" প্রথম স্থানটিতে সত্যিকারের সঠিক শব্দটি নয়? আমি কেবল আমার একটি ক্যালকুলাস বই পর্যালোচনা করছিলাম, এবং লেখক বহুবচনীয় রানটাইমগুলিকে "ট্র্যাকটেবল" এবং এক্সফোনেনশিয়াল রানটাইমগুলিকে "ইন্টারেক্টেবল" বলে।
রবার্ট এস বার্নেস

1
@ রবার্টএস.বার্নেস: বিভিন্ন শব্দ, একই সমস্যা।
রাফেল

4

বিতরণকৃত অ্যালগরিদমের কোণ থেকে আমার 2 সেন্ট: বৃহত-স্কেল নেটওয়ার্কগুলির দিকে তাকানোর সময় (পি 2 পি, সোশ্যাল নেটওয়ার্ক ইত্যাদি) বিতরণকৃত অ্যালগরিদমটি যদি চলমান সময় হয় তবে তা দক্ষ হিসাবে বিবেচিত হবেO(logcn) কিছু ধ্রুবক জন্য c>0 এবং অ্যালগরিদম এর বার্তা ব্যবহার করেO(logn)বিট। নোট করুন যে বার্তা মাপের উপর প্রয়োজনীয়তা সাধারণত চলমান সময়ের চেয়ে আরও বেশি গুরুত্ব দেওয়া হয়, বিশেষত "গ্লোবাল" সমস্যার জন্য যা চলমান সময়ের উপর বৃহত্তর নিম্নতর আবদ্ধ থাকে, যেমন বিতরণকৃত এমএসটি।


3

পেছনের যুক্তিটি হ'ল অ্যাসিম্পটোটিক আচরণের দৃষ্টিকোণ থেকে, বহুবৃত্তীয় বৃদ্ধির হার তীব্রভাবে বৃদ্ধির অতি-বহুল হারের চেয়ে কম। অনুশীলনে, ইনপুট আকার বাড়লে একটি বহু-কালীন অ্যালগরিদম সুপার-বহু-কালীন সময়ের অ্যালগরিদমের তুলনায় অনেক দ্রুত চলে।

অবশ্যই, কেউই বলবেন না যে বহুতল জটিলতার সাথে একটি অ্যালগরিদম উদাহরণস্বরূপ, O(n2000) "দক্ষ", তবে বেশিরভাগ অ্যালগরিদম খুব কমই এর জটিলতা ছাড়িয়ে যায় O(n5)

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


3

তত্ত্ব অনুসারে, একটি অ্যালগরিদমকে দক্ষ বলা হয় যদি এর সবচেয়ে খারাপ ক্ষেত্রে চলমান সময়টিকে তার ইনপুট দৈর্ঘ্যের মধ্যে একটি বহুবচন দ্বারা আবদ্ধ করা হয়। যুক্তিটি হ'ল বহুবচনগুলির দুর্দান্ত বন্ধ করার বৈশিষ্ট্য রয়েছে। পলিনোমিয়াল সংযোজন, গুণ করা, রচনাগুলি এমন ক্রিয়াকলাপ যা বহুপদী প্রাপ্ত করে এবং যদি আপনি একে অপরের প্রতি সমস্যা হ্রাস করে থাকেন তবে এগুলি ভাল।

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


যদিও আমি বুঝতে পারি যে কোনও কিছু যদি নির্দিষ্ট সমস্যার জন্য দ্রুততম অ্যালগরিদম হয় তবে এটিকে সেই দৃষ্টিকোণ থেকে "দক্ষ" হিসাবে বিবেচনা করা যেতে পারে, তবে পলটাইমে যে কোনও কার্যকর আছে তা কার্যকর হিসাবে ভাবা আমার পক্ষে কঠিন hard :-)
রবার্ট এস বার্নেস

বহুপদী রানটাইমগুলির জন্য, "দক্ষ" কেবল একটি শব্দ এবং এটি একটি বিভ্রান্তিমূলক one
রাফেল

@ রাফেল সম্ভবত ট্র্যাকটেবল আরও ভাল শব্দ ব্যবহার করা উচিত ...?
রবার্ট এস বার্নেস

1
@ রবার্টএস.বার্নেস: ইমো, এর চেয়ে বেশি ভাল নয়। "ট্র্যাকটেবল" প্রতিটি "দক্ষ" হিসাবে তুলনামূলকভাবে আপেক্ষিক।
রাফেল

0

কিছু সমস্যা সহজ, কিছু কঠিন। কোনও অ্যালগোরিদম "দক্ষ" কিনা তার উপর নির্ভর করে যে এটি সমস্যার সহজাত জটিলতার সাথে তুলনা করা যায়। যদি আপনি একটি অ্যালগরিদম খুঁজে পান যা O- তে কোনও n সংখ্যা সংখ্যার কারণ করেn3) ক্রিয়াকলাপ, এবং আমি একটি অ্যালগরিদম পাই যা হে সংখ্যাগুলিতে ও (n2) অপারেশন, তারপরে আপনার অ্যালগরিদম আরও দক্ষ ((কারণ এটি মানব জাতির কাছে একটি বিশাল ফ্যাক্টর দ্বারা পরিচিত কোনও কিছুকে পরাজিত করে, যখন আমার কোনও ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে আপনার কাছে প্রত্যাশা থাকে) mine


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