Which of the following runs the fastest?
A
O(log n)
B
O(n)
C
O(n log n)
D
O(√n)
উত্তরের বিবরণ
অ্যালগরিদমের গতি নির্ভর করে তার time complexity–এর উপর। নিচে প্রতিটি বিকল্পের বিশ্লেষণ দেওয়া হলো—
-
ক) O(log n): এটি logarithmic time complexity, যার বৃদ্ধি হার খুব ধীর। ইনপুটের আকার বাড়লেও সময় ধীরে বাড়ে। উদাহরণ: Binary Search।
-
খ) O(n): এটি linear time complexity, যেখানে সময় ইনপুটের আকারের সঙ্গে সরাসরি অনুপাতে বৃদ্ধি পায়। উদাহরণ: Linear Search।
-
গ) O(n log n): এটি linearithmic time, যা linear-এর চেয়ে দ্রুত বৃদ্ধি পায় কিন্তু quadratic-এর চেয়ে ধীর। উদাহরণ: MergeSort, QuickSort।
-
ঘ) O(√n): এটি square root time, যা linear-এর চেয়ে ধীর কিন্তু logarithmic-এর চেয়ে দ্রুত বৃদ্ধি পায়। এটি কিছু বিশেষ সংখ্যাতত্ত্বভিত্তিক অ্যালগরিদমে দেখা যায়।
উ. ক) O(log n)
ব্যাখ্যা: Logarithmic অ্যালগরিদম সবচেয়ে দ্রুত বৃদ্ধি পাওয়া ধরণগুলোর মধ্যে সবচেয়ে ধীর (অর্থাৎ সবচেয়ে দ্রুত কর্মক্ষম)। তাই O(log n)–এর সময় জটিলতার অ্যালগরিদম সবচেয়ে দ্রুত চলে।

0
Updated: 13 hours ago
If |A| = m, |B| = n, then the number of injective functions A → B (m ≤ n) is:
Created: 1 day 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: 1 day ago
Which one below declares a function pointer (f) pointing to a function taking an int and a float and returning a double?
Created: 1 day ago
A
double *f (int, float)
B
double (*f) (int, float)
C
(*double) f (int, float)
D
double f* (int, float)
উত্তর: double (*f) (int, float)
ব্যাখ্যা: এখানে বন্ধনীর মাধ্যমে বোঝানো হয়েছে যে f একটি পয়েন্টার, যা এমন একটি ফাংশনের দিকে নির্দেশ করে, যার দুটি প্যারামিটার আছে—একটি int ও একটি float, এবং সেটি double টাইপের মান রিটার্ন করে।
যদি বন্ধনী না দেওয়া হয় যেমন double *f(int, float)
, তাহলে সেটি হবে এমন একটি ফাংশন যা double টাইপের পয়েন্টার রিটার্ন করে, কিন্তু এখানে উদ্দেশ্য ছিল ফাংশনের প্রতি পয়েন্টার ঘোষণা করা। তাই সঠিক রূপ হলো double (*f)(int, float)।

0
Updated: 1 day ago
Which cryptographic algorithm is asymmetric?
Created: 13 hours ago
A
DES
B
AES
C
Triple DES
D
RSA
ক্রিপ্টোগ্রাফিক অ্যালগরিদম মূলত দুটি ভাগে বিভক্ত — Symmetric Key Cryptography এবং Asymmetric Key Cryptography।
-
Symmetric Key Cryptography:
এখানে একই কী ব্যবহার করা হয় encryption ও decryption–এর জন্য। প্রেরক ও গ্রাহক উভয়েই একই গোপন কী ভাগাভাগি করে নেয়।
উদাহরণ:-
DES (Data Encryption Standard)
-
AES (Advanced Encryption Standard)
-
Triple DES (3DES)
-
-
Asymmetric Key Cryptography:
এখানে দুটি কী ব্যবহার হয় —-
Public Key (Encryption-এর জন্য)
-
Private Key (Decryption-এর জন্য)
কেউ যদি পাবলিক কী জানে, তবুও প্রাইভেট কী ছাড়া তথ্য ডিক্রিপ্ট করতে পারে না।
উদাহরণ: -
RSA (Rivest–Shamir–Adleman) Algorithm
-
উ. ঘ) RSA
ব্যাখ্যা: RSA একটি Asymmetric Key Cryptography–এর অ্যালগরিদম, যেখানে আলাদা পাবলিক ও প্রাইভেট কী ব্যবহৃত হয়। এটি ডিজিটাল স্বাক্ষর ও নিরাপদ তথ্য বিনিময়ে বহুল ব্যবহৃত।

0
Updated: 13 hours ago