প্রোগ্রামগুলি সমাপ্ত করার জন্য কি সম্পূর্ণরূপে অনুকূলিতকরণ সংকলক বিদ্যমান?


20

অ্যান্ড্রু ডব্লিউ। আপেলের বই, এমএল-তে আধুনিক কম্পাইলার বাস্তবায়ন , তিনি অধ্যায় 17 এর অধীনে বলেছেন যে কমপ্যুটেবিলিটি তত্ত্বটি দেখায় যে সর্বদা নতুন অপ্টিমাইটিং ট্রান্সফর্মেশনগুলি আবিষ্কার করা সম্ভব হবে এবং প্রমাণ করতে যে সম্পূর্ণরূপে অপ্টিমাইজ করা সংকলকটি থামবে সমস্যার সমাধান করবে: একটি প্রোগ্রাম প্রশ্ন যা কোনও আউটপুট উত্পাদন করে না এবং কখনও থামবে না তার অনুকূল উপস্থাপনা, অপ্ট (কিউ) দ্বারা সহজেই প্রতিস্থাপন করা যাবে , "এল: গোটো এল" হচ্ছে। সুতরাং একটি সম্পূর্ণ অপ্টিমাইজ করা সংকলক থামার সমস্যার সমাধান করতে পারে।

সুতরাং আমার প্রশ্নটি হ'ল: প্রোগ্রামগুলি বন্ধ করার জন্য কি একটি সম্পূর্ণরূপে অনুকূলকরণকারী সংকলক উপস্থিত রয়েছে? আমার একমাত্র চিন্তাভাবনাগুলি নিম্নরূপ: যদিও কোনও প্রোগ্রামটি সমাপ্ত হওয়ার গ্যারান্টিযুক্ত তবে এটি নির্বিচারে জটিল হতে পারে এবং কোনও কংক্রিট অপ্টিমাইজিং সংকলক, সি এর জন্য সম্ভবত একটি প্রোগ্রাম তৈরি করতে পারে যা সি কে ইনপুট হিসাবে গ্রহণ করে এবং কোনওরকমভাবে খারাপ প্রোগ্রাম তৈরি করে as কোন এক কোণার কেস

এছাড়াও, নিজেকে প্রোগ্রামিং সমাপ্তিতে সীমাবদ্ধ করার কী কী প্রভাব রয়েছে?


2
এমনকি কোনও নিয়ন্ত্রণ প্রবাহ ছাড়াই কোডের একক ব্লকের জন্য অনুকূল নির্দেশের সিকোয়েন্সটি খুঁজে পাওয়া শক্ত। Superoptimization উইকিপিডিয়া নিবন্ধ একটি ভাল ইন্ট্রো দেয় (উদ্ধৃতির যান।)
পরিব্রাজক লজিক

উইকিপিডিয়া নিবন্ধে উল্লেখ করা হয়েছে যে সুপারোটিমাইজেশন নির্দেশাবলীর লুপ-মুক্ত ধারাগুলিকে দেখায় looks আমার মনে হয় কোনও লুপ নেই, এটি বলার অন্য উপায় যা এটি বন্ধ হয়ে যায়। উপলব্ধ রেফারেন্সগুলিতে সংক্ষিপ্তভাবে তাকানো থেকে, এটি সম্ভবত সম্ভব হলেও অত্যন্ত ব্যয়বহুল বলে মনে হয়।
সাইমন 'পুনরায় ইনস্টল মনিকা'

2
এখানে "অনুকূলিতকরণ" এর অর্থ কী? ছোট রানটাইম? যদি তাই হয় তবে কোনটি: সবচেয়ে খারাপ ক্ষেত্রে, গড়-কেস, প্রতিটি ক্ষেত্রে, কিছু ক্ষেত্রে, ...?
রাফেল

উত্তর:


16

আমি ধরে নিই যে আপনি রানটাইম অনুকূলিতকরণে আগ্রহী। যেমনটি আমি আমার মন্তব্যে লিখেছি, এটি পর্যাপ্তরূপে লক্ষ্য নির্দিষ্ট করে না: একটি অপ্টিমাইজেশন কোনও ইনপুট, প্রতিটি ইনপুট, সমস্ত খারাপতম ইনপুট বা গড়পড়তা এমনকি রানটাইম হ্রাস করে ?

আমি দেখাব যে এগুলি সবই অসম্ভব। প্রমাণটি প্রোগ্রামটির দৈর্ঘ্য অনুকূলকরণের ক্ষেত্রে প্রসারিত।

মনে রাখবেন যে নিম্নলিখিত সমস্যাটি গণনাযোগ্য নয়:

টার্মিনাল বর্ণমালা সহ একটি প্রসঙ্গমুক্ত ব্যাকরণ দেওয়া , decide কিনা তা স্থির করুন ।GΣL(G)=Σ

আরও উল্লেখ করুন যে প্রসঙ্গ-মুক্ত ব্যাকরণ , আমরা হার্ডকোড করতে পারি, বলতে পারি যে সেই ব্যাকরণের জন্য সিওয়াইকে অ্যালগরিদম; এই অ্যালগরিদমকে দ্বারা চিহ্নিত করুন । আমরা লক্ষ্য করেছি যে সমস্ত ইনপুট ( ) জন্য সমাপ্ত হয় ।GCYKGCYKGΣ

এখন ধরে নিন যে একটি অপ্টিমাইজার রয়েছে অপেরাটর্নাম যা সর্বদা শেষ করে দেওয়া অ্যালগরিদম , ফলাফল-সমমানের অ্যালগরিদমকে আউটপুট দেয় যা রানটাইমের সাথে সম্মানজনকভাবে অনুকূল is পরিষ্কারভাবে,OptA

Opt(CYKG)='return true;'L(G)=Σ

এবং আমরা এইভাবে অনুমানের বিপরীতে একটি আপত্তিজনক সমস্যার জন্য সিদ্ধান্ত গ্রহণকারী তৈরি করেছি।


এই যুক্তি জন্য আপনাকে ধন্যবাদ। কয়েক সে বিষয়ে পরিষ্কারভাবে বর্ণনা প্রশ্ন: কী ? আমি ধরে নিয়েছি এল ( জি ) হ'ল ব্যাকরণ জি দ্বারা উত্পাদিত ভাষা । ΣL(G)G
সাইমন 'রিইনস্টেট মনিকা' শাইন

3
@Simon: সব শব্দের সেট। রাফেল: চমৎকার প্রমাণ। আসলে আপনার প্রসঙ্গমুক্ত ব্যাকরণের দরকার নেই; পরিবর্তে, একটি টুরিং মেশিন দেওয়া এম আপনি একটি প্রোগ্রাম তৈরি করতে পারেন পি এম ( আমি ) যে simulates এম জন্য আমি পদক্ষেপ এবং আয় যদি সত্য হয় মেশিন একটি গ্রহণ রাষ্ট্র ছুঁয়েছে। তারপরে ওপিটি ( পি এম ) হবে ' r e t u r n f a l s e ; ' যদি এম থামায় না। ΣMPM(i)MiOPT(PM)'return false;'M
sdcvvc
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.