In the breadth-first search, which of the following should be used?
A
Stack
B
Queue
C
Heap
D
Heap
উত্তরের বিবরণ
Breadth-First Search (BFS) হলো এমন একটি graph traversal algorithm, যা গ্রাফের নোডগুলোকে স্তরভিত্তিকভাবে (level by level) অনুসন্ধান করে। এটি একটি সূত্র নোড (source node) থেকে শুরু করে, প্রথমে তার সব প্রতিবেশী নোড ভিজিট করে, তারপর পরবর্তী স্তরের নোডগুলিতে যায়। এই প্রক্রিয়া বাস্তবায়নে ব্যবহৃত হয় Queue (FIFO – First In, First Out) ডেটা স্ট্রাকচার।
মূল ধাপগুলো হলো:
-
সূত্র নোডটি enqueue করা হয়।
-
একটি নোড dequeue করে সেটি ভিজিট করা হয় এবং তার অভিযুক্ত না হওয়া (unvisited) প্রতিবেশীদের enqueue করা হয়।
-
এই ধাপগুলো queue খালি হওয়া পর্যন্ত পুনরাবৃত্তি হয়।
উদাহরণ:
যদি গ্রাফটি হয় —
A → B, C
B → D
C → E
তাহলে BFS traversal order: A, B, C, D, E
(যেখানে কিউ ব্যবহৃত হয়েছে)।
অতএব, BFS-এ Queue ব্যবহৃত হয় নোডগুলোকে তাদের আবিষ্কারের ক্রম অনুযায়ী পরিচালনার জন্য।

0
Updated: 20 hours ago
A programmable logic array is mainly used for:
Created: 19 hours ago
A
Custom sequential circuits.
B
Memory.
C
Custom combinational circuits.
D
Fixed logic.
Programmable Logic Array (PLA) হলো এমন একটি programmable logic device, যা ব্যবহার করা হয় custom combinational logic functions বাস্তবায়নের জন্য। এটি মূলত দুইটি প্রোগ্রামেবল অংশ নিয়ে গঠিত, যা যে কোনো sum-of-products ফর্মে লজিক ডিজাইন করতে সক্ষম।
মূল বিষয়গুলো হলো:
-
Programmable AND array: এই অংশটি এমনভাবে প্রোগ্রাম করা হয় যাতে নির্দিষ্ট product terms (minterms বা logic products) তৈরি করা যায়।
-
Programmable OR array: এটি AND array থেকে প্রাপ্ত product terms যোগ করে (sum করে) প্রয়োজনীয় output function তৈরি করে।
-
যেহেতু AND ও OR উভয় array-ই প্রোগ্রামেবল, তাই PLA যে কোনো custom combinational logic সহজেই বাস্তবায়ন করতে পারে।
অন্যান্য বিকল্পের ব্যাখ্যা:
-
Custom sequential circuits: এগুলো সাধারণত CPLD বা FPGA-এর মতো জটিল ডিভাইসের মাধ্যমে তৈরি হয়, যেখানে flip-flop ব্যবহৃত হয়।
-
Memory: যেমন RAM বা ROM, যা মূলত data storage-এর জন্য ব্যবহৃত হয়, arbitrary logic function বাস্তবায়নের জন্য নয়।
-
Fixed logic: এটি পূর্বনির্ধারিত standard IC (যেমন 7400 series) বোঝায়, যার লজিক স্থায়ীভাবে নির্ধারিত এবং পরিবর্তনযোগ্য নয়।
অতএব, সঠিক উত্তর হলো Custom combinational circuits।

0
Updated: 19 hours ago
If |A| = m, |B| = n, then the number of injective functions A → B (m ≤ n) is:
Created: 20 hours ago
A
P(n,m)
B
C(n,m)
C
nm
D
m
যদি |A| = m এবং |B| = n (m ≤ n) হয়, তবে A → B এর একেকটি injective (one-to-one) ফাংশনের সংখ্যা হবে P(n, m) = n! / (n − m)!। এই সূত্রটি permutation ধারণার উপর ভিত্তি করে তৈরি।
মূল ব্যাখ্যা হলো:
-
A-এর প্রথম উপাদান B-এর n উপাদানের যেকোনো একটির সাথে যুক্ত হতে পারে।
-
দ্বিতীয় উপাদানের জন্য থাকে **(n − 1)**টি বিকল্প, কারণ একই উপাদান আবার ব্যবহার করা যাবে না (injective হওয়ার কারণে)।
-
এভাবে ক্রমান্বয়ে mটি উপাদানের জন্য বিকল্পের সংখ্যা কমতে থাকে।
-
ফলে মোট ফাংশনের সংখ্যা হয়:
n × (n − 1) × (n − 2) × … × (n − m + 1) = n! / (n − m)!
অতএব, injective mapping-এর সংখ্যা = P(n, m)।

0
Updated: 20 hours ago
How will you declare an array (Arr) of four pointers to float?
Created: 19 hours ago
A
*float Arr[4]
B
(float) Arr[*4]
C
float *Arr[4]
D
float *Arr[4]
float Arr[4] হলো এমন একটি ঘোষণাপদ্ধতি যা একটি float টাইপের চারটি পয়েন্টার ধারণকারী অ্যারে নির্দেশ করে। এটি C ভাষার ডিক্লারেশন নিয়ম অনুযায়ী গঠিত, যেখানে “array of X” এবং “function returning X” অংশগুলো “pointer to” ()-এর আগে bind হয়।
মূল বিষয়গুলো হলো:
-
Arr[4] দ্বারা বোঝায় যে Arr হলো চারটি উপাদান বিশিষ্ট একটি অ্যারে।
-
*Arr[4] বোঝায় অ্যারের প্রতিটি উপাদান একটি পয়েন্টার।
-
float *Arr[4] নির্দেশ করে প্রতিটি পয়েন্টার float টাইপের ডেটার ঠিকানা ধারণ করতে পারে।
অতএব, Arr হলো চারটি float পয়েন্টার নিয়ে গঠিত একটি অ্যারে, যা মেমরিতে চারটি আলাদা float ভেরিয়েবলের ঠিকানা সংরক্ষণে সক্ষম।

0
Updated: 19 hours ago