Algorithm engineering
એલ્ગોરિધમ એન્જિનિયરિંગ કમ્પ્યુટર એલ્ગોરિધમ્સની ડિઝાઇન, વિશ્લેષણ, અમલીકરણ, ઓપ્ટિમાઇઝેશન, પ્રોફાઇલિંગ અને પ્રાયોગિક મૂલ્યાંકન પર ધ્યાન કેન્દ્રિત કરે છે, જે સોફ્ટવેર એન્જિનિયરિંગમાં એલ્ગોરિધમ સિદ્ધાંત અને એલ્ગોરિધમ્સના વ્યવહારુ કાર્યક્રમો વચ્ચેના અંતરને દૂર કરે છે. તે એલ્ગોરિધમિક સંશોધન માટેની સામાન્ય પદ્ધતિ છે. 1995 માં, "થિયરી ઓફ કમ્પ્યુટિંગ (TOC) સમુદાયના વર્તમાન લક્ષ્યો અને દિશાઓનું મૂલ્યાંકન કરવાના હેતુથી" NSF-પ્રાયોજિત વર્કશોપના એક અહેવાલમાં પ્રેક્ટિશનરો દ્વારા સૈદ્ધાંતિક આંતરદૃષ્ટિને અપનાવવાની ધીમી ગતિને એક મહત્વપૂર્ણ મુદ્દા તરીકે ઓળખવામાં આવી હતી અને પ્રેક્ટિશનરો દ્વારા અનિશ્ચિતતા ઘટાડવા માટે પગલાં સૂચવવામાં આવ્યા હતા કે શું ચોક્કસ સૈદ્ધાંતિક સફળતા તેમના કાર્યક્ષેત્રમાં વ્યવહારુ લાભમાં પરિવર્તિત થશે, અને ઉપયોગમાં લેવા માટે તૈયાર અલ્ગોરિધમ પુસ્તકાલયોના અભાવને દૂર કરશે, જે અલ્ગોરિધમિક સમસ્યાઓ માટે સ્થિર, બગ-મુક્ત અને સારી રીતે ચકાસાયેલ અમલીકરણ પ્રદાન કરે છે અને પુસ્તકાલય ગ્રાહકો માટે ઉપયોગમાં સરળ ઇન્ટરફેસને છતી કરે છે. પણ, ગાણિતિક વિશ્લેષણમાં મુશ્કેલીઓને કારણે આશાસ્પદ અલ્ગોરિધમિક અભિગમોની અવગણના કરવામાં આવી છે. "અલ્ગોરિધમ એન્જિનિયરિંગ" શબ્દનો ઉપયોગ સૌપ્રથમ 1997 માં વિશિષ્ટતા સાથે કરવામાં આવ્યો હતો, જેમાં જિયુસેપ એફ. ઈટાલિયાનો દ્વારા આયોજિત અલ્ગોરિધમ એન્જિનિયરિંગ (ડબલ્યુએઈ97) પરની પ્રથમ વર્કશોપ હતી. અલ્ગોરિધમ સિદ્ધાંતથી તફાવત એલ્ગોરિધમ ઇજનેરીનો હેતુ અલ્ગોરિધમ સિદ્ધાંતને બદલવાનો અથવા તેની સાથે સ્પર્ધા કરવાનો નથી, પરંતુ પ્રાયોગિક અલ્ગોરિધમ્સ (જેને પ્રયોગમૂલક અલ્ગોરિધમ્સ પણ કહેવાય છે) સાથે તેના ઔપચારિક અભિગમોને સમૃદ્ધ, શુદ્ધ અને મજબૂત કરવાનો પ્રયાસ કરે છે. આ રીતે તે એવા કિસ્સાઓમાં અલ્ગોરિધમ્સની કાર્યક્ષમતા અને કામગીરીમાં નવી આંતરદૃષ્ટિ પ્રદાન કરી શકે છે જ્યાં હાથ પરનું અલ્ગોરિધમ સૈદ્ધાંતિક વિશ્લેષણ માટે ઓછું અનુકૂળ હોય, ઔપચારિક વિશ્લેષણ નિરાશાવાદી રીતે એવી સીમાઓ સૂચવે છે જે વ્યવહારુ હિતના ઇનપુટ્સ પર દેખાતી નથી, અલ્ગોરિધમ આધુનિક હાર્ડવેર આર્કિટેક્ચરની જટિલતાઓ પર આધાર રાખે છે જેમ કે ડેટા સ્થાન, શાખા આગાહી, સૂચના સ્ટોલ, સૂચના વિલંબતા જે અલ્ગોરિધમ થિયરીમાં ઉપયોગમાં લેવાતા મશીન મોડેલ જરૂરી વિગતવાર કેપ્ચર કરવામાં અસમર્થ છે, વિવિધ સતત ખર્ચ અને એસિમ્પ્ટોટિક વર્તણૂકો સાથે સ્પર્ધાત્મક અલ્ગોરિધમ્સ વચ્ચેનો ક્રોસઓવર નક્કી કરવાની જરૂર છે. પદ્ધતિશાસ્ત્ર કેટલાક સંશોધકો અલ્ગોરિધમ એન્જિનિયરિંગની પદ્ધતિને એક ચક્ર તરીકે વર્ણવે છે જેમાં અલ્ગોરિધમ ડિઝાઇન, વિશ્લેષણ, અમલીકરણ અને પ્રાયોગિક મૂલ્યાંકનનો સમાવેશ થાય છે, જે મશીન મોડેલ્સ અથવા વાસ્તવિક ઇનપુટ્સ જેવા વધુ પાસાઓ દ્વારા જોડાયેલા છે. તેઓ દલીલ કરે છે કે અલ્ગોરિધમ એન્જિનિયરિંગને પ્રાયોગિક અલ્ગોરિધમ્સ સાથે સરખાવવું ખૂબ મર્યાદિત છે, કારણ કે ડિઝાઇન અને વિશ્લેષણ, અમલીકરણ અને પ્રયોગોને અલગ પ્રવૃત્તિઓ તરીકે જોવું એ અલ્ગોરિધમ એન્જિનિયરિંગના તે ઘટકો વચ્ચેના નિર્ણાયક પ્રતિસાદ લૂપની અવગણના કરે છે. વાસ્તવિક નમૂનાઓ અને વાસ્તવિક ઇનપુટ્સ જ્યારે ચોક્કસ કાર્યક્રમો એલ્ગોરિધમ એન્જિનિયરિંગની પદ્ધતિની બહાર હોય છે, ત્યારે તેઓ સમસ્યાના વાસ્તવિક નમૂનાઓ અને અંતર્ગત મશીનને આકાર આપવામાં મહત્વપૂર્ણ ભૂમિકા ભજવે છે, અને પ્રયોગો માટે વાસ્તવિક ઇનપુટ્સ અને અન્ય ડિઝાઇન પરિમાણો પૂરા પાડે છે. અલ્ગોરિધમ સિદ્ધાંતની સરખામણીમાં, જે સામાન્ય રીતે અલ્ગોરિધમ્સના એસિમ્પ્ટોટિક વર્તન પર ધ્યાન કેન્દ્રિત કરે છે, અલ્ગોરિધમ ઇજનેરોએ વધુ જરૂરિયાતોને ધ્યાનમાં રાખવાની જરૂર છેઃ અલ્ગોરિધમનો સરળતા, વાસ્તવિક હાર્ડવેર પર પ્રોગ્રામિંગ ભાષાઓમાં અમલીકરણક્ષમતા અને કોડના પુનઃઉપયોગને મંજૂરી આપવી. વધુમાં, અલ્ગોરિધમ્સના સતત પરિબળો વાસ્તવિક દુનિયાના ઇનપુટ્સ પર એટલી નોંધપાત્ર અસર કરે છે કે કેટલીકવાર ખરાબ એસિમ્પ્ટોટિક વર્તન સાથેનું અલ્ગોરિધમ ઓછા સ્થિર પરિબળોને કારણે વ્યવહારમાં વધુ સારું પ્રદર્શન કરે છે. વિશ્લેષણ કેટલીક સમસ્યાઓને હ્યુરિસ્ટિક્સ અને રેન્ડમાઇઝ્ડ અલ્ગોરિધમ્સ દ્વારા નિર્ધારિત અલ્ગોરિધમ્સ કરતાં વધુ સરળ અને વધુ કાર્યક્ષમ રીતે ઉકેલી શકાય છે. કમનસીબે, આ સરળ રેન્ડમાઇઝ્ડ અલ્ગોરિધમ્સનું વિશ્લેષણ કરવું પણ મુશ્કેલ બનાવે છે કારણ કે તેમાં સૂક્ષ્મ અવલંબનને ધ્યાનમાં લેવું પડે છે. અમલીકરણ સૈદ્ધાંતિક આંતરદૃષ્ટિ, ઘડાયેલા અલ્ગોરિધમ્સ, પ્રોગ્રામિંગ ભાષાઓ અને હાર્ડવેર વચ્ચેનો વિશાળ સિમેન્ટીક ગેપ સરળ અલ્ગોરિધમ્સના કાર્યક્ષમ અમલીકરણ માટે પણ પડકાર ઊભો કરે છે, કારણ કે અમલીકરણની નાની વિગતો અમલીકરણ વર્તણૂક પર લહેરાતી અસરો કરી શકે છે. અલ્ગોરિધમનોના ઘણા અમલીકરણની તુલના કરવાની એકમાત્ર વિશ્વસનીય રીત એ છે કે ટ્યુનિંગ અને પ્રોફાઇલિંગ પર નોંધપાત્ર સમય પસાર કરવો, તે અલ્ગોરિધમ્સને બહુવિધ આર્કિટેક્ચર પર ચલાવવું અને જનરેટેડ મશીન કોડને જોવું. પ્રયોગો જુઓઃ પ્રાયોગિક અલ્ગોરિધમ્સ એપ્લિકેશન એન્જિનિયરિંગ પ્રયોગો માટે ઉપયોગમાં લેવાતા અલ્ગોરિધમ્સના અમલીકરણ એપ્લિકેશન્સમાં ઉપયોગી કોડથી નોંધપાત્ર રીતે અલગ છે. જ્યારે પહેલું પ્રયોગો દરમિયાન માપન માટે ઝડપી પ્રોટોટાઇપિંગ, પ્રદર્શન અને ઇન્સ્ટ્રુમેન્ટેશનને પ્રાથમિકતા આપે છે, ત્યારે બાદમાં ચોક્કસ વર્ગના ઇનપુટ્સ માટે સંપૂર્ણ પરીક્ષણ, જાળવણીક્ષમતા, સરળતા અને ટ્યુનિંગની જરૂર પડે છે. એલ્ગોરિધમ લાઈબ્રેરીઓ LEDA જેવી સ્થિર, સારી રીતે ચકાસાયેલ એલ્ગોરિધમ લાઈબ્રેરીઓ એપ્લિકેશન્સમાં નવા એલ્ગોરિધમ્સને અપનાવવામાં ઝડપ લાવીને ટેકનોલોજી ટ્રાન્સફરમાં મહત્વપૂર્ણ ભૂમિકા ભજવે છે. આવા પુસ્તકાલયો વ્યવસાયિકો માટે જરૂરી રોકાણ અને જોખમ ઘટાડે છે, કારણ કે તે શૈક્ષણિક સંશોધનના પરિણામોને સમજવા અને અમલમાં મૂકવાનો બોજ દૂર કરે છે. પરિષદો એલ્ગોરિધમ એન્જિનિયરિંગ પર વાર્ષિક બે મુખ્ય પરિષદો યોજવામાં આવે છે, એટલે કેઃ પ્રાયોગિક અલ્ગોરિધમ્સ (SEA) પર પરિસંવાદ, જેની સ્થાપના 1997 માં કરવામાં આવી હતી (અગાઉ WEA તરીકે ઓળખાતી). એલ્ગોરિધમ એન્જિનિયરિંગ અને પ્રયોગો (ALENEX) પર SIAM બેઠક, જેની સ્થાપના 1999માં કરવામાં આવી હતી. એલ્ગોરિધમ એન્જિનિયરિંગ (ડબલ્યુ. એ. ઈ. '97) પર 1997ની વર્કશોપ સપ્ટેમ્બર <આઇ. ડી. 1>, 1997ના રોજ વેનિસ (ઇટાલી) માં યોજાઈ હતી. એલ્ગોરિધમ એન્જિનિયરિંગ પર ત્રીજી આંતરરાષ્ટ્રીય વર્કશોપ (ડબલ્યુ. એ. ઈ. '99) જુલાઈ 1999માં લંડન, યુકેમાં યોજાઈ હતી. એલ્ગોરિધમ એન્જિનિયરિંગ અને પ્રયોગ (ALENEX99) પરની પ્રથમ વર્કશોપ બાલ્ટીમોર, મેરીલેન્ડમાં જાન્યુઆરી 15-16,1999માં યોજાઈ હતી. તે DIMACS, સેન્ટર ફોર ડિસ્ક્રીટ મેથેમેટિક્સ એન્ડ થિયોરેટિકલ કમ્પ્યુટર સાયન્સ (રુટગર્સ યુનિવર્સિટી ખાતે) દ્વારા SIGACT, અલ્ગોરિધમ્સ એન્ડ કમ્પ્યુટેશન થિયરી પર ACM સ્પેશિયલ ઇન્ટરેસ્ટ ગ્રૂપ અને SIAM, સોસાયટી ફોર ઇન્ડસ્ટ્રિયલ એન્ડ એપ્લાઇડ મેથેમેટિક્સના વધારાના સમર્થન સાથે પ્રાયોજિત કરવામાં આવ્યું હતું. સંદર્ભો અલ્ગોરિધમ્સ સૈદ્ધાંતિક કોમ્પ્યુટર વિજ્ઞાન