এলগৰিথম আৰু ডেইটা ষ্ট্ৰাকচাৰ

কম্পিউটাৰ বিজ্ঞানৰ এই বিভাগত কাৰ্যক্ষেত্ৰত কম্পিউটাৰ বিজ্ঞানৰ প্ৰয়োগৰ তাত্বিক দিশবোৰৰ অধ্যয়ন কৰা হয়। এনে অধ্যয়নলব্ধ জ্ঞানৰ সহায়তে বাস্তৱ জগতত কম্পিউটাৰ প্ৰয়োগ কৰিবলৈ প্ৰগ্ৰেম লিখা হয়। 

তথ্য প্ৰতীকিকৰণ বা ডেইটা এবষ্ট্ৰেকশ্যন
সাধাৰণতে কম্পিউটাৰ প্ৰয়োগ কৰি যিকোনো সমস্যা সমাধান কৰিবলৈ হ'লে প্ৰথমতে সেই সমস্যাৰ এটা গাণিতিক আৰ্হি বা মডেল তৈয়াৰ কৰা হয়। এই অৱৰূপত উক্ত সমস্যা সম্পৰ্কীয় সকলো প্ৰাসংগিক তথ্য ব্যৱহাৰ কৰি উপযুক্ত চলক আৰু প্ৰতীকৰ পাৰস্পৰীক ক্ৰিয়া-প্ৰতিক্ৰিয়াসমূ্হ গাণিতীয় সমীকৰণৰ সহায়ত দৰ্শাই ভৌতিক জগতৰ সমস্যাটো তাত্বিক ৰূপত অৱতাৰণা কৰা হয়। এই প্ৰক্ৰিয়াক তথ্য প্ৰতীকিকৰণ বা ডেইটা এবষ্ট্ৰেকশ্যন বোলা হয়। এই আৰ্হিৰ মুখ্য উপাদানদুটা হ'ল “এলগৰিথম” আৰু “ডেইটা ষ্ট্ৰাকচাৰ”। 

এলগৰিথম
এই কাৰ্য্যৰ কৰিবলৈ কম্পিউটাৰক দিবলগীয়া পদ্ধতিগত নিৰ্দেশাৱলীকে “এলগৰিথম” বোলা হয়। 
এলগৰিথম মূলতে পাচঁটা ভাগত ভগাব পাৰি। 
১. ইনপুট (নিৰ্দেশ)
২. আউটপুট (Result/ফল)
৩. ডেফিনেচন (বৰ্ণনা)
৪. ইফেক্তিভনেচ (কাৰ্যকাৰিতা)
৫. তাৰমিনেচন (সমাপন)
এই এলগৰিথমটোক উপযুক্ত প্ৰগ্ৰেমিং লেংগুৱেজ ব্যৱহাৰ কৰি প্ৰগ্ৰেম হিচাবে প্ৰকাশ কৰি কম্পিউটাৰত ৰাণ কৰিলে কম্পিউটাৰটোৱে প্ৰতীকাত্মকভাৱে বাস্তৱ সমস্যাটো আৰু তাৰ অনুসংগবোৰৰ দৰে আচৰণ কৰিব বুলি ভাৱিব পৰা যায়। সমাধান কৰিবলগীয়া সমস্যাটোৰ পৰিৱেশসমূহ দৰ্শাই উপযুক্ত ইনপুট দিলে কম্পিউটাৰটোৱে উক্ত পৰিৱেশত বাস্তৱ সমস্যাটোৰ দৰে আচৰণ কৰিব। এই আচৰণ তথা সংশ্লিষ্ট আউটপুটবিলাক নিৰীক্ষণ কৰি সমস্যাটোৰ সমাধান নিৰ্ণয় কৰিব পৰা যায়। 
উদাহৰণ স্বৰূপে ধৰাহওক আমাক তিনিজন মানু্হৰ ভিতৰত আটাইতকৈ ওখজনক বাচি উলিয়াবলৈ দিয়া হল। বাস্তৱ ক্ষেত্ৰত এই সমস্যাটো সমাধান কৰিবলৈ আমি মানু্হ তিনিজনৰ উচ্চতাৰ তুলনা কৰিম। কিন্তু কম্পিউটাৰৰ সহায়ত ইয়াকে কৰিবলৈ আমি এক নিৰ্দিষ্ট প্ৰক্ৰিয়া অনুসৰণ কৰিব লাগিব যাক ওপৰৰ পেৰাগ্ৰাফত “তথ্য প্ৰতীকিকৰণ” বা “ডেইটা এবষ্ট্ৰেকশ্যন” বোলা হৈছে। 
কম্পিউটাৰৰ কাৰ্যক্ষমতাৰ সীমাবদ্ধতা আছে। উপযুক্ত উপকৰণ নহলে এটা কম্পিউটাৰে মানু্হ এজনৰ উচ্চতা জুখিব নোৱাৰে। গতিকে তুলনা কৰিবলগীয়া মানুহ তিনিজনৰ উচ্চতা আমিয়েই জুখিব লাগিব আৰু কীবৰ্ড ব্যৱহাৰ কৰি ইনপুট হিচাবে কম্পিউটাৰক দিব লাগিব। লগতে আমি উচ্চতা জোখা প্ৰক্ৰিয়াটোও প্ৰগ্ৰেমৰূপে প্ৰকাশকৰি কম্পিউটাৰক জনাব লাগিব। এই প্ৰগ্ৰেমৰ এলগৰিথম আৰু সংশ্লিষ্ট ইনপুট-আউটপুট বোৰেই হব আমাৰ সমস্যাটোৰ কম্পিউটাৰ অৱৰূপ বা মডেল। তিনিজনৰ উচ্চতা তুলনা কৰা এলগৰিথমটোত প্ৰথমতে আমি একোজন মানুহৰ উচ্চতাক প্ৰকাশ কৰিবলৈ একোটা চলক ব্যৱহাৰ কৰিম। এনেদৰে আমি একোজন মানুহৰ উচ্চতাৰ “এবষ্ট্ৰেকশ্যন” বা প্ৰতীকিকৰণ কৰিলোঁ। ধৰাহওক এই তিনিজন মানুহ – ঘটিৰাম, বাতিৰাম আৰু কাঁহীৰামৰ উচ্চতা প্ৰকাশ কৰা চলক তিনিটা হ'ল যথাক্ৰমে “ক”, “খ” আৰু “গ”। সংশ্লিষ্ট এলগৰিথমটো হ'ল:
কীবৰ্ডৰ পৰা ইনপুট লৈ উচ্চতাৰ জোখ তিনিটা যথাক্ৰমে “ক”, “খ” আৰু “গ” চলকৰ নামত ষ্ট'ৰ কৰক। 
“ক” আৰু “খ” তুলনা কৰক। যদিহে “ক” ডাঙৰ তেন্তে তলৰ “৩” নং ধাপলৈ যাওক, অন্যথা “৫” নং ধাপলৈ যাওক। 
“ক” আৰু “গ” তুলনা কৰক। যদি “ক” ডাঙৰ, তেন্তে স্ক্ৰীণত প্ৰকাশ কৰক: “ঘটিৰাম সকলোতকৈ ওখ। ” অন্যথা (“গ” ডাঙৰ হ'লে) স্ক্ৰীণত প্ৰকাশ কৰক: “কাঁহীৰাম সকলোতকৈ ওখ। ”
৬ নং ধাপলৈ যাওক। 
“খ” আৰু “গ” তুলনা কৰক। যদি “খ” ডাঙৰ, তেন্তে স্ক্ৰীণত প্ৰকাশ কৰক: “বাতিৰাম সকলোতকৈ ওখ। ” অন্যথা (“গ” ডাঙৰ হ'লে) স্ক্ৰীণত প্ৰকাশ কৰক: “কাঁহীৰাম সকলোতকৈ ওখ। ”
প্ৰগ্ৰেম সমাপ্ত। 
এই এলগৰিথমক এটা জনপ্ৰিয় প্ৰগ্ৰেমিং লেংগুৱেজ “চি”-ত লিখিলে এনে হ'ব:
 /**************************************************
 * A program to compare 3 numbers a, b and c, 
 * and to find out the biggest 
 ***************************************************/ 
 #include <stdio.h>
 #include <conio.h>
 int main() 
 {
 	float a, b, c;
 	printf("Please input values for a, b & c:");
 	scanf("%d%d%d”, &a, &b, &c);
 	if(a > b) {
 		if ( a > c)
 			printf("A is the biggest\n");
 		else	
 			printf("C is the biggest\n");
 	} else {
 		if ( b > c)
 			printf("B is the biggest\n");
 		else	
 			printf("C is the biggest\n");
 	}
 getch();
 }

ডেইটা ষ্ট্ৰাকচাৰ
এটা বাস্তব সমস্যা প্ৰতীকিকৰণ বা এবষ্ট্ৰেকশ্যন কৰোঁতে ব্যৱহৃত সংশ্লিষ্ট তথ্যসমূ্হ উপযুক্ত ৰূপত উপস্থাপন কৰাৰ প্ৰয়োযন হয়। উদাহৰণস্বৰূপে এটা লাইব্ৰেৰী অটোমেশ্যন প্ৰগ্ৰেমত এখন কিতাপৰ সম্পৰ্কে সকলো তথ্য ষ্ট'ৰ কৰা বা সাঁচি থোৱা বা ব্যৱহাৰ কৰাৰ প্ৰয়োজন হয়। তেনেদৰে এটা মিচাইল গাইডেন্স প্ৰগ্ৰেমতো মিচাইলৰ গতিপথ, বায়ুগতি ইত্যাদি সম্পৰ্কীয় বিভিন্ন জটিল তথ্য উপস্থাপন আৰু ব্যৱহাৰ কৰাৰ প্ৰয়োজন হয়। এনে জটীল তথ্য প্ৰণালীক বুজা আৰু ব্যৱহাৰৰ সুচল হোৱাকৈ উপযুক্ত ৰূপত সজাই উপস্থাপন কৰিবলৈ ব্যৱহাৰ কৰা বিভিন্ন সজ্জাকে “ডেইটা ষ্ট্ৰাকচাৰ” বা “তথ্যসজ্জা” বোলা হয়। এনেকৈ সজ্জিত তথ্য উপযুক্ত এলগৰিথমৰ সহায়ত ব্যৱহাৰ কৰিলেহে উৎকৃষ্ট সমাধান পোৱা যায়। 

এলগৰিথমৰ “স্থান-কালৰ জটীলতা” বা “টাইম এণ্ড স্পেচ কম্লেকচিটী”
কোনো এটা সমস্যা সমাধান কৰিবলৈ যথোপযুক্ত এলগৰিথমৰ পৰীক্ষণ আৰু কাৰ্যক্ষমতা নিৰ্ণয়ো অত্যন্ত প্ৰয়োজনীয়। উদাহৰণ স্বৰূপে একেটা সমস্যা সমাধান কৰিবলৈ একাধিক এলগৰিথম থাকিব পাৰে। অথবা, একেটা কামকে কৰিবলৈক ব্যৱহাৰ কৰিব পৰা দুটা এলগৰিথমৰ এটাই কম পৰিমাণৰ ইনপুটত বেচি ভাল কাৰ্য্যক্ষমতা দেখুৱালেও সৰহীয়া ইনপুট ডেইটাৰ ক্ষেত্ৰত তেনে নহবও পাৰে। গতিকে, প্ৰদত্ত সমস্যাটোৰ ক্ষেত্ৰত সেই পাৰিপাৰ্শ্বিকত ব্যৱহাৰ কৰিবলৈ উপযুক্ত এলগৰিথমটো বাছনি কৰিবলৈ হ'লে এলগৰিথমটোৰ “স্থান-কালৰ জটীলতা” বা “টাইম এণ্ড স্পেচ কম্লেকচিটী” নিৰ্ণয় কৰাৰ অৰ্থাৎ ইয়াৰ ৰাণ কৰিবলৈ লোৱা সময়, কম্পিউটাৰৰ মেমৰী আৰু ক্ষমতা, ইনপুট তথ্যৰ ধৰণ আদি বিভিন্ন কাৰকসমূহৰ প্ৰভাৱ পৰ্যালোচনা কৰি চোৱাৰ প্ৰয়োজন হয়। এই অধ্যয়নক এলগৰিথম আৰু ডেইটা ষ্ট্ৰাকচাৰ বিষয়টোৰ অন্যতম মুখ্য উদ্দেশ্য। 

শ্ৰেণী:কম্পিউটাৰ বিজ্ঞান
শ্ৰেণী:পোখালি (কম্পিউটাৰ বিজ্ঞান)