Algorithm engineering
অ্যালগরিদম ইঞ্জিনিয়ারিং কম্পিউটার অ্যালগরিদমের নকশা, বিশ্লেষণ, বাস্তবায়ন, অপ্টিমাইজেশন, প্রোফাইলিং এবং পরীক্ষামূলক মূল্যায়নের উপর দৃষ্টি নিবদ্ধ করে, সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের অ্যালগরিদম তত্ত্ব এবং অ্যালগরিদমের ব্যবহারিক প্রয়োগের মধ্যে ব্যবধানটি পূরণ করে। এটি অ্যালগরিদমিক গবেষণার জন্য একটি সাধারণ পদ্ধতি। 1995 সালে, "থিওরি অফ কম্পিউটিং (টিওসি) সম্প্রদায়ের বর্তমান লক্ষ্য এবং নির্দেশাবলী মূল্যায়নের উদ্দেশ্যে" একটি এনএসএফ-স্পন্সর কর্মশালার একটি প্রতিবেদন অনুশীলনকারীদের দ্বারা তাত্ত্বিক অন্তর্দৃষ্টি গ্রহণের ধীর গতিকে একটি গুরুত্বপূর্ণ বিষয় হিসাবে চিহ্নিত করে এবং অনুশীলনকারীদের দ্বারা অনিশ্চয়তা হ্রাস করার জন্য পরামর্শ দেয় যে কোনও নির্দিষ্ট তাত্ত্বিক অগ্রগতি তাদের কাজের ক্ষেত্রে ব্যবহারিক লাভে রূপান্তরিত হবে কিনা, এবং ব্যবহারের জন্য প্রস্তুত অ্যালগরিদম গ্রন্থাগারগুলির অভাব মোকাবেলা করবে, যা অ্যালগরিদমিক সমস্যার জন্য স্থিতিশীল, বাগ-মুক্ত এবং ভাল-পরীক্ষিত বাস্তবায়ন সরবরাহ করে এবং গ্রন্থাগার গ্রাহকদের জন্য সহজেই ব্যবহারযোগ্য ইন্টারফেস প্রকাশ করে। তবে, গাণিতিক বিশ্লেষণে সমস্যার কারণে আশাব্যঞ্জক অ্যালগরিদমিক পদ্ধতিকে অবহেলা করা হয়েছে। "অ্যালগরিদম ইঞ্জিনিয়ারিং" শব্দটি প্রথম 1997 সালে নির্দিষ্টতার সাথে ব্যবহার করা হয়েছিল, অ্যালগরিদম ইঞ্জিনিয়ারিংয়ের উপর প্রথম কর্মশালা (ডব্লিউ. এ. ই. 97), জুসেপ্পে এফ. ইতালিয়ানো দ্বারা আয়োজিত। অ্যালগরিদম তত্ত্ব থেকে পার্থক্য অ্যালগরিদম ইঞ্জিনিয়ারিং অ্যালগরিদম তত্ত্বের সাথে প্রতিস্থাপন বা প্রতিযোগিতা করতে চায় না, তবে পরীক্ষামূলক অ্যালগরিদম (যাকে অভিজ্ঞতাগত অ্যালগরিদমও বলা হয়) দিয়ে তার আনুষ্ঠানিক পদ্ধতিকে সমৃদ্ধ, পরিমার্জন এবং শক্তিশালী করার চেষ্টা করে। এইভাবে এটি অ্যালগরিদমের দক্ষতা এবং কার্যকারিতা সম্পর্কে নতুন অন্তর্দৃষ্টি প্রদান করতে পারে এমন ক্ষেত্রে যেখানে অ্যালগরিদম তাত্ত্বিক বিশ্লেষণের জন্য কম উপযুক্ত, আনুষ্ঠানিক বিশ্লেষণ হতাশাজনকভাবে এমন সীমার পরামর্শ দেয় যা ব্যবহারিক আগ্রহের ইনপুটগুলিতে উপস্থিত হওয়ার সম্ভাবনা নেই, অ্যালগরিদম নির্ভর করে আধুনিক হার্ডওয়্যার আর্কিটেকচারের জটিলতার উপর যেমন ডেটা লোকালিটি, শাখা পূর্বাভাস, নির্দেশ স্টল, নির্দেশের বিলম্ব যা অ্যালগরিদম তত্ত্বে ব্যবহৃত মেশিন মডেল প্রয়োজনীয় বিশদে ক্যাপচার করতে অক্ষম, বিভিন্ন ধ্রুবক ব্যয় এবং অ্যাসিম্পটোটিক আচরণের সাথে প্রতিযোগিতামূলক অ্যালগরিদমগুলির মধ্যে ক্রসওভার নির্ধারণ করা দরকার। কিছু গবেষক অ্যালগরিদম ইঞ্জিনিয়ারিংয়ের পদ্ধতিটিকে অ্যালগরিদম ডিজাইন, বিশ্লেষণ, বাস্তবায়ন এবং পরীক্ষামূলক মূল্যায়নের সমন্বয়ে গঠিত একটি চক্র হিসাবে বর্ণনা করেছেন, যা মেশিন মডেল বা বাস্তবসম্মত ইনপুটগুলির মতো আরও দিকগুলির সাথে যুক্ত। তারা যুক্তি দেন যে অ্যালগরিদম ইঞ্জিনিয়ারিংকে পরীক্ষামূলক অ্যালগরিদমের সাথে তুলনা করা খুব সীমিত, কারণ নকশা এবং বিশ্লেষণ, বাস্তবায়ন এবং পরীক্ষাকে পৃথক ক্রিয়াকলাপ হিসাবে দেখা অ্যালগরিদম ইঞ্জিনিয়ারিংয়ের সেই উপাদানগুলির মধ্যে গুরুত্বপূর্ণ প্রতিক্রিয়া লুপকে উপেক্ষা করে। বাস্তববাদী মডেল এবং প্রকৃত ইনপুট যদিও নির্দিষ্ট প্রয়োগগুলি অ্যালগরিদম ইঞ্জিনিয়ারিংয়ের পদ্ধতির বাইরে, তারা সমস্যা এবং অন্তর্নিহিত মেশিনের বাস্তবসম্মত মডেল গঠনে গুরুত্বপূর্ণ ভূমিকা পালন করে এবং পরীক্ষার জন্য প্রকৃত ইনপুট এবং অন্যান্য নকশার পরামিতি সরবরাহ করে। নকশা অ্যালগরিদম তত্ত্বের তুলনায়, যা সাধারণত অ্যালগরিদমের অ্যাসিম্পটোটিক আচরণের উপর দৃষ্টি নিবদ্ধ করে, অ্যালগরিদম ইঞ্জিনিয়ারদের আরও প্রয়োজনীয়তা মনে রাখতে হবেঃ অ্যালগরিদমের সরলতা, বাস্তব হার্ডওয়্যারে প্রোগ্রামিং ভাষাগুলিতে বাস্তবায়নযোগ্যতা এবং কোডের পুনঃব্যবহারের অনুমতি দেওয়া। উপরন্তু, অ্যালগরিদমগুলির ধ্রুবক কারণগুলি বাস্তব-বিশ্বের ইনপুটগুলিতে এতটাই উল্লেখযোগ্য প্রভাব ফেলে যে কখনও কখনও খারাপ অ্যাসিম্পটোটিক আচরণ সহ একটি অ্যালগরিদম কম ধ্রুবক কারণগুলির কারণে অনুশীলনে আরও ভাল কাজ করে। বিশ্লেষণ কিছু সমস্যা নির্ণায়ক অ্যালগরিদমের তুলনায় সহজ এবং আরও দক্ষ পদ্ধতিতে হিউরিস্টিক্স এবং র্যান্ডমাইজড অ্যালগরিদম দিয়ে সমাধান করা যেতে পারে। দুর্ভাগ্যবশত, এটি এমনকি সহজ র্যান্ডমাইজড অ্যালগরিদমগুলিকেও বিশ্লেষণ করা কঠিন করে তোলে কারণ এখানে সূক্ষ্ম নির্ভরতা রয়েছে যা বিবেচনায় নিতে হবে। বাস্তবায়ন তাত্ত্বিক অন্তর্দৃষ্টি, প্রণীত অ্যালগরিদম, প্রোগ্রামিং ভাষা এবং হার্ডওয়্যারের মধ্যে বিশাল শব্দার্থগত ব্যবধান এমনকি সহজ অ্যালগরিদমগুলির দক্ষ বাস্তবায়নের জন্য একটি চ্যালেঞ্জ তৈরি করে, কারণ ছোট বাস্তবায়নের বিবরণগুলি কার্যকর আচরণের উপর তরঙ্গায়িত প্রভাব ফেলতে পারে। একটি অ্যালগরিদমের বেশ কয়েকটি বাস্তবায়নের তুলনা করার একমাত্র নির্ভরযোগ্য উপায় হল টিউনিং এবং প্রোফাইলিং, একাধিক আর্কিটেকচারে সেই অ্যালগরিদমগুলি চালানো এবং উত্পন্ন মেশিন কোডটি দেখার জন্য যথেষ্ট সময় ব্যয় করা। পরীক্ষাগুলি দেখুনঃ পরীক্ষামূলক অ্যালগরিদম অ্যাপ্লিকেশন ইঞ্জিনিয়ারিং পরীক্ষার জন্য ব্যবহৃত অ্যালগরিদমগুলির বাস্তবায়ন অ্যাপ্লিকেশনগুলিতে ব্যবহারযোগ্য কোডের থেকে উল্লেখযোগ্য উপায়ে পৃথক। যদিও প্রথমটি পরীক্ষার সময় পরিমাপের জন্য দ্রুত প্রোটোটাইপিং, কর্মক্ষমতা এবং যন্ত্রপাতিগুলিকে অগ্রাধিকার দেয়, পরেরটির জন্য নির্দিষ্ট শ্রেণীর ইনপুটগুলির জন্য পুঙ্খানুপুঙ্খ পরীক্ষা, রক্ষণাবেক্ষণযোগ্যতা, সরলতা এবং সুরের প্রয়োজন হয়। অ্যালগরিদম লাইব্রেরিগুলি স্থিতিশীল, এলইডিএ-র মতো সু-পরীক্ষিত অ্যালগরিদম লাইব্রেরিগুলি অ্যাপ্লিকেশনগুলিতে নতুন অ্যালগরিদম গ্রহণের গতি বাড়িয়ে প্রযুক্তি স্থানান্তরের ক্ষেত্রে গুরুত্বপূর্ণ ভূমিকা পালন করে। এই ধরনের গ্রন্থাগারগুলি অনুশীলনকারীদের জন্য প্রয়োজনীয় বিনিয়োগ এবং ঝুঁকি হ্রাস করে, কারণ এটি একাডেমিক গবেষণার ফলাফলগুলি বোঝার এবং বাস্তবায়নের বোঝা সরিয়ে দেয়। অ্যালগরিদম ইঞ্জিনিয়ারিংয়ের উপর বার্ষিক দুটি প্রধান সম্মেলন অনুষ্ঠিত হয়, যথাঃ পরীক্ষামূলক অ্যালগরিদমের উপর সিম্পোজিয়াম (এসইএ), যা 1997 সালে প্রতিষ্ঠিত হয়েছিল (পূর্বে ডাব্লুইএ নামে পরিচিত)। সিয়াম মিটিং অন অ্যালগরিদম ইঞ্জিনিয়ারিং অ্যান্ড এক্সপেরিমেন্টস (এ. এল. ই. এন. ই. এক্স), 1999 সালে প্রতিষ্ঠিত। অ্যালগরিদম ইঞ্জিনিয়ারিং সম্পর্কিত 1997 সালের কর্মশালা (ডব্লিউ. এ. ই '97) 1997 সালের সেপ্টেম্বর মাসে ইতালির ভেনিসে অনুষ্ঠিত হয়। অ্যালগরিদম ইঞ্জিনিয়ারিং সম্পর্কিত তৃতীয় আন্তর্জাতিক কর্মশালা (ডব্লিউ. এ. ই '99) 1999 সালের জুলাই মাসে যুক্তরাজ্যের লন্ডনে অনুষ্ঠিত হয়। অ্যালগরিদম ইঞ্জিনিয়ারিং অ্যান্ড এক্সপেরিমেন্টেশন (এ. এল. ই. এন. ই. এক্স. 99) সম্পর্কিত প্রথম কর্মশালাটি 1999 সালের জানুয়ারিতে মেরিল্যান্ডের বাল্টিমোরে অনুষ্ঠিত হয়েছিল। এটি ডিআইএমএসিএস, সেন্টার ফর ডিসক্রিট ম্যাথমেটিক্স অ্যান্ড থিওরিটিক্যাল কম্পিউটার সায়েন্স (রাটগার্স ইউনিভার্সিটিতে) দ্বারা স্পনসর করা হয়েছিল, সিগ্যাক্ট, অ্যালগরিদমস অ্যান্ড কম্পিউটশন থিওরি সম্পর্কিত এসিএম স্পেশাল ইন্টারেস্ট গ্রুপ এবং সিয়াম, সোসাইটি ফর ইন্ডাস্ট্রিয়াল অ্যান্ড অ্যাপ্লায়েড ম্যাথমেটিক্সের অতিরিক্ত সহায়তায়। তথ্যসূত্র অ্যালগরিদম তাত্ত্বিক কম্পিউটার বিজ্ঞান