Fail Predicate হল একটি প্রোলগের বিল্ট-ইন প্রেডিকেট যা ইচ্ছাকৃতভাবে false রিটার্ন করে। এটি false রিটার্ন করিয়ে কোডের মধ্যে ব্যাকট্র্যাকিং শুরু করে এবং প্রোগ্রামের পরবর্তী বিকল্প বা শাখা পরীক্ষা করতে সাহায্য করে। সাধারণত, fail ব্যবহার করা হয় অপ্রয়োজনীয় বিকল্প বা অপ্রীতিকর শর্ত পরিহার করতে এবং প্রোগ্রামের কার্যকারিতা বাড়ানোর জন্য।
Fail Predicate এর কাজ:
- Fail শর্তের মিলে না যাওয়া বা অপ্রয়োজনীয় অবস্থায় ব্যবহার করা হয়।
- এটি false প্রদান করে এবং প্রোগ্রামের অন্য বিকল্পগুলো পরীক্ষা করার জন্য ব্যাকট্র্যাকিং শুরু হয়।
- মূলত, fail ব্যবহৃত হয় যখন কোনো নির্দিষ্ট শর্ত বা ক্ষেত্রের জন্য ফলস তৈরি করা এবং সেই শাখা বাদ দেওয়া দরকার।
Fail Predicate এর ব্যবহার:
১. অপ্রয়োজনীয় শাখা বাদ দেওয়া:
একটি উদাহরণ দেখি যেখানে একটি প্রোগ্রাম দুটি শর্ত পরীক্ষা করতে চায় এবং কোনো শর্ত না মিলে গেলে ব্যাকট্র্যাকিং করা উচিত।
চেক(1).
চেক(2).
চেক(_) :- fail.এখানে:
চেক(1)এবংচেক(2)দুটি সত্য ফ্যাক্ট।চেক(_) :- fail.তৃতীয় শর্তটিfailরিটার্ন করে, যাতে অন্য কোনো মেলানো শর্ত বা বিকল্প পরীক্ষা না করে, ব্যাকট্র্যাকিং করে।
কোয়ারি:
?- চেক(1).আউটপুট:
true.এবং,
?- চেক(3).আউটপুট:
false.এখানে fail ব্যবহার করার কারণে, চেক(3) এর জন্য কোনো ফলস্বরূপ মিলবে না, কারণ এটি অপ্রয়োজনীয় বা ভুল শর্ত।
২. ব্যাকট্র্যাকিং এবং শর্তের পরিক্ষা বন্ধ করা:
Fail ব্যবহার করে আপনি বিশেষ পরিস্থিতিতে ব্যাকট্র্যাকিংকে বাধা দিতে পারেন এবং অন্য শর্ত বা সম্ভাবনা পরীক্ষা বন্ধ করতে পারেন।
পিতা(অজিজ, রহমান).
পিতা(রহমান, শাওন).
পিতা(সোহেল, fail).
পরীক্ষা(X) :- পিতা(অজিজ, X), !.
পরীক্ষা(X) :- পিতা(রহমান, X).এখানে, যখন পিতা(সোহেল, fail) আসে, তখন fail এর কারণে কোডটি false রিটার্ন করবে এবং পরবর্তী শর্ত পরীক্ষা করা হবে না।
কোয়ারি:
?- পরীক্ষা(রহমান).এখানে, প্রথম শর্ত পিতা(অজিজ, রহমান) সত্য হলে ! (cut) ব্যবহার করে ব্যাকট্র্যাকিং থেমে যাবে এবং দ্বিতীয় শর্ত পরীক্ষা করা হবে না।
আউটপুট:
X = রহমান.৩. ফলস তৈরি করা (False Return):
Fail একটি false রিটার্ন করে, যা ডিবাগিং বা লজিক্যাল পরীক্ষায় কাজে আসতে পারে। এটি ডিবাগিংয়ের সময় কোনো নির্দিষ্ট শর্তের জন্য ফলস প্রদান করতে ব্যবহৃত হয়। উদাহরণস্বরূপ:
ফলস_প্রশ্ন :- fail.এটি একটি কাস্টম fail প্রেডিকেট তৈরি করে, যা ইচ্ছাকৃতভাবে false রিটার্ন করবে।
কোয়ারি:
?- ফলস_প্রশ্ন.আউটপুট:
false.এটি বিশেষত তখন ব্যবহার হয় যখন আপনি কোনো শর্তের মধ্যে ব্যর্থতা বা অপ্রয়োজনীয় শাখা দেখাতে চান।
৪. স্ট্রাকচারাল বা লজিক্যাল অপটিমাইজেশন:
Fail ব্যবহার করলে আপনি অপ্রয়োজনীয় শর্ত বা শাখা বাদ দিতে পারেন এবং কোডের কার্যকারিতা বাড়াতে পারেন। এটি বিশেষভাবে প্রোগ্রামে অনেকগুলি বিকল্প বা শর্ত পরীক্ষা করতে গেলে সময় বাঁচাতে সহায়ক। উদাহরণস্বরূপ, যদি একটি নির্দিষ্ট শর্ত পূর্ণ হলে পরবর্তী শর্তগুলো পরীক্ষা না করা প্রয়োজন, তবে fail ব্যবহার করে সেটি বন্ধ করা যেতে পারে।
Fail Predicate এর সুবিধা:
- অপ্রয়োজনীয় শর্ত পরীক্ষা বন্ধ:
Fail ব্যবহার করে আপনি প্রোগ্রামের অপ্রয়োজনীয় শর্তগুলো পরীক্ষা করা বন্ধ করতে পারেন, যার ফলে এটি আরও কার্যকরী হয়ে ওঠে। - ব্যাকট্র্যাকিং নিয়ন্ত্রণ:
ব্যাকট্র্যাকিংকে নিয়ন্ত্রণ করতে এবং কার্যকরীভাবে বিকল্পগুলো পরীক্ষা করতে fail সহায়ক হতে পারে। - ডিবাগিং:
যখন একটি প্রোগ্রামে শর্তগুলি যথাযথভাবে পরীক্ষা করা হচ্ছে না, তখন fail ব্যবহার করে সঠিকভাবে কোন শর্তটি মিথ্যা বা ব্যর্থ হচ্ছে তা শনাক্ত করা যেতে পারে।
সারসংক্ষেপ:
Fail Predicate প্রোলগে একটি বিশেষ ধরনের প্রেডিকেট যা ইচ্ছাকৃতভাবে false রিটার্ন করে এবং ব্যাকট্র্যাকিং বা শর্তের পরিক্ষা নিয়ন্ত্রণ করতে সহায়ক। এটি প্রোগ্রামের কর্মক্ষমতা বাড়াতে এবং অপ্রয়োজনীয় বিকল্পগুলো পরিহার করতে ব্যবহৃত হয়। Fail বিশেষ করে তখন কাজে আসে যখন আপনি নিশ্চিত হতে চান যে, কোনো নির্দিষ্ট শর্ত বা শাখা আর পরীক্ষা করা হবে না এবং প্রোগ্রামটি দ্রুত ফলস্বরূপে পৌঁছাবে।
Read more