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