Assertion এবং Retraction এর মাধ্যমে Data ম্যানিপুলেশন

Database এবং Knowledge Base Creation (ডেটাবেস এবং নলেজ বেজ তৈরি) - প্রোলগ প্রোগ্রামিং (Prolog Programming) - Computer Programming

307

প্রোলগে Assertion এবং Retraction হল দুটি গুরুত্বপূর্ণ প্রেডিকেট যা ডেটার উপর ডায়নামিক (dynamic) পরিবর্তন করতে ব্যবহৃত হয়। এই প্রেডিকেটগুলো ব্যবহার করে আপনি ফ্যাক্টস এবং নিয়ম (facts and rules) তৈরি, পরিবর্তন বা মুছে ফেলতে পারেন রানটাইমের সময়, যা ডেটা ম্যানিপুলেশন এর জন্য খুবই কার্যকর।

1. Assertion (Adding Facts/Rules Dynamically)

Assertion প্রেডিকেট ব্যবহার করে নতুন ফ্যাক্ট বা নতুন নিয়ম প্রোগ্রামে রানটাইমে যুক্ত করা যায়। এতে আপনার প্রোগ্রামকে ডায়নামিকভাবে পরিবর্তন করার সুযোগ দেয়, যেমন নতুন তথ্য বা শর্ত যোগ করা।

Syntax:

assert(Clause).

এখানে, Clause হতে পারে একটি fact বা একটি rule

Assertion এর উদাহরণ:

ধরা যাক, আমাদের একটি প্রোগ্রামে কিছু ফ্যাক্ট ছিল:

পিতা(অজিজ, রহমান).

এখন, আমরা assert/1 ব্যবহার করে একটি নতুন ফ্যাক্ট যুক্ত করতে চাই:

?- assert(পিতা(রহমান, শাওন)).

এখন, প্রোগ্রামে এই ফ্যাক্টটি যুক্ত হয়ে যাবে এবং আমরা কোয়ারি করে দেখতে পারব:

?- পিতা(X, Y).

আউটপুট:

X = অজিজ,
Y = রহমান ;
X = রহমান,
Y = শাওন.

এখানে, আমরা assert ব্যবহার করে একটি নতুন পিতা সম্পর্ক যুক্ত করেছি এবং এটি সফলভাবে প্রোগ্রামের অংশ হয়ে গিয়েছে।


2. Retraction (Removing Facts/Rules Dynamically)

Retraction প্রেডিকেট ব্যবহার করে ফ্যাক্ট বা নিয়ম মুছে ফেলা যায়। এটি assert এর বিপরীত কাজ করে এবং একটি fact বা rule প্রোগ্রাম থেকে সরিয়ে ফেলে।

Syntax:

retract(Clause).

এখানে Clause হচ্ছে যে fact বা rule আপনি প্রোগ্রাম থেকে মুছে ফেলতে চান।

Retraction এর উদাহরণ:

ধরা যাক, আমাদের একটি প্রোগ্রামে assert করে কিছু ফ্যাক্ট যুক্ত করা হয়েছে:

পিতা(অজিজ, রহমান).
পিতা(রহমান, শাওন).

এখন, আমরা যদি পিতা(অজিজ, রহমান) ফ্যাক্টটি মুছে ফেলতে চাই, তাহলে retract ব্যবহার করতে পারি:

?- retract(পিতা(অজিজ, রহমান)).

এখন, এই ফ্যাক্টটি প্রোগ্রাম থেকে মুছে যাবে এবং আমরা কোয়ারি করে দেখতে পারব:

?- পিতা(X, Y).

আউটপুট:

X = রহমান,
Y = শাওন.

এখানে, পিতা(অজিজ, রহমান) ফ্যাক্টটি retract করে মুছে ফেলেছি, এবং এখন রহমানের পিতা শাওন ছাড়া অন্য কোনো ফলাফল নেই।


3. asserta/1 এবং assertz/1:

এছাড়াও, প্রোলগে asserta এবং assertz এর মতো প্রেডিকেটগুলো রয়েছে, যেগুলি assert এর মতোই কাজ করে, তবে তারা ফ্যাক্ট বা rule গুলি প্রথমে (at the head) বা শেষে (at the tail) যোগ করতে সাহায্য করে।

  • asserta/1: নতুন ফ্যাক্ট বা rule প্রথমে (head) যুক্ত করবে।
  • assertz/1: নতুন ফ্যাক্ট বা rule শেষ (tail) যুক্ত করবে।

asserta/1 উদাহরণ:

?- asserta(পিতা(আলম, মুসা)).

এটি পিতা(আলম, মুসা) ফ্যাক্টটি প্রথমে (head) প্রোগ্রামে যুক্ত করবে।

assertz/1 উদাহরণ:

?- assertz(পিতা(আলম, মুসা)).

এটি পিতা(আলম, মুসা) ফ্যাক্টটি শেষ (tail) প্রোগ্রামে যুক্ত করবে।


4. Dynamic Database:

প্রোলগে assert এবং retract ব্যবহারের মাধ্যমে ডায়নামিক ডেটাবেস তৈরি করা যায়। আপনি যখন ডায়নামিকভাবে ফ্যাক্ট বা নিয়ম যুক্ত বা মুছে ফেলেন, তখন আপনি dynamic/1 ডিক্লেয়ারেশন ব্যবহার করতে পারেন যাতে প্রোলগ জানে যে এটি একটি ডায়নামিক ফ্যাক্ট বা নিয়ম।

Dynamic Declaration উদাহরণ:

:- dynamic পিতা/2.

এটি জানায় যে, পিতা/2 ফ্যাক্টটি ডায়নামিক, এবং এর মানে হল যে আপনি পরে এই ফ্যাক্টটি assert বা retract করতে পারবেন।


assert এবং retract এর কার্যকারিতা:

  1. ডায়নামিক তথ্য পরিবর্তন: assert এবং retract ব্যবহার করে আপনি ডেটা রানটাইমে পরিবর্তন বা আপডেট করতে পারেন। এটি বিশেষত তখন দরকারি যখন আপনার প্রোগ্রামকে চলমান অবস্থায় ডেটা আপডেট বা মুছে ফেলতে হয়।
  2. স্টেট পদ্ধতি: প্রোগ্রামে state ম্যানেজমেন্টের জন্য dynamic ডেটা ব্যবহার করা যায়, যেখানে সময়ের সাথে সাথে ডেটা পরিবর্তন হয়।
  3. অনুসন্ধান এবং পর্যালোচনা: এই প্রেডিকেটগুলির সাহায্যে আপনি সম্ভাব্য বিকল্প পরীক্ষা করতে পারেন এবং একাধিক ডায়নামিক সমাধান তৈরি করতে পারেন।

সারসংক্ষেপ:

প্রোলগে assert এবং retract হল দুটি গুরুত্বপূর্ণ প্রেডিকেট যা আপনাকে ডায়নামিকভাবে ফ্যাক্ট এবং নিয়ম যুক্ত বা মুছে ফেলতে সাহায্য করে। এগুলির মাধ্যমে আপনি প্রোগ্রামের ডেটা পরিবর্তন করতে পারেন এবং runtime এ ডেটা ম্যানিপুলেশন করতে পারেন। asserta এবং assertz একই ধরনের কাজ করে, তবে তারা ফ্যাক্ট বা নিয়ম যুক্ত করার স্থান নির্ধারণ করে। dynamic/1 ডিক্লেয়ারেশন ব্যবহার করে আপনি প্রোগ্রামকে জানাতে পারেন যে এটি ডায়নামিকভাবে পরিবর্তনশীল।

Content added By
Promotion

Are you sure to start over?

Loading...