কম্পিউটার বিজ্ঞানের মেজরদের এনপি-সম্পূর্ণতা কীভাবে শেখানো যায় তার প্রশ্নে আমি আগ্রহী। বিশেষত, কার্পের হ্রাস বা টুরিং হ্রাস ব্যবহার করে আমাদের এটি শেখানো উচিত?
আমি অনুভব করি যে এনপি-সম্পূর্ণতা এবং হ্রাসের ধারণাগুলি এমন একটি বিষয় যা প্রতিটি কম্পিউটার বিজ্ঞানের প্রধান শিখতে হবে। যাইহোক, এনপি-সম্পূর্ণতা শেখানোর সময়, আমি লক্ষ্য করেছি যে কার্প হ্রাসের ব্যবহারের কিছুটা ডাউনসাইড রয়েছে।
প্রথমত, কার্পের হ্রাস কিছু শিক্ষার্থীর জন্য অহেতুক বিভ্রান্তিকর বলে মনে হচ্ছে। হ্রাসের স্বজ্ঞাত ধারণাটি হ'ল "যদি আমার এক্স সমস্যা সমাধানের জন্য আমার কাছে অ্যালগরিদম থাকে তবে আমি এটি Y এর সমাধান করতেও ব্যবহার করতে পারি"। এটি খুব স্বজ্ঞাত - তবে এটি কর্প হ্রাসের তুলনায় টুরিং হ্রাসের চেয়ে আরও ভাল মানচিত্র। ফলস্বরূপ, আমি দেখছি যে শিক্ষার্থীরা এনপি-সম্পূর্ণতা প্রমাণের চেষ্টা করছে তাদের স্বজ্ঞাততার দ্বারা ভুল পথে পরিচালিত হয় এবং একটি ভুল প্রমাণ তৈরি করে। উভয় প্রকার হ্রাস শেখানোর চেষ্টা করা এবং কার্প হ্রাসের এই দিকটির উপর জোর দেওয়া কখনও কখনও অহেতুক আনুষ্ঠানিকতার মতো মনে হয় এবং অযৌক্তিক প্রযুক্তিগত বিশদ হিসাবে কী মনে হয় সে সম্পর্কে অপ্রয়োজনীয় শ্রেণীর সময় এবং শিক্ষার্থীদের মনোযোগ গ্রহণ করে; আমরা হ্রাসের এই আরও সীমিত ধারণাটি কেন ব্যবহার করি তা স্ব-স্পষ্ট নয়।
আমি করপ হ্রাস এবং টুরিং (কুক) হ্রাসের মধ্যে পার্থক্য বুঝতে পারি এবং কীভাবে তারা এনপি-সম্পূর্ণতার বিভিন্ন ধারণা নিয়ে যায়। আমি বুঝতে পারি যে কার্প হ্রাস আমাদের জটিলতা শ্রেণীর মধ্যে পার্থক্যের একটি সূক্ষ্ম গ্রানুলারিটি দেয়। সুতরাং, জটিলতা তত্ত্বের গুরুতর অধ্যয়নের জন্য, কার্প হ্রাস অবশ্যই স্পষ্টত সঠিক সরঞ্জাম। তবে কম্পিউটার বিজ্ঞানের শিক্ষার্থীরা যারা কেবল এটি শিখছেন এবং কখনই জটিলতা তত্ত্বের দিকে যাবেন না, তাদের অনাবৃত হওয়ার জন্য এই সূক্ষ্ম পার্থক্যটি গুরুত্বপূর্ণ কিনা তা আমি অনিশ্চিত।
পরিশেষে, একজন ছাত্র হিসাবে, আমি যখন "টাউটোলজি" - এর মতো কোনও সমস্যার মুখোমুখি হয়েছি তখন আমার মনে হতবাক হয়ে যাওয়া মনে আছে - যেমন, বুলিয়ান সূত্র দেওয়া হয়, এটি কোনও টোটোলজি কিনা তা পরীক্ষা করে দেখুন। বিভ্রান্তিকর বিষয়টি হ'ল এই সমস্যাটি স্পষ্টতই শক্ত: এর জন্য যে কোনও বহু-কালীন অ্যালগরিদম বোঝায় যে ; এবং এই সমস্যাটি সমাধান করা স্পষ্টতই টাউটোলজি সমস্যা সমাধানের মতো শক্ত। তবে স্বজ্ঞাতভাবে টাউটোলজি তৃপ্তিযোগ্যতার মতো শক্ত হলেও টাউটোলজি এনপি-হার্ড নয়। হ্যাঁ, আমি কেন আজ কেন বুঝতে পারি তা বুঝতে পেরেছি, কিন্তু সেই সময়টি দেখে আমি হতবাক হয়েছি। (একবারে যখন আমি শেষ অবধি বুঝতে পেরেছিলাম তা হ'ল: কেন আমরা এনপি-হার্ড এবং কো-এনপি-হার্ডের মধ্যে এই পার্থক্যটি আঁকব? এটি কৃত্রিম বলে মনে হয় এবং অনুশীলনের মাধ্যমে খুব ভাল অনুপ্রাণিত হয় না rather আমরা কেন এনপি-তে মনোনিবেশ করি না? কো-এনপি-এর চেয়ে এগুলিও সমান স্বাভাবিক বলে মনে হয় practical বাস্তবিক দৃষ্টিকোণ থেকে, সহ-এনপি-কঠোরতার মূলত এনপি-কঠোরতার মতো একই ব্যবহারিক পরিণতি রয়েছে বলে মনে হচ্ছে, তবে কেন আমরা সকলেই এই পার্থক্যে ঝুলতে পারি? হ্যাঁ, আমি জানি উত্তরগুলি, কিন্তু একজন ছাত্র হিসাবে আমার মনে আছে এটি কেবল বিষয়টিকে আরও তাত্পর্যপূর্ণ এবং খারাপ প্ররোচিত মনে করেছে))
তাই আমার প্রশ্ন হল এটি. আমরা যখন শিক্ষার্থীদের এনপি-সম্পূর্ণতা শেখাই, তখন কার্প কমানো বা টুরিং হ্রাস ব্যবহার শেখানো কি ভাল? কেউ কি টুরিং হ্রাস ব্যবহার করে এনপি-সম্পূর্ণতার ধারণাটি শেখানোর চেষ্টা করেছেন? তা হলে কীভাবে গেল? আমরা যদি টিউরিং হ্রাস ব্যবহারের ধারণাটি শিখিয়ে দিয়ে, এবং কার্প হ্রাসের সাথে সম্পর্কিত ধারণাগত সমস্যাগুলি বাদ দিয়ে থাকি তবে কি কোনও অ-সুস্পষ্ট সমস্যা বা অসুবিধা হবে?
সম্পর্কিত: এখানে এবং এখানে দেখুন , যা উল্লেখ করেছে যে আমরা সাহিত্যে কার্প হ্রাস ব্যবহার করার কারণ এটি আমাদের এনপি-কঠোরতা এবং সহ-এনপি-কঠোরতার মধ্যে পার্থক্য করতে সক্ষম করে। যাইহোক, এটি এমন কোনও উত্তর দেওয়ার মতো বলে মনে হচ্ছে না যা এই অ্যালগরিদম শ্রেণীর শেখার উদ্দেশ্যগুলির জন্য প্রতিটি সিএস মেজরকে নেওয়া উচিত কিনা এই শিক্ষাগত দৃষ্টিভঙ্গির উপর কেন্দ্রীভূত কিনা of আরও দেখুন এখানে cstheory.SE উপর , যা একটি অনুরূপ আলোচনা হয়েছে।