প্রোলগ একটি ডিক্লারেটিভ প্রোগ্রামিং ভাষা, যেখানে প্রোগ্রামারকে কীভাবে কাজ করবে তা নির্দেশনা না দিয়ে, কেবল কি কাজ করতে হবে তা বলা হয়। প্রোগ্রামটি এই প্রশ্নের উত্তর খুঁজে বের করার জন্য ফ্যাক্ট এবং নিয়ম ব্যবহার করে ইনফারেন্স তৈরি করে। Queries এর মাধ্যমে প্রোগ্রামটি তার তথ্যভাণ্ডার থেকে সংশ্লিষ্ট ফলাফল বের করে দেয়।
প্রোলগে Queries কীভাবে কাজ করে?
প্রোলগে queries ব্যবহারের মাধ্যমে আপনি বিভিন্ন সম্পর্ক এবং তথ্য অনুসন্ধান করতে পারেন। একটি query হল একটি প্রশ্ন যা প্রোলগের ফ্যাক্ট এবং নিয়মের উপর ভিত্তি করে উত্তর খোঁজে।
প্রোলগে যখন আপনি একটি query করেন, তখন এটি কোডে যে ফ্যাক্ট এবং নিয়ম (rules) রয়েছে, তা অনুসরণ করে উপযুক্ত উত্তর বা ফলাফল দেয়। এটি সাধারণত ?- দিয়ে শুরু হয় এবং প্রোগ্রামটি আপনার প্রশ্নের ভিত্তিতে সম্পর্কিত ফলাফলগুলো প্রদান করে।
১. Query ব্যবহার করার উদাহরণ
ধরা যাক, আমাদের একটি পরিবারের তথ্য রয়েছে এবং আমরা এর মাধ্যমে query করতে চাই, যেমন—একটি ব্যক্তি আরেকজনের পিতা কি না, অথবা ভাই-বোন সম্পর্ক ইত্যাদি।
ফ্যাক্ট (Fact) এবং নিয়ম (Rule):
% ফ্যাক্ট: পরিবার সম্পর্ক
পিতা(অজিজ, রহমান).
পিতা(রহমান, সোহেল).
পিতা(রহমান, সোহেল).
মা(রহমান, সোহেল).
মা(সোহেল, তারেক).
% নিয়ম: ভাই-বোন সম্পর্ক
ভাই_বা_বোন(X, Y) :- পিতা(Z, X), পিতা(Z, Y), X \= Y.
ভাই_বা_বোন(X, Y) :- মা(Z, X), মা(Z, Y), X \= Y.এখানে, আমাদের তিনটি পিতা সম্পর্ক, দুটি মা সম্পর্ক এবং দুটি ভাই-বোন সম্পর্ক রয়েছে।
Query 1: পিতা সম্পর্ক খুঁজে পাওয়া:
আমরা জানতে চাই যে অজিজ এর পিতা কে। এ জন্য কোয়ারি করা হবে:
?- পিতা(অজিজ, X).এখানে প্রোলগ দেখবে যে অজিজ এর পিতা কে এবং সেটি রহমান বলে ফলাফল দেবে।
ফলাফল:
X = রহমান.Query 2: ভাই-বোন সম্পর্ক:
এখন, আমরা জানতে চাই যে রহমান এবং সোহেল ভাই-বোন কিনা। কোয়ারি করা হবে:
?- ভাই_বা_বোন(রহমান, সোহেল).এটি রহমান এবং সোহেল এর মধ্যে ভাই-বোন সম্পর্ক পরীক্ষা করবে এবং ফলস্বরূপ জানাবে।
ফলাফল:
true.এখানে প্রোলগ দেখাবে যে তারা ভাই-বোন।
Query 3: ভাই-বোন সম্পর্ক খোঁজা:
এখন, আমরা একটি কোয়ারি করতে চাই, যা একসাথে পিতা এবং মা সম্পর্ক পরীক্ষা করে যে কেউ ভাই-বোন কিনা:
?- ভাই_বা_বোন(X, Y).এটি প্রোলগের পিতা এবং মা সম্পর্ক অনুসন্ধান করবে এবং ভাই-বোন সম্পর্ক তৈরি করবে। প্রোলগ কয়েকটি সম্ভাব্য উত্তর দেখাতে পারে:
ফলাফল:
X = সোহেল,
Y = রহমান ;
X = রহমান,
Y = সোহেল.এটি বলে যে, সোহেল এবং রহমান ভাই-বোন, এবং রহমান এবং সোহেল ভাই-বোন।
২. ব্যাকট্র্যাকিং এবং Query এর সাহায্যে সমস্যা সমাধান
প্রোলগের একটি শক্তিশালী বৈশিষ্ট্য হলো ব্যাকট্র্যাকিং, যা query করার সময় যদি প্রথম উত্তরটি সঠিক না হয় তবে অন্য সম্ভাব্য উত্তর খুঁজে বের করে। প্রোলগ প্রতিটি query সম্পাদন করার পর ব্যাকট্র্যাকিং করে অন্যান্য বিকল্প সমাধান পরীক্ষা করে, যা এটি ফলস্বরূপ সরবরাহ করে।
Query 4: বিভিন্ন পিতা সম্পর্ক
ধরা যাক, আপনার কাছে একাধিক পিতা সম্পর্ক আছে এবং আপনি খুঁজে পেতে চান যে রহমান এর পিতা কে। আপনার কোয়ারি হবে:
?- পিতা(রহমান, X).এখন, যদি একাধিক পিতা সম্পর্ক থাকে, প্রোলগ ব্যাকট্র্যাকিং করবে এবং প্রতিটি সম্ভাব্য উত্তর প্রদান করবে।
ফলাফল:
X = রহমান ;
X = সোহেল ;এটি পরীক্ষা করে যে রহমান এর পিতা রহমান বা সোহেল হতে পারে এবং তা আউটপুট করে।
৩. Query এর মাধ্যমে গাণিতিক সমস্যা সমাধান
প্রোলগ ব্যবহার করে আপনি গাণিতিক বা অঙ্কের সমস্যা সমাধান করতে পারেন। এটি গাণিতিক অপারেশনগুলোর জন্য প্রোলগের is অপারেটর ব্যবহার করে অঙ্ক গণনা করা সম্ভব।
Query 5: গাণিতিক সমস্যা সমাধান
ধরা যাক, আপনি একটি সরল যোগফল বের করতে চান। কোয়ারি হতে পারে:
?- X is 5 + 3.এটি X এর মান ৮ হিসেবে ফলাফল প্রদান করবে।
ফলাফল:
X = 8.এছাড়া, গাণিতিক গুণফল, বিয়োগ, ভাগফল ইত্যাদি হিসাব করা সম্ভব:
?- Y is 10 * 4.ফলাফল:
Y = 40.সারসংক্ষেপ
Queries প্রোলগে তথ্য অনুসন্ধান এবং সমস্যা সমাধানের একটি শক্তিশালী পদ্ধতি। কোয়ারির মাধ্যমে আপনি বিভিন্ন ফ্যাক্ট এবং নিয়ম পরীক্ষা করে ফলাফল বা উত্তর পেতে পারেন। প্রোলগের ব্যাকট্র্যাকিং কৌশলটি কোয়ারি চলাকালে অন্য সম্ভাব্য সমাধান খুঁজে বের করতে সাহায্য করে। প্রোলগে queries ব্যবহার করে সম্পর্ক তৈরি, গাণিতিক সমস্যা সমাধান এবং আরও জটিল সমস্যার সমাধান করা সম্ভব।
Read more