লিট বাংলা ডট টেক, প্রযুক্তির হাতেখড়ি হোক বাংলাতেই।

হ্যাকিং / সাইবার নিরাপত্তা বিষয়ক বাংলা প্রযুক্তির ব্লগ

একটা সমস্যা সমাধানের পথ - #অ্যালগরিদম# যা ছাড়া প্রোগ্রামিং অসম্ভব !!

অ্যালগরিদম শব্দটির উৎপত্তি পারস্যের গনিতবিদ মুসা আল কাওয়ারিজিমির নাম থেকে। ক্লাসিকাল আরবীতে Al-Khwarithmi.অ্যালগরিদম। 
নবম শতাব্দীতে আরবী ভাষায় আল কাওয়ারিজিমির কিছু রচনা ছিল যা ১২ শতাব্দীতে ল্যাটিন ভাষায় অনুবাদ করা হয়ে ছিল, Algoritmi de numero Indorum.নামে। 
এর অর্থ "Algoritmi on the numbers of the Indians"। 
এই টাইটেলের "Algoritmi" ছিল আল কাওয়ারিজিমির নামের ল্যাটিন সংষ্করন। আল কাওয়ারিজিমির ইউরোপে সবচেয়ে বেশি পঠিত গনিতবিদ ছিলেন। তিনি বিখ্যাত ছিলেন তার আর একটি বই আল জেবরার জন্য। মধ্যযুগের শেষের দিকে। 






Algorithm হচ্ছে কোনো একটা সমস্যা সমাধান করার জন্য প্রয়োজনীয় ও সুনির্দিষ্ট কিছু ধাপের সমষ্টি। সাধারণত computer science এর  ক্ষেত্রে এলগরিদম কথাটি বেশি ব্যবহৃত হলেও শুধু computational কাজের জন্যেই যে আমরা এলগরিদম ব্যবহার করি তা না। বরং আমরা আমাদের ব্যক্তি জীবনেও এর প্রয়োগ করি। বোঝার সুবিধার জন্য ভাত রাঁধার সাথে তুলনা করা যেতে পারে। কয়েকটা নির্দিষ্ট ধাপ সম্পন্ন করার মাধ্যমেই ভাত রান্না হয়ে যায়। আবার একেক জন মানুষের ভাত রান্নার পদ্ধতিতে কিছুটা ভিন্নতা থাকতে পারে। একেকটার একেক বৈশিষ্ট্য বা একেক রন্ধন প্রক্রিয়ার ভাতের গুণাগুণ একেক রকম হতে পারে। একই রকম ভাবে একটা সমস্যার সমাধানে একাধিক এলগরিদম থাকতে পারে। একেকটা এলগরিদমের একেক রকম গুণ বা বৈশিষ্ট্য বিদ্যমান। সমস্যার ধরন অনুযায়ী এলগরিদম নির্বাচন করা হয়।



অ্যালগরিদম এর কিছু গুরুত্বপূর্ণ ব্যবহার ঃ 

Merge Sort, Quick Sort and Heap Sort


Sort করার অর্থ হচ্ছে কিছু ডাটাকে নির্দিষ্ট একটা ক্রমানুসারে সাজানো। যেমন কোন একটা ক্লাসের ছাত্রদের নাম ডাকার ক্ষেত্রে তাদের রোলের ছোট থেকে বড়র দিকে ডাকা হয়। আবার যে কোন dictionary-তে Lexicographical order (বর্ণক্রমানুসারে) এ শব্দগুলো সাজানো থাকে। এগুলোকে আমরা বলতে পারি Sorted Data, অর্থাৎ এই তথ্যগুলো Sorting পদ্ধতি প্রয়োগ করে ক্রমানুসারে বিন্যস্ত করা হয়েছে। কম্পিউটার বিজ্ঞান বা কম্পিউটার সম্পর্কিত যে কোন বিষয়ের শিক্ষার্থীদেরকে সর্টিং এর বিভিন্ন এলগোরিদম শেখানো হয়। সবচেয়ে সহজ সর্টিং এলগরিদম হচ্ছে Bubble Sort. এর প্রোগ্রাম লেখা খুব সহজ হলেও অনেক বেশি ডাটাকে এই এলগরিদম দিয়ে সর্ট করতে চাইলে প্রোগ্রামটার performance কমে যাবে। 

অপরপক্ষে Merge sort, Quick sort ও Heap sort এর সাধারণ ক্ষেত্রে complexity হচ্ছে n log(n) যেটা অন্যান্য সর্টিং পদ্ধতি থেকে অনেক fast. Merge sort ও Quick sort কাজ করে divide-and-conquer approach এ, আর Heap sort কাজ করে priority queue এর মাধ্যমে।

Fourier Transform and Fast Fourier Transform
আমাদের পুরো ডিজিটাল জগৎটার সব জায়গাতেই এই খুব সাধারণ কিন্তু শক্তিশালী এলগরিদমটির ব্যবহার আছে। এর মাধ্যমে মূলত সিগনালগুলোকে time domain থেকে frequency domain ও frequency domain থেকে time domain এ রূপান্তর করা হয়। এমন কি তুমি যে এই আর্টিকেলটি পড়তে পারছ সে জন্য ধন্যবাদ প্রাপ্য কিন্তু এই এলগরিদমের!