"কোন সমস্যা সমাধানের সহজতম প্রোগ্রাম" এর জবাব দেওয়ার মত তত্ত্ব আছে?


10

"কম্পিউটিং দ্বারা কী কী সমস্যাগুলি সমাধান করা যেতে পারে" এর উত্তর দেওয়ার জন্য, আমরা গণনা তত্ত্বটি বিকাশ করেছি। গণনাযোগ্য সমস্যাগুলির জন্য, "আমি যে প্রোগ্রামটি সবচেয়ে সহজ পেয়েছি" সে প্রশ্নের উত্তর দেওয়ার জন্য কোনও তত্ত্ব আছে?

আমি গণনা জটিলতার প্রশ্নের উত্তর মনে করি না। আমি মনে করি এটি বিবেচনা করে আমাদের কত দিন প্রয়োজন (যদিও এটি বিমূর্তভাবে পরিমাপ করা হয়)।

আমি নিশ্চিত নই যে অ্যালগরিদমিক তথ্য তত্ত্ব প্রশ্নের উত্তর দেয় কিনা। দেখে মনে হয় যে তত্ত্বটি আকারের বিষয়ে কথা বলে, যেখানে ন্যূনতম আকারের এবং সরলতমের সমতুল্যতা আমার কাছে সুস্পষ্ট নয় (ভাল, কমপক্ষে তারা আমার কাছে আলাদা মনে করেন)।

আমি মনে করি তত্ত্বটি কমপক্ষে "সহজ" বা "সহজের চেয়ে" সম্পর্কের সংজ্ঞা দেওয়া উচিত।


আমি এখন নিশ্চিত যে আমার কোলমোগোরভ জটিলতা খতিয়ে দেখা উচিত। তবে, আমি যখন প্রশ্ন জিজ্ঞাসা করছিলাম তখন আমার মনে কী ছিল তা আমি ব্যাখ্যা করতে চাই।

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

এখানে আমার জটিলতার ধারণাটি সম্পর্কে আরও ভাল বর্ণনা রয়েছে।

ওলাফ স্পর্নস (2007) জটিলতাস্কলার্পিডিয়া , 2 (10): 1623



4
আপনি বেনিটের যৌক্তিক গভীরতার ধারণাটিতে আগ্রহী হতে পারেন। লি এবং ভিটানির তাদের বইতে কোলমোগোরভ জটিলতায় 7..7 অধ্যায়টি উত্সর্গ করেছে।
মার্টিন শোয়ার্জ

2
@ ইউনিং: আকার না থাকলে "সিম্পলস্ট" বলতে কী বোঝ?
রব

1
@ ইউ নিং: আউটপুট তৈরির সবচেয়ে ক্ষুদ্রতম প্রোগ্রাম হওয়ার চেয়ে কীভাবে, এটি সেরা ন্যূনতম বিবরণ দৈর্ঘ্য সহ টুরিং মেশিন - যাতে 'ক্ষুদ্রতা' এবং 'কাঠামোর' মধ্যে ভারসাম্য থাকে?
রস স্নাইডার

3
আমি মনে করি প্রশ্নটি কিছুটা খারাপ-সংজ্ঞায়িত। এছাড়াও মনে রাখবেন যে অ্যালগোরিদমগুলি খুব সহজ, তবে এটি সঠিক যে তা প্রমাণ করা কঠিন। এবং এমন অ্যালগরিদম রয়েছে যা সহজ এবং পরিষ্কারভাবে সঠিক, তবে তারা দ্রুত কিনা তা প্রমাণ করা শক্ত।
Jukka Suomela

উত্তর:


16

এই সমস্যাটি অ্যালগরিদমিক তথ্য থিয়োরিতে অধ্যয়ন করা হয়। আপনি যা সংজ্ঞা দিচ্ছেন তাকে কলমোগোরভ-চেইটিন জটিলতা বলা হয়।

http://en.wikipedia.org/wiki/Kolmogorov_complexity

এবং দেখে মনে হচ্ছে যে সরলতার যে ধারণাটি আপনি প্রয়োজন তা জটিলতার পরিমাপের ধারণার মাধ্যমে আনুষ্ঠানিকভাবে তৈরি করা যেতে পারে, যা ব্লামের অক্ষরেখার দ্বারা আনুষ্ঠানিক is

http://en.wikipedia.org/wiki/Blum_axioms

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

বার্গিন ১৯৯০- সাধারণীকৃত কলমোগোরভ জটিলতা এবং অন্যান্য দ্বৈত জটিলতা সাইবারনেটিক্স এবং সিস্টেম বিশ্লেষণ খণ্ড ২,, সংখ্যা ৪, ৪৮১-৪৯০ পরিমাপ করে


@ যুক্কা সুমেলা যেমন বলেছে, প্রশ্নটি কিছুটা সংজ্ঞায়িত। এইভাবে আমি অবাক হয়েছি যে আমি খুব কমই প্রশ্নের উত্তর পেতে পারি। তবে, যেহেতু এই উত্তরটি বেশ তথ্যবহুল, এবং প্রশ্নের একটি গুরুত্বপূর্ণ অংশকে আঘাত করে, তাই আমি এখনও উত্তর হিসাবে এটি ট্যাগ করি।
ইউনিং

যাইহোক, আপনি কি আমাকে বিষয়টি প্রয়োগের দিকে আরও নির্দেশ করতে পারেন, বিশেষত যদি কারওর মধ্যে একটি প্রোগ্রামের আনুষ্ঠানিক স্পেসিফিকেশন থাকে, তবে সে স্পেসিফিকেশন থেকে সবচেয়ে ছোট আকারটি আবিষ্কার করতে পারে?
ইউনিং

1

প্রথম প্রশ্নের উত্তর হ্যাঁ একটি তত্ত্ব আছে, এটি অ্যালগরিদমিক তথ্য তত্ত্ব এবং এগুলিকে এলিগেন্ট প্রোগ্রামস (গ্রেগরি চেইটিন দ্বারা) বলা হয়।

দ্বিতীয় প্রোগ্রামটির জন্য "প্রোগ্রামটি কি আমি সবচেয়ে সহজ পাই"?

এর কোনও উত্তর নেই , কারণ এটি একটি আপত্তিজনক প্রশ্ন, এটি প্রমাণ করা উপযুক্ত নয় যে কোনও প্রোগ্রাম একটি এলিগেন্ট প্রোগ্রাম।

আমি মার্জিত প্রোগ্রাম সম্পর্কে উল্লেখ যোগ করার জন্য একটি উত্তর রেখেছি ।


-1

একটি সাধারণ কোড কী এবং কোনটি নয় তা সিদ্ধান্ত নেওয়ার জন্য বিভিন্ন ধরণের পন্থা রয়েছে।

তবে দুঃখের বিষয়, এটি নির্ধারণের জন্য কোনও স্বয়ংক্রিয় উপায় নেই, উদাহরণস্বরূপ, কলমোগোরভ জটিলতা পুনরাবৃত্ত ফাংশনগুলির সাথে ব্যর্থ হয়, কিছু পুনরাবৃত্ত ফাংশন (যৌক্তিক গভীর) সহজ তবে এটি সম্পর্কে বোঝা এত সহজ নয়।

আমার অভিজ্ঞতায়, আমাদের টিম একটি সিস্টেমে কাজ করছিল এবং আমরা ওরাকলে একটি "সাধারণ" পদ্ধতি পেয়েছি (50 টি লাইনের বেশি নয়) ... এবং আমরা এটি বোঝার চেষ্টা করেছি, পুরো 2 মাস (এবং বেশ কয়েকটি সভা) পুরোপুরি বুঝতে জন্য সময় লেগেছিল এটি কোডের জটিলতায় নয় বরং প্রতিটি পরিবর্তনকের পিছনে যুক্তিতে রয়েছে the

আমি মনে করি যে কোডটি কতটা সহজ তা নির্ধারণের উপায়: "একটি কোড পড়ুন এবং এটি বোঝার জন্য ব্যবহৃত সময় বিবেচনা করুন" "

সুতরাং "কোন সমস্যা সমাধানের সহজতম প্রোগ্রাম?" এর মধ্যে ভাগ করা যায়:

ক) কোডটির সরলতা (স্পষ্ট কোড) তবে এটি খুব সাবজেক্টিভ।

খ) ফাংশনের অত্যধিক জটিলতা, যদি আমার এক্স সমস্যা হয় তবে এটি সমাধানের জন্য আমাকে অবশ্যই ডিএক্স (ডেল্টা এক্স) টাস্কটি সমাধান করতে হবে, যেখানে ডিএক্সের এক্সের দিকে ঝোঁক থাকতে হবে

উদাহরণস্বরূপ, যদি আমার সমস্যাটি "একটিকে" "একটি আপেল ছোলার জন্য" হয় এবং আমি অবশ্যই পিএইচপি (এবং ভাষা) এ এটি করতে পারি

যদি আমি অত্যন্ত ভাগ্যবান এবং পিএইচপি-র ফাংশন_পিয়েল_ অ্যাপল থাকে () তবে এটি এখন পর্যন্ত সবচেয়ে সহজ কোড এক্স = 1 ডিএক্স = 1, কেবলমাত্র ফাংশনটি কল করুন এবং এটিই!

বিপরীতে, আমি যদি ভাগ্যবান না হয়ে তবে ফাংশন ফাংশন_পিল () এবং ফাংশন_জেট_ অ্যাপল () উপস্থিত থাকি তবে এক্স = 1 (একটি সমস্যা) এবং ডিএক্স = 2 (দুটি টাস্ক)।

যদি, সবচেয়ে খারাপ ক্ষেত্রে, কোনও ফাংশন উপস্থিত না থাকে, তবে আমাকে নিজের দ্বারা একটি (বা একের বেশি) তৈরি করতে হবে এবং সমস্যা সমাধানের আগে এটি বেশ কয়েকটি কাজ যোগ করতে পারে, এখন এটি একটি জটিল প্রোগ্রাম।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.