এটি সমস্তটি থামিয়ে দেওয়া সমস্যার অনিশ্চয়তা থেকে আসে। মনে করুন আমাদের কাছে একটি "নিখুঁত" ডেড কোড ফাংশন, কিছু ট্যুরিং মেশিন এম, এবং কিছু ইনপুট স্ট্রিং এক্স এবং এমন একটি পদ্ধতি যা দেখতে দেখতে কিছুটা এমন দেখায়:
Run M on input x;
print "Finished running input";
এম যদি চিরকালের জন্য চালায় তবে আমরা মুদ্রণ বিবৃতি মুছব, যেহেতু আমরা এটিতে পৌঁছাতে পারি না। এম যদি চিরকালের জন্য না চালায় তবে আমাদের মুদ্রণ বিবৃতি রাখতে হবে। সুতরাং, যদি আমাদের একটি ডেড-কোড রিমুভার থাকে, তবে এটি আমাদের হ্যালটিং সমস্যা সমাধান করতে দেয়, তাই আমরা জানি যে এই জাতীয় কোনও ডেড-কোড রিমুভার হতে পারে না।
আমরা এর আশেপাশে যাবার উপায় হ'ল "রক্ষণশীল আনুমানিকতা"। সুতরাং, উপরে আমার ট্যুরিং মেশিনের উদাহরণে আমরা ধরে নিতে পারি যে এম তে এম চালানো শেষ হতে পারে, তাই আমরা এটি নিরাপদে খেলি এবং মুদ্রণ বিবৃতিটি সরিয়ে নেই। আপনার উদাহরণস্বরূপ, আমরা জানি যে কোনও কাজ যা করুক বা থামবে না, আমরা মুদ্রণ বিবৃতিতে পৌঁছানোর কোনও উপায় নেই।
সাধারণত, এটি "নিয়ন্ত্রণ-প্রবাহ গ্রাফ" তৈরি করে সম্পন্ন করা হয়। আমরা সরলকরণ অনুমানগুলি তৈরি করি, যেমন "কিছুক্ষণের শেষে লুপটি শুরুতে এবং পরে বিবৃতিটির সাথে সংযুক্ত থাকে" এমনকি যদি তা চিরকাল চলে বা কেবল একবার চালিত হয় এবং উভয়কেই দেখতে না পায়। একইভাবে, আমরা ধরে নিই যে একটি if-বিবৃতি এর সমস্ত শাখায় পৌঁছতে পারে, এমনকি বাস্তবে কিছু ব্যবহার না করা হলেও। এই ধরণের সরলীকরণগুলি সিদ্ধান্ত গ্রহণের পরেও আপনার দেওয়া উদাহরণের মতো "স্পষ্টতই ডেড কোড" সরিয়ে ফেলতে আমাদের অনুমতি দেয়।
মন্তব্যগুলি থেকে কয়েকটি বিভ্রান্তি স্পষ্ট করতে:
নিতপিক: স্থির এম এর জন্য এটি সর্বদা নির্ধারিত। এম ইনপুট হতে হবে
যেমন রাফেল বলেছেন, আমার উদাহরণে, আমরা ট্যুরিং মেশিনকে একটি ইনপুট হিসাবে বিবেচনা করি। ধারণাটি হ'ল, যদি আমাদের একটি নিখুঁত ডিসিই অ্যালগরিদম থাকে তবে আমরা যে কোনও টুরিং মেশিনের জন্য দিয়েছি কোড স্নিপেটটি তৈরি করতে সক্ষম হব এবং একটি ডিসিই থাকার ফলে থামানো সমস্যার সমাধান হবে।
বিশ্বাসী না কোনও নো-ব্রাঞ্চে একটি ভোঁতা স্টেটমেন্ট হিসাবে প্রত্যাবর্তন করা সরাসরি ফায়ার এক্সিকিউশন সিদ্ধান্ত নেওয়া কঠিন নয়। (এবং আমার সংকলক আমাকে বলছে এটি এটি নির্ণয় করতে সক্ষম)
Njzk2 ইস্যুটি উত্থাপনের জন্য: আপনি একেবারে সঠিক, এই ক্ষেত্রে আপনি নির্ধারণ করতে পারবেন যে ফিরে যাওয়ার পরে কোনও বিবৃতি পাওয়া যায় না। এর কারণ এটি যথেষ্ট সহজ যে আমরা নিয়ন্ত্রণ-প্রবাহ গ্রাফের সীমাবদ্ধতাগুলি ব্যবহার করে (যেমন কোনও রিটার্নের স্টেটমেন্টের বাইরে কোনও বহির্গমন প্রান্ত নেই) ব্যবহার করে এর অদম্যতা বর্ণনা করতে পারি। তবে কোনও নিখুঁত ডেড কোড নির্মূলকারী নেই, যা সমস্ত অব্যবহৃত কোডকে সরিয়ে দেয়।
আমি প্রমাণের জন্য ইনপুট-নির্ভর প্রমাণ গ্রহণ করি না। যদি এমন ধরণের ব্যবহারকারীর ইনপুট থাকে যা কোডটিকে সসীম হতে দেয়, তবে নিম্নলিখিত সংস্থাগুলি মারা যায়নি এমনটি ধারণা করা কম্পাইলারের পক্ষে সঠিক। আমি দেখতে পাচ্ছি না এই সমস্তগুলি কীসের জন্য, এটি উভয়টি সুস্পষ্ট (যেমন। অন্তহীন স্টিডিন) এবং ভুল।
টমজাটো জন্য: এটি আসলে কোনও ইনপুট নির্ভর প্রমাণ নয় not বরং এটিকে "ফোরাল" হিসাবে ব্যাখ্যা করুন। এটি নিম্নলিখিত হিসাবে কাজ করে: ধরে নিন আমাদের কাছে একটি নিখুঁত ডিসিই অ্যালগরিদম রয়েছে। আপনি যদি আমাকে একটি নির্বিচারে ট্যুরিং মেশিন এম এবং ইনপুট এক্স দেন তবে আমি উপরের কোড স্নিপেট তৈরি করে এবং মুদ্রণ-বিবৃতিটি সরিয়ে ফেলা হয়েছে কিনা তা দেখে, আমার ডিসিই অ্যালগরিদম ব্যবহার করতে পারি M এই কৌশলটি, একটি ফোরাল-স্টেটমেন্ট প্রমাণের জন্য নির্বিচারে একটি পরামিতি রেখে যাওয়া, গণিত এবং যুক্তিতে সাধারণ।
কোড সীমাবদ্ধ হওয়ার বিষয়ে আমি টমজ্যাটোর বক্তব্যটি পুরোপুরি বুঝতে পারি না। অবশ্যই কোডটি সীমাবদ্ধ, তবে একটি নিখুঁত ডিসিই অ্যালগরিদম অবশ্যই সমস্ত কোডের জন্য প্রয়োগ করতে হবে, এটি একটি ইনফিন্ট সেট। তেমনি কোডটি নিজেই সীমাবদ্ধ থাকাকালীন কোডের সম্ভাব্য চলমান সময় হিসাবে ইনপুটটির সম্ভাব্য সেটগুলি অন্তর্ভুক্ত হয়।
চূড়ান্ত শাখাটি মৃত নয় বলে বিবেচনা করার জন্য: আমি যে "রক্ষণশীল অনুমান" এর কথা বলছি সে ক্ষেত্রে এটি নিরাপদ, তবে ওপি যেমন বলেছে তেমন ডেড কোডের সমস্ত উদাহরণ সনাক্ত করার পক্ষে এটি যথেষ্ট নয়।
কোডটি বিবেচনা করুন:
while (true)
print "Hello"
print "goodbye"
স্পষ্টতই আমরা print "goodbye"
প্রোগ্রামটির আচরণ পরিবর্তন না করে মুছে ফেলতে পারি । সুতরাং, এটি ডেড কোড। কিন্তু যদি পরিবর্তে একটি ভিন্ন ফাংশন কল (true)
মধ্যে while
শর্ত, তাহলে আমরা যদি আমরা তা সরাতে বা করতে পারে না, undecidability নেতৃস্থানীয় জানি না।
মনে রাখবেন যে আমি নিজে থেকে এটি নিয়ে আসছি না। এটি সংকলকগুলির তত্ত্বের একটি সুপরিচিত ফলাফল। এটি টাইগার বইয়ে আলোচিত । ( গুগল বইগুলিতে তারা কোথায় কথা বলবে তা আপনি দেখতে সক্ষম হবেন ।