ব্যাকট্র্যাকিং (Backtracking) একটি অ্যালগরিদমিক কৌশল যা পুনরাবৃত্তিমূলকভাবে সম্ভাব্য সব সমাধান পরীক্ষা করে মূল সমস্যার সমাধান বের করে। এটি একটি ট্রায়াল-অ্যান্ড-এরর (Trial-and-Error) ভিত্তিক পদ্ধতি, যেখানে একটি নির্দিষ্ট রুট বেছে নিয়ে সমাধানে পৌঁছানোর চেষ্টা করা হয়, এবং রুটটি যদি ভুল বা অপর্যাপ্ত হয়, তবে সেই রুট থেকে ফিরে এসে (ব্যাকট্র্যাক করে) অন্য পথে এগোনো হয়।
ব্যাকট্র্যাকিং কৌশলের মূল বৈশিষ্ট্য:
- আংশিক সমাধান: ব্যাকট্র্যাকিং আংশিক সমাধান গঠন করে এবং ক্রমাগতভাবে নতুন সমাধানের পথে অগ্রসর হয়।
- ব্যাকট্র্যাকিং (ফেরত আসা): যদি কোনো আংশিক সমাধান মূল সমস্যার সাথে সামঞ্জস্যপূর্ণ না হয়, তবে সেটি বাতিল করে (ব্যাকট্র্যাক) পূর্বের ধাপে ফেরত আসা হয় এবং অন্য সমাধানের দিকে এগোনো হয়।
- সমস্ত সমাধানের পরীক্ষা: ব্যাকট্র্যাকিং কৌশলে সম্ভাব্য সমস্ত সমাধান পরীক্ষা করা হয় এবং একাধিক সমাধান থাকলে একটি নির্দিষ্ট শর্ত অনুযায়ী চূড়ান্ত সমাধান নির্বাচন করা হয়।
ব্যাকট্র্যাকিংয়ের উদাহরণসমূহ:
১. এন-কুইন সমস্যা (N-Queens Problem)
এন-কুইন সমস্যা হলো \( n \times n \)চেসবোর্ডে nটি কুইন এমনভাবে বসানো যাতে তারা একে অপরকে আক্রমণ না করতে পারে।
ব্যাকট্র্যাকিং পদ্ধতিতে সমাধান:
- চেসবোর্ডের প্রথম সারি থেকে শুরু করে প্রতিটি কুইনকে একটি সুনির্দিষ্ট কলামে বসানো হয়।
- প্রতিটি কুইন বসানোর সময় বোর্ডের নিয়ম অনুযায়ী পরীক্ষা করা হয় যে, পূর্ববর্তী কুইনগুলোর সাথে বর্তমান কুইন কোনো আক্রমণ করবে কি না।
- যদি আক্রমণ সম্ভব হয়, তাহলে ব্যাকট্র্যাক করে অন্য কলামে কুইন বসানোর চেষ্টা করা হয়।
- প্রক্রিয়াটি পুনরাবৃত্তি করা হয় যতক্ষণ না সব কুইন নিরাপদে বসানো হয়।
২. সাডোকু সলভার (Sudoku Solver)
সাডোকু সমস্যায় প্রতিটি ঘরে একটি সংখ্যা বসাতে হয় যাতে প্রতিটি সারি, কলাম এবং ৩x৩ গ্রিডে সংখ্যা একবারই থাকে। ব্যাকট্র্যাকিংয়ের মাধ্যমে এই সমস্যার সমাধান করা হয়।
ব্যাকট্র্যাকিং পদ্ধতিতে সমাধান:
- খালি ঘর খুঁজে একটি সংখ্যা বসানো হয় এবং সেটি সঠিক কিনা তা পরীক্ষা করা হয়।
- যদি সঠিক হয়, তবে পরবর্তী খালি ঘরে সংখ্যাটি বসানোর চেষ্টা করা হয়।
- যদি কোনো সংখ্যা খাপ না খায়, তবে ব্যাকট্র্যাক করে পূর্ববর্তী ঘরে ফিরে গিয়ে নতুন সংখ্যা বসানোর চেষ্টা করা হয়।
৩. নাইটস ট্যুর সমস্যা (Knight’s Tour Problem)
নাইটস ট্যুর সমস্যায় একটি নাইটকে চেসবোর্ডের প্রতিটি ঘর একবার করে ঘোরাতে হয়। ব্যাকট্র্যাকিংয়ের মাধ্যমে প্রতিটি ঘরে নাইটকে পাঠানো হয় এবং ভুল রুট হলে ফেরত আসা হয়।
৪. সাবসেট সমস্যা (Subset Sum Problem)
সাবসেট সমস্যা হলো, একটি নির্দিষ্ট সেটের এমন উপাদানগুলোর সংমিশ্রণ বের করা যাতে তাদের যোগফল একটি নির্দিষ্ট মানের সমান হয়। ব্যাকট্র্যাকিং ব্যবহার করে সম্ভাব্য সকল সাবসেট খুঁজে এই সমস্যা সমাধান করা হয়।
ব্যাকট্র্যাকিং অ্যালগরিদমের ধাপ:
- স্টার্ট: সমস্যার সমাধানের জন্য একটি প্রাথমিক রুট নির্বাচন করুন।
- সমাধান চেক: রুটটি যদি সমস্যা সমাধানের দিকে নিয়ে যায়, তবে পরবর্তী ধাপে যান; অন্যথায় ব্যাকট্র্যাক করুন।
- ব্যাকট্র্যাকিং: পূর্ববর্তী ধাপে ফিরে এসে বিকল্প সমাধান পরীক্ষা করুন।
- চূড়ান্ত সমাধান: যখন সমস্যার জন্য নির্ধারিত সমাধান পাওয়া যাবে, তখন সমাধান চূড়ান্ত করুন।
ব্যাকট্র্যাকিংয়ের সুবিধা ও অসুবিধা:
সুবিধা:
- সমস্যার সমস্ত সম্ভাব্য সমাধান পরীক্ষা করা হয়।
- ব্যাকট্র্যাকিং কার্যকর যখন সমস্যার বিভিন্ন সম্ভাব্য সমাধান থাকে এবং সেগুলোর মধ্যে কোনটি সঠিক তা জানার জন্য প্রত্যেকটি পরীক্ষা করতে হয়।
অসুবিধা:
- টাইম কমপ্লেক্সিটি অনেক সময় বেশি হতে পারে, কারণ সমস্ত সম্ভাব্য সমাধান পরীক্ষা করা হয়।
- মেমোরি ব্যবহার বেশি হয়, কারণ পুনরাবৃত্তি ও ব্যাকট্র্যাকিংয়ের সময় অতিরিক্ত স্টোরেজ লাগে।
ব্যাকট্র্যাকিং বিশেষত কম্বিনেটোরিয়াল সমস্যাগুলো সমাধানের জন্য উপযুক্ত। এটি একটি সহজ পদ্ধতি হলেও বৃহৎ সমস্যার ক্ষেত্রে একে কার্যকর করতে স্মার্ট হিউরিস্টিক বা কাট অফ পদ্ধতি ব্যবহার করা হয়।
ব্যাকট্র্যাকিং (Backtracking) হল একটি অ্যালগরিদমিক কৌশল, যেখানে সমাধানের সম্ভাব্য সকল পথ পরীক্ষা করে এবং প্রয়োজন হলে পূর্ববর্তী পদক্ষেপে ফিরে এসে নতুন পথে সমাধান খুঁজে বের করা হয়। এটি একটি রিকার্সিভ পদ্ধতি, যা সমস্যার সমাধানে সঠিক পথে পৌঁছাতে সাহায্য করে।
ব্যাকট্র্যাকিং এর ধারণা
ব্যাকট্র্যাকিং মূলত একটি ট্রায়াল অ্যান্ড এরর (Trial and Error) ভিত্তিক পদ্ধতি, যেখানে সম্ভাব্য সকল সমাধান পর্যায়ক্রমে পরীক্ষা করা হয়। যেই পথে বাধা বা শর্ত পূরণ হয় না, সেই পথ পরিহার করা হয় এবং পূর্ববর্তী ধাপে ফিরে আসা হয়, তারপর নতুন পথে অনুসন্ধান শুরু হয়।
এটি প্রধানত তখন ব্যবহার করা হয় যখন কোনো সমস্যা একাধিক সম্ভাব্য সমাধানের মধ্যে নির্দিষ্ট সমাধান খুঁজে বের করতে হয়। ব্যাকট্র্যাকিং পদ্ধতির মাধ্যমে সমাধানটি ধাপে ধাপে নির্মিত হয় এবং কোন পদক্ষেপে যদি শর্ত পূরণ না হয়, তখন আগের ধাপে ফিরে এসে নতুন সমাধান খোঁজা হয়।
ব্যাকট্র্যাকিং কৌশল
ব্যাকট্র্যাকিং সমাধান নির্ণয়ের জন্য সাধারণত নিম্নলিখিত স্টেপগুলো অনুসরণ করা হয়:
- সম্ভাব্য পদক্ষেপগুলো পরীক্ষা করা: প্রতিটি ধাপে যেসব পদক্ষেপ সম্ভব, সেগুলোর মধ্যে একটি নির্বাচন করা হয়।
- শর্ত পরীক্ষা করা: নির্বাচিত পদক্ষেপটি সমস্যার শর্ত পূরণ করছে কিনা তা পরীক্ষা করা হয়। যদি পূরণ না করে, তাহলে সেই পথ বাদ দিয়ে অন্য পথ অনুসন্ধান করা হয়।
- রিকার্সন ও ব্যাকট্র্যাকিং: শর্ত পূরণ হলে রিকার্সিভ কলের মাধ্যমে পরবর্তী ধাপে এগিয়ে যাওয়া হয়। যদি কোনো ধাপে সমাধান না পাওয়া যায়, তবে রিকার্সন ব্যাকট্র্যাকিং করে আগের ধাপে ফিরে আসে।
- সম্পূর্ণ সমাধান পাওয়া: উপযুক্ত সমাধান পাওয়া গেলে রিকার্সন বন্ধ হয় এবং সমাধানটি রিটার্ন করা হয়।
ব্যাকট্র্যাকিং এর উদাহরণ
১. এন-কুইন সমস্যা (N-Queens Problem)
N-Queens সমস্যায় একটি N×NN×N চেস বোর্ডে NNটি কুইন এমনভাবে স্থাপন করতে হয় যাতে দুটি কুইন একই সারি, কলাম, বা ডায়াগোনালে না থাকে। ব্যাকট্র্যাকিং পদ্ধতিতে একাধিক সম্ভাব্য সমাধান পরীক্ষা করে নির্দিষ্ট সমাধান পাওয়া সম্ভব।
উদাহরণ কোড:
def solve_n_queens(board, col):
if col >= len(board):
return True
for i in range(len(board)):
if is_safe(board, i, col):
board[i][col] = 1
if solve_n_queens(board, col + 1):
return True
board[i][col] = 0 # Backtrack
return False
২. নাইটস ট্যুর (Knight’s Tour Problem)
নাইটস ট্যুর সমস্যায় চেস বোর্ডে একটি নাইটকে এমনভাবে সরানো হয় যাতে প্রতিটি ঘরে কেবল একবারই গিয়ে সব ঘর ভ্রমণ করে। ব্যাকট্র্যাকিং এর মাধ্যমে সম্ভাব্য প্রতিটি ঘরে গিয়ে নাইটের গতিবিধি পরীক্ষা করা হয় এবং শর্ত পূরণ না হলে আগের ঘরে ফিরে আসে।
৩. সাবসেট সমস্যা (Subset Sum Problem)
এই সমস্যায় একটি সেট থেকে এমন উপাদানগুলো নির্বাচন করতে হয় যার সমষ্টি নির্দিষ্ট মানের সমান। ব্যাকট্র্যাকিং পদ্ধতিতে সম্ভাব্য সমস্ত উপসেট পরীক্ষা করে সমাধান পাওয়া সম্ভব।
৪. সুডোকু সলভার (Sudoku Solver)
সুডোকু সমস্যা সমাধানে ব্যাকট্র্যাকিং পদ্ধতি অত্যন্ত কার্যকর। এখানে প্রতিটি ঘরে সম্ভাব্য সংখ্যা স্থাপন করা হয় এবং প্রতিটি পদক্ষেপে শর্ত পূরণ করা হচ্ছে কিনা পরীক্ষা করা হয়। যদি না হয়, তাহলে ব্যাকট্র্যাক করে অন্য সংখ্যা স্থাপন করা হয়।
ব্যাকট্র্যাকিং এর সুবিধা
- সম্ভাব্য সব সমাধান খুঁজে বের করা যায়: ব্যাকট্র্যাকিং এর মাধ্যমে সকল সমাধানের মধ্যে নির্দিষ্ট সমাধান খুঁজে বের করা যায়।
- অপ্টিমাইজেশন সমস্যায় কার্যকর: বিশেষ করে এন-কুইন, সাবসেট, গ্রাফ, এবং কম্বিনেটোরিয়াল সমস্যা সমাধানে কার্যকর।
- রিকার্সন এবং মেমরি ব্যবস্থাপনা সহজতর করা: সহজে রিকার্সন ব্যবহার করে সমাধান নির্মাণ করা যায়।
ব্যাকট্র্যাকিং এর সীমাবদ্ধতা
- সময়ের জটিলতা বেশি: বড় সমস্যায় অনেক সম্ভাব্য সমাধান থাকলে ব্যাকট্র্যাকিংয়ের সময় জটিলতা দ্রুত বেড়ে যেতে পারে।
- অপ্টিমালিটি গ্যারান্টিযুক্ত নয়: ব্যাকট্র্যাকিং সবসময়ই গ্লোবাল অপটিমাল সমাধান গ্যারান্টি দিতে পারে না।
সারসংক্ষেপ
ব্যাকট্র্যাকিং এমন সমস্যাগুলির জন্য কার্যকর যেখানে একাধিক সম্ভাব্য সমাধান থাকতে পারে এবং প্রতিটি সমাধান পরীক্ষা করা প্রয়োজন। এটি ছোট ও মাঝারি সমস্যার জন্য খুব কার্যকর হলেও বড় সমস্যার জন্য ডাইনামিক প্রোগ্রামিং বা গ্রিডি মেথডের মতো অ্যালগরিদম কার্যকর হতে পারে।
N-Queens Problem এবং Sudoku Solver উভয়ই কম্পিউটারে সমাধানযোগ্য জনপ্রিয় সমস্যাগুলির মধ্যে অন্যতম। উভয় সমস্যায় ব্যাকট্র্যাকিং কৌশল ব্যবহার করা হয়, যা সম্ভাব্য সমাধানের পথগুলো অন্বেষণ করে নির্দিষ্ট শর্ত মেনে সমাধান খুঁজে বের করে।
১. N-Queens Problem
N-Queens Problem হলো এমন একটি সমস্যা যেখানে N x N চেস বোর্ডে N সংখ্যক কুইন রাখা হয় এবং প্রতিটি কুইন এমনভাবে স্থাপন করতে হয় যাতে তারা একে অপরকে আক্রমণ করতে না পারে। অর্থাৎ কোনো দুই কুইন একই সারি, কলাম, বা তির্যক লাইনে অবস্থান করতে পারবে না।
উদাহরণ
ধরুন N = 4 অর্থাৎ, 4x4 বোর্ডে ৪টি কুইন এমনভাবে রাখতে হবে যাতে তারা কেউ কাউকে আক্রমণ করতে না পারে। একটি সম্ভাব্য সমাধান হতে পারে:
. Q . .
. . . Q
Q . . .
. . Q .
সমাধান পদ্ধতি
এই সমস্যার সমাধানে ব্যাকট্র্যাকিং ব্যবহার করা হয়। আমরা প্রতিটি সারিতে একটি করে কুইন স্থাপন করে সম্ভাব্য অবস্থানগুলো পরীক্ষা করি এবং যদি কোনো অবস্থান শর্ত মেনে না চলে, তাহলে আগের ধাপে ফিরে অন্য অবস্থান পরীক্ষা করি।
উদাহরণ কোড (Python):
def is_safe(board, row, col, N):
for i in range(row):
if board[i] == col or board[i] - i == col - row or board[i] + i == col + row:
return False
return True
def solve_n_queens(N):
board = [-1] * N
solutions = []
def place_queens(row):
if row == N:
solutions.append(["." * col + "Q" + "." * (N - col - 1) for col in board])
return
for col in range(N):
if is_safe(board, row, col, N):
board[row] = col
place_queens(row + 1)
board[row] = -1
place_queens(0)
return solutions
# উদাহরণ ব্যবহার
solutions = solve_n_queens(4)
for solution in solutions:
for line in solution:
print(line)
print()
টাইম এবং স্পেস কমপ্লেক্সিটি
- টাইম কমপ্লেক্সিটি: গড়ে O(N!), কারণ প্রতিটি সারিতে কুইন রাখার বিভিন্ন উপায় আছে।
- স্পেস কমপ্লেক্সিটি: O(N), কারণ বোর্ডের অবস্থা সংরক্ষণ করতে N সাইজের অ্যারে ব্যবহার করা হয়।
ব্যবহার
N-Queens Problem গেম থিওরি, কৌশলগত গেম এবং রোবোটিক্সে ট্রাফিক ম্যানেজমেন্ট ইত্যাদি ক্ষেত্রে প্রয়োগ করা হয়।
২. Sudoku Solver
Sudoku Solver একটি ব্যাকট্র্যাকিং সমস্যা, যেখানে 9x9 গ্রিডে ১-৯ সংখ্যাগুলি পূরণ করতে হয়। প্রতিটি সারি, কলাম, এবং ৩x৩ গ্রিডে প্রতিটি সংখ্যা একবার করে আসতে পারে।
উদাহরণ
ধরা যাক নিচের Sudoku বোর্ডটি পূরণ করতে হবে:
5 3 . | . 7 . | . . .
6 . . | 1 9 5 | . . .
. 9 8 | . . . | . 6 .
------+-------+------
8 . . | . 6 . | . . 3
4 . . | 8 . 3 | . . 1
7 . . | . 2 . | . . 6
------+-------+------
. 6 . | . . . | 2 8 .
. . . | 4 1 9 | . . 5
. . . | . 8 . | . 7 9
সমাধান পদ্ধতি
এই সমস্যার সমাধানে ব্যাকট্র্যাকিং ব্যবহার করা হয়। প্রথমে ফাঁকা স্থানগুলোতে সম্ভাব্য সংখ্যাগুলি বসানো হয়। প্রতিটি ফাঁকা স্থানে ১-৯ পর্যন্ত সংখ্যা বসিয়ে দেখা হয়, যদি এটি Sudoku নিয়ম মেনে চলে। যদি কোনো সংখ্যা বসানো সম্ভব না হয়, তাহলে আগের ধাপে ফিরে অন্য সংখ্যা পরীক্ষা করা হয়।
উদাহরণ কোড (Python):
def is_valid(board, row, col, num):
for i in range(9):
if board[row][i] == num or board[i][col] == num:
return False
if board[3 * (row // 3) + i // 3][3 * (col // 3) + i % 3] == num:
return False
return True
def solve_sudoku(board):
for row in range(9):
for col in range(9):
if board[row][col] == 0:
for num in range(1, 10):
if is_valid(board, row, col, num):
board[row][col] = num
if solve_sudoku(board):
return True
board[row][col] = 0
return False
return True
# উদাহরণ ব্যবহার
sudoku_board = [
[5, 3, 0, 0, 7, 0, 0, 0, 0],
[6, 0, 0, 1, 9, 5, 0, 0, 0],
[0, 9, 8, 0, 0, 0, 0, 6, 0],
[8, 0, 0, 0, 6, 0, 0, 0, 3],
[4, 0, 0, 8, 0, 3, 0, 0, 1],
[7, 0, 0, 0, 2, 0, 0, 0, 6],
[0, 6, 0, 0, 0, 0, 2, 8, 0],
[0, 0, 0, 4, 1, 9, 0, 0, 5],
[0, 0, 0, 0, 8, 0, 0, 7, 9]
]
if solve_sudoku(sudoku_board):
for row in sudoku_board:
print(row)
else:
print("No solution exists")
টাইম এবং স্পেস কমপ্লেক্সিটি
- টাইম কমপ্লেক্সিটি: ব্যাকট্র্যাকিংয়ের জন্য গড়ে O(9^(n*n)), কারণ প্রতিটি ফাঁকা স্থানে ৯টি সম্ভাব্য সংখ্যা পরীক্ষা করতে হয়।
- স্পেস কমপ্লেক্সিটি: O(n*n), কারণ গ্রিডটি নিজেই অতিরিক্ত মেমোরি নেয়।
ব্যবহার
Sudoku Solver টেক্সট কমপ্লিশন, রিসোর্স শিডিউলিং এবং কৌশলগত গেম সমাধানে প্রায়ই ব্যবহৃত হয়।
উপসংহার
- N-Queens Problem কৌশলগত স্থান নির্ধারণের সমস্যা, যা ব্যাকট্র্যাকিং পদ্ধতিতে সহজে সমাধানযোগ্য।
- Sudoku Solver সংখ্যার গ্রিডে বিশেষ নিয়ম মেনে সমস্যা সমাধানে ব্যাকট্র্যাকিং ব্যবহার করে।
এ ধরনের সমস্যাগুলো আমাদের ব্যাকট্র্যাকিং কৌশল এবং দক্ষতার সাথে জটিল সমস্যার সমাধান খুঁজে বের করতে শেখায়।
ব্যাকট্র্যাকিং এবং ব্রুট ফোর্স পদ্ধতি হলো দুটি সমস্যার সমাধান করার কৌশল, তবে এদের মধ্যে পার্থক্য রয়েছে।
ব্রুট ফোর্স (Brute Force)
ব্রুট ফোর্স পদ্ধতি হলো একটি সমস্যার সকল সম্ভাব্য সমাধান একবার করে পরীক্ষা করা এবং সঠিক সমাধানটি খুঁজে বের করা। এটি সহজ এবং সরল পদ্ধতি যেখানে প্রতিটি সম্ভাব্য সমাধান চেক করা হয়।
ব্রুট ফোর্সের বৈশিষ্ট্য:
- সহজে প্রয়োগযোগ্য এবং বোঝা যায়।
- টাইম কমপ্লেক্সিটি অনেক বেশি, বিশেষত বড় ইনপুট সাইজে।
- অপ্টিমাল সমাধান দেয়, তবে খুব ধীরে।
উদাহরণ: ধরুন একটি লিস্টে সর্বোচ্চ মানের জোড়া খুঁজে বের করতে হবে। ব্রুট ফোর্স পদ্ধতিতে আমরা প্রতিটি জোড়া পরীক্ষা করব এবং সবচেয়ে বড়টি বেছে নেব।
টাইম কমপ্লেক্সিটি: যদি \(n\) উপাদান থাকে, তবে ব্রুট ফোর্সে কমপ্লেক্সিটি হবে \(O(n^2)\)।
ব্যাকট্র্যাকিং (Backtracking)
ব্যাকট্র্যাকিং হলো এক ধরনের স্মার্ট সার্চ পদ্ধতি, যেখানে অপ্রয়োজনীয় বা সম্ভাব্য সমাধানগুলোর মধ্য থেকে দ্রুত অপশনগুলো বাতিল করা হয়। এটি সমস্যার সমাধানে সম্ভাব্য পাথগুলো একে একে চেক করে এবং যদি কোনো পাথ থেকে সমাধান না পাওয়া যায়, তবে পূর্ববর্তী ধাপে ফিরে গিয়ে অন্য পাথ চেক করা হয়।
ব্যাকট্র্যাকিংয়ের বৈশিষ্ট্য:
- এটি রিকার্সিভ পদ্ধতির মাধ্যমে কাজ করে।
- এটি শুধুমাত্র প্রয়োজনীয় পথ চেক করে, ফলে টাইম কমপ্লেক্সিটি কমে।
- বড় সমস্যার ক্ষেত্রে এটি অনেক দ্রুত ফলাফল দিতে পারে।
উদাহরণ: ধরুন, এন-কুইন সমস্যা, যেখানে ৮টি কুইন এমনভাবে বসাতে হবে যাতে তারা একে অপরকে আক্রমণ না করে। ব্যাকট্র্যাকিং পদ্ধতিতে একটি কুইন যদি কোনও নির্দিষ্ট স্থানে বসালে সমস্যার সমাধান না হয়, তাহলে সেই অবস্থান থেকে ফিরে এসে অন্য স্থানে বসানো হয়।
টাইম কমপ্লেক্সিটি: নির্ভর করে সমস্যার উপর, তবে অনেক ক্ষেত্রেই এটি ব্রুট ফোর্সের চেয়ে কম।
ব্রুট ফোর্স বনাম ব্যাকট্র্যাকিং
| বৈশিষ্ট্য | ব্রুট ফোর্স | ব্যাকট্র্যাকিং |
|---|---|---|
| সমাধান পদ্ধতি | সবকিছু চেক করে | অপ্রয়োজনীয় পাথ বাদ দেয় |
| টাইম কমপ্লেক্সিটি | উচ্চ, \(O(n!)\) বা \(O(n^2)\) পর্যন্ত | তুলনামূলকভাবে কম, সমস্যা নির্ভর |
| কাজের ধরণ | সকল সম্ভাব্য সমাধান চেক | রিকার্সিভ পদ্ধতিতে সঠিক পাথ খোঁজে |
| কার্যকারিতা | বড় ইনপুটে ধীর | বড় ইনপুটে তুলনামূলক দ্রুত |
| ব্যবহার | সহজ সমস্যা সমাধানে, ছোট ইনপুটে | এন-কুইন, সাডোকু সমাধান, পথ খোঁজা ইত্যাদিতে |
সারসংক্ষেপ
ব্রুট ফোর্স হলো একটি সরল পদ্ধতি যা প্রতিটি সমাধান পরীক্ষা করে, তবে এটি অনেক সময় ব্যয় করে। ব্যাকট্র্যাকিং হলো উন্নত পদ্ধতি যা অপ্রয়োজনীয় উপায় বাতিল করে কার্যকরী সমাধান প্রদান করে।
Read more