আমি মনে করি যে বিমূর্ততার স্তরের মধ্যে একটি বিভ্রান্তির কারণে উপমাটি খাপ খায় না।
কল্পনা করুন আপনার একটি প্লাস্টিকের বার এবং একটি অ্যালুমিনিয়াম রড সংযুক্ত করা দরকার। এই ইঞ্জিনিয়ারিংয়ের সমস্যা সমাধানের মধ্যে কোনও যান্ত্রিক ফাস্টেনার, বা যৌথ, বা আঠালো, বা অন্য যে কোনও কিছুই ব্যবহার করবেন কিনা তা সিদ্ধান্ত নেওয়া জড়িত; বা কিছু কার্যকর পদ্ধতি অবলম্বন করে আপনি কাজ করে যা কিছু কাজ করে না। এটি একটি নকশা স্তর সমস্যা। প্রভাবিত করার কারণগুলি এ জাতীয় জিনিস হতে পারে:
- প্রয়োগ করা হবে কি বোঝা?
- এটি দৃশ্যমান এবং এটি ঝরঝরে চেহারা প্রয়োজন?
- এটি কোন পরিবেশগত অবস্থার সাপেক্ষে হবে? (পানির নীচে বা বাতাসে, তাপমাত্রা, চাপ ইত্যাদি)
- এটি কী পরিধান করবে এবং এটি কত দিন স্থায়ী হতে হবে?
এখন কল্পনা করুন আপনার সমস্ত 5-সংখ্যার পূর্ণসংখ্যার প্যালিনড্রোমগুলি পাওয়া উচিত যা কোনও ইনপুট পূর্ণসংখ্যার একাধিক <n>
। এই কম্পিউটার বিজ্ঞানের সমস্যা সমাধানে প্রোগ্রামিং ভাষা / প্ল্যাটফর্ম বেছে নেওয়া, একটি অ্যালগরিদম নির্বাচন করা এবং কিছু কোড লেখা অন্তর্ভুক্ত; বা কিছু কার্যকর পদ্ধতি অবলম্বন করে আপনি কাজ করে যা কিছু কাজ করে না। এটিও একটি নকশা স্তর বিষয়। প্রভাবিত করার কারণগুলি এ জাতীয় জিনিস হতে পারে:
- এটি কতবার বলা হবে এবং কত দ্রুত সম্পাদন করা প্রয়োজন?
- এটি কি কোনও বৃহত্তর প্রোগ্রামের উপ-রুটিন বা একা একা থাকা প্রোগ্রাম?
- কীভাবে বলা হবে? (ফাংশন, কমান্ড লাইন, এইচটিটিপি অনুরোধ, ইত্যাদি)
- এটি কোন ধরণের আউটপুট উত্পাদন করা উচিত - গ্রাহকরা কারা?
কম্পিউটার বিজ্ঞানে অনুসন্ধানের স্থান হ্রাস করা উপরের নকশা কার্যগুলিতে বিমূর্ততার একটি ভিন্ন স্তরে। উদাহরণস্বরূপ বলুন আপনি পাইথনে প্রোগ্রামটি লিখেছেন এবং আপনি এটিকে কমান্ড লাইন থেকে স্ট্যান্ড-অ্যালোন প্রোগ্রাম হিসাবে চালিত করেন যাতে কোনও মানুষ আউটপুট দেখতে পারে। একটি অশোধিত বাস্তবায়ন যথেষ্ট হতে পারে:
#!/usr/bin/python
def isPalindrome(n):
return str(n) == str(n)[::-1]
def isMultiple(n, d):
return (n % d) == 0
for i in xrange(10000,99999+1):
if isMultiple(i, 17) and isPalindrome(i):
print i;
এটি লেখার জন্য খুব দ্রুত ছিল এবং এটিকে অনুকূলকরণ বা উন্নত করার দরকার নেই কারণ এটি করা কীভাবে এটি ব্যবহারের উদ্দেশ্যে তা বিবেচনা করে সময় নষ্ট করবে। ইঞ্জিনিয়ারিং সমস্যার আনুষাঙ্গিক সমাধানটি একটি আঠালো-বন্দুক বা কিছু টেপ ব্যবহার করা কারণ প্লাস্টিকের বারটি কেবল ট্রানজিট চলাকালীন স্লাইডিং অ্যালুমিনিয়াম রডের ফর্মটি থামানোর জন্য সেখানে থাকে।
এখন, যদি সেই নকশার প্রয়োজনীয়তাগুলি পরিবর্তন হয়?
যদি প্যালিনড্রোম জেনারেটরটি যদি কোনও এইচটিটিপি সংযোগের মাধ্যমে একটি বড় ব্যবহারকারী-বেস সহ কোনও অ্যাপ্লিকেশন থেকে প্রতি সেকেন্ডে বহুবার কল করার প্রয়োজন হয় তবে আমি ভিন্ন পদ্ধতির পুনরায় বিবেচনা করতে পারি। প্ল্যাটফর্ম, ভাষা, ইন্টারফেস ইত্যাদি but তবে আমি অবশ্যই অ্যালগরিদমের অনুসন্ধানের স্থান হ্রাস করার বিষয়টি বিবেচনা করব। দুটি পরীক্ষা দিয়ে সমস্ত পূর্ণসংখ্যার উপর একটি লুপের পরিবর্তে, আমি কেবল <n>
প্রথমটি শুরু করে এবং n
প্রতিটি সময় যুক্ত করে শুরু করার জন্য বহুগুণ বিবেচনা করব । এটি একটি অপ্টিমাইজেশন বা পারফরম্যান্স স্তর সমস্যা।
একইভাবে, যদি কোনও 5 বছরের জীবনকাল ধরে কোনও ব্যবহারকারীর মুখোমুখি কীপ্যাড প্যানেলটি ডিফল্টিং থেকে রোধ করার জন্য যদি প্লাস্টিকের বারটি অ্যালুমিনিয়াম রডের সাথে সংযুক্ত করে থাকতে হয় তবে আমি পৃথক সংযোগের ধরণটি বিবেচনা করতে পারি, যেমন আঠালো সহ একটি সাধারণ আকৃতির জয়েন্ট , এবং আমি অবশ্যই ব্যবহারযোগ্য আঠালো এর সমতুল্য পারফরম্যান্স স্তর সমস্যা বিবেচনা করব । এটি কোন পরিবেশে ব্যবহৃত হবে তার উপর নির্ভর করে আমি উভয় উপাদান এবং কার্যকর অপারেটিং শর্তগুলির জন্য আঠালো শক্তি সন্ধান করব।
সুতরাং আপনি দেখুন, উপমাটি আসলে কাজ করে না। অনুসন্ধানের জায়গা হ্রাস করা হাতের কাজ এবং এটি কীভাবে কার্যকর করা হয়েছে উভয়ের পক্ষে অত্যন্ত সুনির্দিষ্ট। এটি অপ্রয়োজনীয় প্রার্থীদের বাদ দেওয়ার জন্য (বা প্রথম স্থানে বিবেচনা না করা) তুচ্ছ প্রত্যাখ্যান সম্পর্কে। সিএস: পরীক্ষাগুলি করা প্রয়োজন এমন মোট সংখ্যা হ্রাস করুন; EN: অনুপযুক্ত আঠালোকে বাদ দিন। উভয়ই হাতের কার্যের অত্যন্ত সুনির্দিষ্ট আশাবাদ। আপনি যে বিষয়ে কথা বলছেন তা হ'ল সম্ভাব্য নকশা সমাধানগুলির "অনুসন্ধানের স্থান" হ্রাস করার একটি সাধারণ উদ্দেশ্য । যা আসলে বোঝায় না।