হার্ডওয়্যার / বাস্তবায়ন কি অ্যালগরিদমের সময় / স্থান জটিলতায় প্রভাব ফেলবে?


32

আমি এমনকি সিএসের ছাত্রও নই, সুতরাং এটি মূ question় প্রশ্ন হতে পারে তবে দয়া করে আমার সাথে সহ্য করুন ...

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

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

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

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

আমার কাছে, অ্যালগরিদমগুলি বিমূর্ত এবং ধারণাগত, যার সময় / স্থান জটিলতার মতো বৈশিষ্ট্যগুলি নির্দিষ্ট উপায়ে প্রয়োগ করা হচ্ছে কিনা তা দ্বারা প্রভাবিত হওয়া উচিত নয়, তবে তারা কি?


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

উত্তর:


42

অবশ্যই। নিশ্চয়ই. আপনার অস্বস্তি পুনরুদ্ধার করতে পারেন তা এখানে।

O(logn)O(1)

আপনি একবার গণনার মডেল বেছে নিলে, অ্যালগরিদমের বিশ্লেষণটি খাঁটি বিমূর্ত, ধারণামূলক, গাণিতিক অনুশীলন যা আর হার্ডওয়ারের উপর নির্ভর করে না।

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

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


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

6
আরও লক্ষ করুন যে ও () স্বরলিপিটি একটি উপরের বাউন্ড। এমনকি যদি আপনি একটি সীমিত আকারে ড্রয়ার সন্ধানের সাথে ড্রয়ার সাদৃশ্য ব্যবহার করেন (আসল স্মৃতি আকারে সীমাবদ্ধ থাকে) বিল্ডিংয়ে ও (1) সময় নেয়। এমনকি সর্বাধিক ড্রয়ারে পৌঁছতে আপনার 20 মিনিট সময় লেগে গেলেও (সমস্ত ক্যাশে মিস হয় এবং আপনাকে এমনকি অদলবদল থেকে ডেটা লোড করতে হয়) এখনও ও (1) সময় কারণ 20 মিনিট স্মৃতি অ্যাক্সেসের জন্য আপনার লুকানো ধ্রুবক হবে।
গোসউইন ভন ব্রেরড্রলো

2
O(1)O(n)

1
@ কর্টআ্যাম্মন: এমনকি বড় অ্যারেতে, লিনিয়ার অনুসন্ধান ব্যবহার করা হ্যাশ মানচিত্র ব্যবহারের চেয়ে দ্রুত হতে পারে যদি এর মধ্যে থাকা কয়েকটি উপাদান বাদে সমস্ত কিছু শুরুটির খুব কাছাকাছি থাকে। উদাহরণস্বরূপ, যদি 50% উপাদানগুলি প্রথম উপাদানটির সাথে মিলিত হয়, 25% দ্বিতীয়টির সাথে মেলে, 12.5% ​​তৃতীয়টির সাথে মিলে যায় except তবে একটি ওডবাল উপাদান এমন কোনও কিছু মিলবে যা অ্যারের যে কোনও জায়গায় হতে পারে, তুলনায় প্রত্যাশিত সংখ্যার সাথে আকারের এন এর একটি তালিকাতে এম লুকআপগুলি সম্পাদন করা 2M + N হবে।
সুপারক্যাট

5
@ প্রদীপ জোশি সিমডি নির্দেশাবলী অ্যালগরিদমের জটিলতা পরিবর্তন করে না। তারা কেবল গুণক ধ্রুবক পরিবর্তন করে।
গিলস 'অশুভ হওয়া বন্ধ করুন'

5

আমি মনে করি যে প্রশ্নে একটি মৌলিক ভুল বোঝাবুঝি আছে। আপনি কোনও ব্যক্তিকে একটি সাজানো তালিকায় (যেমন কোনও বইয়ের একটি নির্দিষ্ট পৃষ্ঠা, তার নম্বর দেওয়া) একটি কম্পিউটারের সাথে অ্যারের থেকে কোনও আইটেম সন্ধান করার সাথে তুলনা করুন।

O(logn)O(1)

সুতরাং, হ্যাঁ, ডিডাব্লু ব্যাখ্যা অনুসারে হার্ডওয়্যার (অর্থাত্ গণনার মডেল) অ্যালগরিদমের চলমান সময়কে প্রভাবিত করে , তবে এটি আপনার অ্যারে অ্যাক্সেসের উদাহরণের উপর নির্ভর করে বলে মনে হয় না।


2
ন্যায়সঙ্গত হওয়ার জন্য, আপনি "মেমরি কন্ট্রোলারটি তারের ভল্টেজগুলি সতেরের বাইনারি উপস্থাপনায়" তারের মধ্যে ভোল্টেজ সেট করে "এবং" ডেটা ফিরে আসে "এর মধ্যে সমস্ত টুকরো এড়িয়ে গিয়েছিলেন। এই টুকরোগুলির মধ্যে একটি সম্ভবত ওপি দ্বারা বর্ণিত ধরণের একটি বাইনারি অনুসন্ধান গাছ; তবে তা সত্ত্বেও ধ্রুবক সময়ে কার্যকর করা হয় কারণ লগ এন সমস্ত এন এর জন্য প্রায় 64 হয়
কুইকপ্লসোন

@ Quuxplusone মেমরির কোন অংশ বাইনারি অনুসন্ধান ব্যবহার করে? ঠিকানা লাইনগুলি সরাসরি মেমরির ঘর নির্বাচন করে।
ডেভিড রিচার্বি

আমরা আমার দক্ষতার ক্ষেত্রের বাইরে অনেকগুলি অপারেশন করছি, তবে আমি যে বিষয়টি বোঝানোর চেষ্টা করছিলাম তা হ'ল একটি ঠিকানা ডিকোডারটি ডেমাক্সারের গাছের ক্ষেত্রে প্রয়োগ করা হবে । (ধরে নিই যে আমরা ক্যাচিংয়ের সাথে আসা কোনও অতিরিক্ত জটিলতা উপেক্ষা করে সরাসরি শারীরিক স্মৃতিতে আঘাত করছি )) আবার, এই সমস্ত অতিরিক্ত জটিলতা কেবল যুক্ত করে O(lg size-of-memory), অর্থহীন - তবে ঠিক ওপি সম্পর্কেই এটি জিজ্ঞাসা করেছিল!
কউকপ্লসোন

2

না, হার্ডওয়্যার অ্যালগরিদমের জটিলতা প্রভাবিত করে না।

তবে এটি অ্যালগরিদমের পছন্দকে প্রভাবিত করে এবং জটিলতা বিশ্লেষণের কার্যকারিতাটিকে এমন পর্যায়ে প্রভাবিত করতে পারে যেখানে বিশ্লেষণটি বেশ অর্থহীন হয়ে পড়ে (বা কেবলমাত্র একাডেমিক আগ্রহের)।

ডান ড্রয়ার সন্ধান করা (অ্যারে উপাদানটিতে অ্যাক্সেস হিসাবে) "অ্যালগরিদম সরাসরি সূচী দ্বারা Nth এলিমেন্টটি ব্যবহার করে," অনুসন্ধান লাইনারিভাবে "বা" বাইনারি অনুসন্ধান করুন "অ্যালগরিদমকে নয়। অ্যালগরিদম পরিবর্তন করা হয় না, কিন্তু পছন্দ।

অন্যদিকে জটিলতা বিশ্লেষণ নিজেই বা এর অর্থবোধকতা হার্ডওয়ার দ্বারা ব্যাপকভাবে প্রভাবিত হয়।

তাদের জটিলতার বিশ্লেষণের মাধ্যমে অনেকগুলি অ্যালগরিদমগুলি গরিব পারফর্মার বা এমনকি অনুশীলনে অকেজো কারণ তুচ্ছ স্থির কারণটি মোটেই তুচ্ছ নয়, তবে প্রভাবশালী

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

এটি কয়েক বছর আগে কোকিল হ্যাশিংয়ের মতো মজাদার বিস্ময়ের জন্ম দিয়েছে। যা অত্যন্ত উন্নত ছিল কারণ [সুবিধার দীর্ঘ তালিকা]। হাইপ ঠান্ডা হওয়ার পরে, এটি প্রমাণিত হয়েছিল যে এটি অত্যন্ত নিম্নমানের কারণ এটি প্রতিটি অ্যাক্সেসে দুটি ক্যাশে মিস (গুনাগুণ, বৃহত্তর ডেটা সেটগুলির জন্য) গ্যারান্টি দিয়েছিল

ডেটা সাবটেট সনাক্তকরণ এবং প্রক্রিয়াজাতকরণের ক্ষেত্রেও একই ঘটনা ঘটেছে। প্রায়শই, আজকাল সঠিক সমাধানটি হ'ল: "কেবল এটিই করুন" , অর্থাত্ আপনার কী অনুমান করা উচিত এবং তা করার দরকারের পরিবর্তে সম্পূর্ণ ডেটাसेटটি রৈখিকভাবে প্রক্রিয়া করুন এমনকি আপনার যদি কেবলমাত্র এটির অর্ধেক প্রয়োজন হয়। কারণ, এটি বিশ্বাস করুন বা না করুন, কোনও শাখার ভুল অনুমান, কোনও ক্যাশে মিস করবেন না, কোনও পৃষ্ঠা ত্রুটির কারণে এটি দ্রুত that's
3 এমবি ফাইলের প্রথম 8 কেবি এবং শেষ 3 কেবি পড়তে হবে? ঠিক আছে, সম্পূর্ণ ফাইলটি পড়ুন এবং আপনি যা চান না তা ফেলে দিন, কারণ এর মধ্যে সন্ধান করা সম্পূর্ণ জিনিসটি পড়ার চেয়ে দশগুণ কম হবে।

মানচিত্রটি ব্যবহার করুন কারণ এতে লগারিদমিক জটিলতা রয়েছে? বা একটি হ্যাশ টেবিল, যা অবিচ্ছিন্ন অ্যাক্সেস সময় আছে? ধীরে ধীরে দুর্দান্ত লাগছে sounds ঠিক আছে, হাজার বা তারও কম কিছু (যেকোন হার্ডওয়্যার, ডেটার আকার এবং অ্যাক্সেস প্যাটার্নের উপর নির্ভর করে) এর জন্য কোনও লিনিয়ার অনুসন্ধান ঠিক তত ভাল বা আরও ভাল হতে পারে। আশ্চর্য.

সুতরাং, এটি প্রতি সে অনুযায়ী আলগোরিদিমগুলি প্রভাবিত হয় না, তবে তাদের উপযোগিতা এবং পছন্দ।

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