Algorithm engineering
الگورتھم انجینئرنگ کمپیوٹر الگورتھم کے ڈیزائن، تجزیہ، نفاذ، اصلاح، پروفائلنگ اور تجرباتی تشخیص پر مرکوز ہے، سافٹ ویئر انجینئرنگ میں الگورتھم تھیوری اور الگورتھم کی عملی ایپلی کیشنز کے درمیان فرق کو ختم کرتی ہے۔ یہ الگورتھمک تحقیق کے لیے ایک عمومی طریقہ کار ہے۔ 1995 میں، این ایس ایف کے زیر اہتمام ایک ورکشاپ کی ایک رپورٹ "جس کا مقصد تھیوری آف کمپیوٹنگ (ٹی او سی) کمیونٹی کے موجودہ اہداف اور ہدایات کا جائزہ لینا ہے" نے پریکٹیشنرز کے ذریعے نظریاتی بصیرت کو اپنانے کی سست رفتار کو ایک اہم مسئلہ کے طور پر شناخت کیا اور پریکٹیشنرز کے ذریعے اس غیر یقینی صورتحال کو کم کرنے کے لیے اقدامات تجویز کیے کہ آیا کوئی مخصوص نظریاتی پیش رفت ان کے کام کے شعبے میں عملی فوائد میں تبدیل ہوگی، اور استعمال کے لیے تیار الگورتھم لائبریریوں کی کمی سے نمٹے گی، جو الگورتھمک مسائل کے لیے مستحکم، بگ فری اور اچھی طرح سے تجربہ شدہ نفاذ فراہم کرتی ہیں اور لائبریری کے صارفین کے لیے استعمال میں آسان انٹرفیس کو بے نقاب کرتی ہیں۔ لیکن یہ بھی کہ ریاضیاتی تجزیہ میں مشکلات کی وجہ سے امید افزا الگورتھمک طریقوں کو نظر انداز کیا گیا ہے۔ اصطلاح "الگورتھم انجینئرنگ" پہلی بار 1997 میں الگورتھم انجینئرنگ (ڈبلیو اے ای 97) پر پہلی ورکشاپ کے ساتھ مخصوصیت کے ساتھ استعمال کی گئی تھی، جس کا اہتمام جیوسیپی ایف اطالوی نے کیا تھا۔ الگورتھم تھیوری سے فرق الگورتھم انجینئرنگ الگورتھم تھیوری کو تبدیل کرنے یا اس سے مقابلہ کرنے کا ارادہ نہیں رکھتی ہے، لیکن تجرباتی الگورتھم کے ساتھ اپنے رسمی طریقوں کو تقویت دینے، بہتر بنانے اور تقویت دینے کی کوشش کرتی ہے (جسے تجرباتی الگورتھم بھی کہا جاتا ہے)۔ اس طرح یہ ان صورتوں میں الگورتھم کی کارکردگی اور کارکردگی کے بارے میں نئی بصیرت فراہم کر سکتا ہے جہاں ہاتھ میں موجود الگورتھم نظریاتی تجزیہ کے لیے کم قابل قبول ہے، رسمی تجزیہ مایوس کن طور پر ایسی حدود کا مشورہ دیتا ہے جو عملی دلچسپی کے ان پٹ پر ظاہر ہونے کا امکان نہیں ہے، الگورتھم جدید ہارڈ ویئر آرکیٹیکچرز کی پیچیدگیوں پر انحصار کرتا ہے جیسے ڈیٹا لوکیٹی، برانچ پیشن گوئی، انسٹرکشن اسٹال، انسٹرکشن لیٹینسی جو الگورتھم تھیوری میں استعمال ہونے والا مشین ماڈل مطلوبہ تفصیل میں حاصل کرنے سے قاصر ہے، مختلف مستقل اخراجات اور غیر علامتی طرز عمل کے ساتھ مسابقتی الگورتھم کے درمیان کراس اوور کا تعین کرنے کی ضرورت ہے۔ طریقہ کار کچھ محققین الگورتھم انجینئرنگ کے طریقہ کار کو ایک چکر کے طور پر بیان کرتے ہیں جو الگورتھم ڈیزائن، تجزیہ، نفاذ اور تجرباتی تشخیص پر مشتمل ہوتا ہے، جس میں مشین ماڈل یا حقیقت پسندانہ ان پٹ جیسے مزید پہلو شامل ہوتے ہیں۔ ان کا کہنا ہے کہ الگورتھم انجینئرنگ کو تجرباتی الگورتھم کے برابر کرنا بہت محدود ہے، کیونکہ ڈیزائن اور تجزیہ، نفاذ اور تجربے کو علیحدہ سرگرمیوں کے طور پر دیکھنا الگورتھم انجینئرنگ کے ان عناصر کے درمیان اہم فیڈ بیک لوپ کو نظر انداز کرتا ہے۔ حقیقت پسندانہ ماڈل اور حقیقی ان پٹ اگرچہ مخصوص ایپلی کیشنز الگورتھم انجینئرنگ کے طریقہ کار سے باہر ہیں، لیکن وہ مسئلہ اور بنیادی مشین کے حقیقت پسندانہ ماڈل کی تشکیل میں اہم کردار ادا کرتے ہیں، اور تجربات کے لیے حقیقی ان پٹ اور دیگر ڈیزائن پیرامیٹرز فراہم کرتے ہیں۔ ڈیزائن الگورتھم تھیوری کے مقابلے میں، جو عام طور پر الگورتھم کے غیر علامتی رویے پر مرکوز ہے، الگورتھم انجینئرز کو مزید ضروریات کو ذہن میں رکھنے کی ضرورت ہے: الگورتھم کی سادگی، حقیقی ہارڈ ویئر پر پروگرامنگ زبانوں میں عمل درآمد، اور کوڈ کے دوبارہ استعمال کی اجازت۔ مزید برآں، الگورتھم کے مستقل عوامل کا حقیقی دنیا کے ان پٹ پر اتنا کافی اثر پڑتا ہے کہ بعض اوقات بدتر غیر علامتی رویے والا الگورتھم کم مستقل عوامل کی وجہ سے عملی طور پر بہتر کارکردگی کا مظاہرہ کرتا ہے۔ تجزیہ کچھ مسائل کو تعیناتی الگورتھم کے مقابلے میں ہیورسٹکس اور بے ترتیب الگورتھم کے ساتھ آسان اور زیادہ موثر انداز میں حل کیا جا سکتا ہے۔ بدقسمتی سے، اس سے سادہ بے ترتیب الگورتھم کا تجزیہ کرنا بھی مشکل ہو جاتا ہے کیونکہ اس میں ٹھیک ٹھیک انحصار کو مدنظر رکھنا پڑتا ہے۔ نفاذ نظریاتی بصیرت، وضع کردہ الگورتھم، پروگرامنگ زبانوں اور ہارڈ ویئر کے درمیان بڑے معنی خیز فرق یہاں تک کہ سادہ الگورتھم کے موثر نفاذ کے لیے ایک چیلنج پیدا کرتے ہیں، کیونکہ عمل درآمد کی چھوٹی تفصیلات عمل درآمد کے رویے پر لہردار اثرات مرتب کر سکتی ہیں۔ الگورتھم کے متعدد نفاذ کا موازنہ کرنے کا واحد قابل اعتماد طریقہ یہ ہے کہ ٹیوننگ اور پروفائلنگ پر کافی وقت گزارا جائے، ان الگورتھم کو متعدد آرکیٹیکچرز پر چلایا جائے، اور تیار کردہ مشین کوڈ کو دیکھا جائے۔ تجربات دیکھیں: تجرباتی الگورتھم ایپلی کیشن انجینئرنگ تجربات کے لیے استعمال ہونے والے الگورتھم کے نفاذ ایپلی کیشنز میں قابل استعمال کوڈ سے نمایاں طریقوں سے مختلف ہیں۔ اگرچہ سابقہ تجربات کے دوران پیمائش کے لیے تیز پروٹو ٹائپنگ، کارکردگی اور آلات کو ترجیح دیتا ہے، لیکن مؤخر الذکر کو مخصوص کلاسوں کے آدانوں کے لیے مکمل جانچ، دیکھ بھال، سادگی اور ٹیوننگ کی ضرورت ہوتی ہے۔ ایل ای ڈی اے جیسی مستحکم، اچھی طرح سے تجربہ شدہ الگورتھم لائبریریاں ایپلی کیشنز میں نئے الگورتھم کو اپنانے میں تیزی لا کر ٹیکنالوجی کی منتقلی میں اہم کردار ادا کرتی ہیں۔ اس طرح کی لائبریریاں پریکٹیشنرز کے لیے مطلوبہ سرمایہ کاری اور خطرے کو کم کرتی ہیں، کیونکہ یہ تعلیمی تحقیق کے نتائج کو سمجھنے اور ان پر عمل درآمد کے بوجھ کو دور کرتی ہیں۔ کانفرنس ہر سال الگورتھم انجینئرنگ پر دو اہم کانفرنسوں کا انعقاد کیا جاتا ہے، یعنی: تجرباتی الگورتھم (ایس ای اے) پر سمپوزیم، جو 1997 میں قائم کیا گیا تھا (جو پہلے ڈبلیو ای اے کے نام سے جانا جاتا تھا)۔ الگورتھم انجینئرنگ اور تجربات (ایلینیکس) پر ایس آئی اے ایم میٹنگ، جو 1999 میں قائم ہوئی۔ الگورتھم انجینئرنگ (ڈبلیو اے ای '97) پر 1997 کی ورکشاپ ستمبر 11-13، 1997 کو وینس (اٹلی) میں منعقد ہوئی۔ الگورتھم انجینئرنگ پر تیسری بین الاقوامی ورکشاپ (ڈبلیو اے ای '99) جولائی 1999 میں لندن، برطانیہ میں منعقد ہوئی۔ الگورتھم انجینئرنگ اور تجربے (ALENEX99) پر پہلی ورکشاپ بالٹیمور، میری لینڈ میں جنوری 15-16، 1999 کو منعقد ہوئی۔ اسے SIGACT، الگورتھم اور کمپیوٹیشن تھیوری پر ACM اسپیشل انٹرسٹ گروپ، اور SIAM، سوسائٹی فار انڈسٹریل اینڈ اپلائیڈ میتھمیٹکس کے اضافی تعاون سے DIMACS، سینٹر فار ڈسکریٹ میتھمیٹکس اینڈ تھیوریٹیکل کمپیوٹر سائنس (رٹگرز یونیورسٹی میں) نے اسپانسر کیا تھا۔ حوالہ جات الگورتھم نظریاتی کمپیوٹر سائنس