সমস্যা
নাম্বার লাইনে অবস্থান N-এ থেকে শুরু। প্রতিটি মুভে বামে যাওয়ার প্রোবাবিলিটি L، ডানে যাওয়ার 1-L। N মুভ পর নাম্বার লাইনের প্রতিটি পজিশনে পৌঁছানোর প্রোবাবিলিটি বের করুন।
ডাইনামিক প্রোগ্রামিং সমাধান
A[i][j]=iমুভ পর পজিশনj-এ থাকার প্রোবাবিলিটি।- বেস:
A[1][N+1] = 1-L(ডান),A[1][N-1] = L(বাম)। - ট্রানজিশন:
A[i][j] += A[i-1][j-1] * (1-L)(ডান থেকে আসা)।A[i][j] += A[i-1][j+1] * L(বাম থেকে আসা)।
- আউটপুট:
A[N][*]।
C++ কোড
#include <bits/stdc++.h>
using namespace std;
void find_prob(int n, double low) {
double high = 1 - low;
double A[n+1][2*n+1] = {{0}};
A[1][n+1] = high;
A[1][n-1] = low;
for (int i=2; i<=n; i++) {
for (int j=1; j<=2*n; j++)
A[i][j] += A[i-1][j-1] * high;
for (int j=2*n-1; j>=0; j--)
A[i][j] += A[i-1][j+1] * low;
}
for (int i=0; i<2*n+1; i++)
cout << A[n][i] << endl;
}
int main() {
int n = 2;
double low = 0.6;
find_prob(n, low);
}
আউটপুট (n=2, low=0.6)
0.36 0 0.48 0 0.16
অর্থাৎ পজিশন ০, ২, ৪-এ প্রোবাবিলিটি যথাক্রমে ০.৩৬, ০.৪৮, ০.১৬।