প্রোলগে, AND, OR, এবং NOT অপারেটরগুলি গাণিতিক বা লজিক্যাল সম্পর্ক তৈরি করতে ব্যবহৃত হয়। এগুলি সাধারণত লজিক্যাল কনজাঙ্কশন (AND), লজিক্যাল ডিসজাঙ্কশন (OR) এবং লজিক্যাল নেগেশন (NOT) হিসাবেও পরিচিত।
এই অপারেটরগুলো প্রোলগে লজিক্যাল সম্পর্ক প্রতিষ্ঠা করার জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে এবং কোয়েরি বা ফ্যাক্ট এর মধ্যে সম্পর্ক তৈরি করতে সহায়ক হয়।
1. AND অপারেটর (Conjunction)
AND অপারেটর প্রোলগে , (কমা) দিয়ে প্রকাশ করা হয়, যা দুইটি শর্ত বা সম্পর্কের মধ্যে এবং সম্পর্ক স্থাপন করে। এটি দুটি শর্ত একসাথে পূর্ণ হলে সঠিক (True) হবে।
AND অপারেটরের কাজ:
X, Yএইভাবে লেখা মানে হলো যে X এবং Y উভয়ই সত্য হতে হবে। যদি X বা Y এর মধ্যে কোনো একটিও মিথ্যা হয়, তবে পুরো সম্পর্ক মিথ্যা হবে।
উদাহরণ:
প্রাপ্তি(X, Y) :- পিতা(X, Y), মা(X, Y).এখানে, প্রাপ্তি(X, Y) শর্তটি সত্য হবে যদি পিতা(X, Y) এবং মা(X, Y) উভয় শর্তই সত্য হয়। অর্থাৎ, X এবং Y এর মধ্যে পিতা এবং মা সম্পর্ক সত্য হতে হবে।
কোয়ারি:
?- প্রাপ্তি(অজিজ, রহমান).এটি প্রথমে পিতা(অজিজ, রহমান) এবং পরে মা(অজিজ, রহমান) পরীক্ষা করবে। যদি উভয়ই সত্য হয়, তাহলে ফলাফল হবে।
2. OR অপারেটর (Disjunction)
OR অপারেটর প্রোলগে ; (সেমিকোলন) দিয়ে প্রকাশ করা হয়, যা দুটি শর্তের মধ্যে অথবা সম্পর্ক স্থাপন করে। এটি যেকোনো এক শর্ত সত্য হলেই পুরো সম্পর্ক সত্য হবে।
OR অপারেটরের কাজ:
X ; Yএইভাবে লেখা মানে হলো X অথবা Y এর যেকোনো একটি সত্য হলেই সম্পর্কটি সত্য হবে। দুটি শর্তই মিথ্যা হলে পুরো সম্পর্ক মিথ্যা হবে।
উদাহরণ:
বড়_লোক(X) :- পিতা(X, Y); মা(X, Y).এখানে, বড়_লোক(X) শর্তটি সত্য হবে যদি পিতা(X, Y) অথবা মা(X, Y) এর মধ্যে যেকোনো একটি সম্পর্ক সত্য হয়। অর্থাৎ, যদি X এর পিতা বা মা কেউ থাকেন, তবে তাকে বড় লোক হিসেবে গণ্য করা হবে।
কোয়ারি:
?- বড়_লোক(অজিজ).এটি পিতা(অজিজ, Y) অথবা মা(অজিজ, Y) সম্পর্ক পরীক্ষা করবে এবং যে কোন একটি সম্পর্ক সত্য হলে ফলস্বরূপ প্রদান করবে।
3. NOT অপারেটর (Negation)
NOT অপারেটর প্রোলগে not/1 বা \+ (ব্যাকস্ল্যাশ প্লাস) দিয়ে প্রকাশ করা হয়। এটি একটি শর্তের নেগেশন বা বিপরীত সম্পর্ক প্রকাশ করে, অর্থাৎ, যদি কোনো শর্ত সত্য না হয়, তবে সেই শর্তকে মিথ্যা হিসাবে মূল্যায়ন করবে।
NOT অপারেটরের কাজ:
\+ Xবাnot(X)অর্থাৎ শর্ত X যদি মিথ্যা হয়, তবেnot(X)সত্য হবে। এটি প্রোগ্রামিংয়ের মধ্যে নেগেটিভ শর্ত তৈরি করতে ব্যবহৃত হয়।
উদাহরণ:
অধিকার(X) :- not(পিতা(X, _)).এখানে, অধিকার(X) শর্তটি তখনই সত্য হবে যখন পিতা(X, _) সম্পর্ক মিথ্যা হবে, অর্থাৎ X এর কোনো পিতা নেই।
কোয়ারি:
?- অধিকার(অজিজ).এটি পরীক্ষা করবে যে পিতা(অজিজ, _) সম্পর্ক মিথ্যা কি না। যদি মিথ্যা হয়, তাহলে অধিকার(অজিজ) সত্য হবে।
উদাহরণ একসাথে:
ধরা যাক, আমাদের একটি প্রোগ্রাম আছে যা পিতা, মা, এবং ভাই-বোন সম্পর্কের মধ্যে যুক্তি তৈরি করে। এখানে AND, OR, এবং NOT অপারেটর একসাথে ব্যবহার করা হবে।
পিতা(রহমান, শাওন).
মা(নুসরাত, শাওন).
ভাই(শাওন, রহমান).
বড়_লোক(X) :- পিতা(X, _); মা(X, _).
ভাই_বা_বোন(X, Y) :- পিতা(X, Z), পিতা(Y, Z), X \= Y.এখানে:
বড়_লোক(X)সম্পর্কটিপিতা(X, _)অথবামা(X, _)সম্পর্কের উপর ভিত্তি করে সত্য হবে।ভাই_বা_বোন(X, Y)সম্পর্কটিপিতা(X, Z)এবংপিতা(Y, Z)এর মিল দিয়ে তৈরি হবে, যেখানে X এবং Y একে অপরের ভাই বা বোন।
কোয়ারি:
?- বড়_লোক(রহমান).এটি পিতা(রহমান, _) বা মা(রহমান, _) সম্পর্ক পরীক্ষা করবে এবং ফলস্বরূপ যদি সত্য হয়, তাহলে উত্তর দিবে।
?- ভাই_বা_বোন(শাওন, রহমান).এটি পিতা(শাওন, Z) এবং পিতা(রহমান, Z) পরীক্ষা করবে এবং যদি উভয়ই সত্য হয়, তবে ভাই_বা_বোন(শাওন, রহমান) সত্য হবে।
সারসংক্ষেপ:
- AND (``,`)**: দুটি শর্ত এবং সম্পর্কের মাধ্যমে একসাথে সত্য হতে হবে।
- OR (
;): দুটি শর্ত অথবা সম্পর্কের মাধ্যমে যেকোনো একটি সত্য হলে পুরো সম্পর্ক সত্য হবে। - NOT (
\+বাnot/1): একটি শর্তের বিপরীত সম্পর্ক তৈরি করে, অর্থাৎ শর্তটি মিথ্যা হলে এটি সত্য হবে।
এই অপারেটরগুলো প্রোলগে লজিক্যাল সম্পর্ক তৈরি করতে এবং কোডের কার্যকারিতা বাড়াতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Read more