একটি অ্যালগরিদম কতটুকু সময় জটিলতার একটি নির্বিচার ইনপুট প্রোগ্রামের পূর্বাভাস দিতে পারে?


23

স্থগিত সমস্যা যে এটা অসম্ভব একটি প্রোগ্রাম যে যদি অন্য প্রোগ্রাম স্থগিত নির্ধারণ করতে পারেন, জন্য লিখতে সম্ভাব্য সব ইনপুট প্রোগ্রাম

আমি তবে অবশ্যই একটি প্রোগ্রাম লিখতে পারি যা লাইক প্রোগ্রামের চলমান সময় গণনা করতে পারে:

for(i=0; i<N; i++)
    { x = 1; }

এবং সময় জটিলতাটি এটি কখনও চালনা না করে ফিরিয়ে দিন।N

অন্যান্য সমস্ত ইনপুট প্রোগ্রামগুলির জন্য, এটি এমন পতাকা প্রত্যাবর্তন করবে যা নির্দেশ করে যে এটি সময়-জটিলতা নির্ধারণ করতে অক্ষম।

আমার প্রশ্নটি হ'ল:

কোন শর্তাবলী অবশ্যই ধরে রাখতে হবে, যেমন আমরা কোনও প্রদত্ত প্রোগ্রামের সময়-জটিলতাটি আলগোরিদিমভাবে নির্ধারণ করতে পারি?

* যদি এখানে কোনও প্রৌon় রেফারেন্স বা পর্যালোচনা নিবন্ধ থাকে তবে আমি মন্তব্যগুলিতে এর একটি লিঙ্কের প্রশংসা করব।


1
(1) "ও-স্বরলিপি" এর অর্থ "সময়ের জটিলতা" নয় ( (৩) প্রদত্ত প্রোগ্রামটি থেমে আছে কিনা তা স্থির করা এবং প্রোগ্রামের সময় জটিলতার উপর একটি স্পষ্টভাবে উপরের আবদ্ধ দেওয়া আলাদা is
Tsuyoshi Ito

1
আমি সীমাবদ্ধ শ্রেণিতে প্রোগ্রামগুলির অনুমানের সময় জটিলতার সাথে পরিচিত নই, তবে এক শ্রেণির প্রোগ্রাম যা পরীক্ষা করার জন্য উপযুক্ত হতে পারে তাকে "সীমাবদ্ধ লুপ প্রোগ্রাম" বলা হয়, যার জন্য সময়ের জটিলতা বেঁধে রাখা সহজ। আমি মনে করি যে সীমাবদ্ধ লুপ প্রোগ্রামগুলি দুটি প্রোগ্রামের সমতুল্যতা নির্ধারণের প্রসঙ্গে উয়ে শ্যনিং এবং রেন্ডাল জে প্রিউম দ্বারা তাত্ত্বিক কম্পিউটার বিজ্ঞানের রত্নের তৃতীয় অধ্যায়ে আলোচনা করা হয়েছে , তবে অধ্যায়টি আপনার প্রশ্নের সাথে কতটা প্রাসঙ্গিক তা আমি নিশ্চিত নই।
Tsuyoshi Ito

4
আমি একটু বিভ্রান্ত কীভাবে এটি সুযোগের বাইরে? ওপি-র প্রশ্নের একটি যুক্তিসঙ্গত উত্তর হ'ল ভাষার টুকরা (বা এমনকি টুকরো টুকরো ক্লাস) যার জন্য চলমান সময়টি অ্যালগরিদমিকভাবে নির্ধারণ করা যেতে পারে।
সুরেশ ভেঙ্কট


7
আমি এই মন্তব্য থ্রেড থেকে ভয়ানক দেরী। আমরা মনে করি যে কোনও মুহুর্তে কোনও পোস্টে নবজাতক-ইস্রা গন্ধ পাচ্ছে। আমি আঙুল দেখছি না। আমি এই প্রবৃত্তিটি নিজেকে অনুভব করি। হতে পারে আমাদের মৃদু হওয়া উচিত। ওপি অঞ্চল বা শর্তগুলির সাথে পরিচিত না হওয়ার স্বীকার করেছে। প্রশ্ন-উত্তর সাইটের মূল বিষয় কী যদি আমরা কেবল সেই লোকদের সহ্য করি যাঁরা ঠিক কী চান তা জানেন এবং আমাদের ভাষায় এটি জিজ্ঞাসা করুন।
বিজয় ডি

উত্তর:


23

TpT

input: n
run T for n steps
if T is in halting state, output: 0
otherwise, loop for n^2 steps and output: 0

pT

তবে প্রোগ্রাম জটিলতার কার্যকর গণনা নিয়ে অনেক কাজ করা হয়েছে carried আমার অন্তর্নিহিত জটিলতা থিয়োরির বিশেষ স্নেহ আছে যা বিশেষ ভাষায় বা টাইপ করে শৃঙ্খলা ব্যবহার করে এমন একটি ভাষা তৈরি করতে পারে যা নির্দিষ্ট সুনির্দিষ্ট সংজ্ঞাবদ্ধ শ্রেণিতে বাস করে programs আমি যে কোনও অলৌকিক বিষয় বলে মনে করি, সেই ভাষাগুলি এই শ্রেণীর জন্য প্রায়শই সম্পূর্ণ হয়!

একটি বিশেষ উদাহরণ জে.ওয়াই দ্বারা এই কাগজে বর্ণনা করা হয়েছে। মেরিয়ন, যা একটি ক্ষুদ্র অত্যাবশ্যক ভাষার বর্ণনা করে, তথ্য প্রবাহ এবং সুরক্ষা বিশ্লেষণ কৌশল থেকে অনুপ্রাণিত এক ধরণের শৃঙ্খলা দিয়ে, যা পি-তে অ্যালগোরিদমের বৈশিষ্ট্য নির্ধারণ করে ।


পার্শ্ব নোট হিসাবে, এপিগ্রামও দেখুন, এটি এমন একটি ভাষা যা সমাপ্তির গ্যারান্টি দিতে পারে।
রিয়েলজ স্লাও

এটি একটি দুর্দান্ত শুরু, তবে আরও কিছু বলার আছে? (উদাহরণস্বরূপ, এটি আমার কাছে মনে হয়েছে যে প্রদত্ত প্রাথমিক পুনরাবৃত্ত ফাংশনটির রানটাইম গণনা করার জন্য অবশ্যই সহজবোধ্য হওয়া উচিত, তবুও এই জাতীয় ফাংশনগুলি সূচকীয় শ্রেণিবিন্যাসের যে কোনও সমস্যার সমাধান করতে পারে ....)
usul

ইনফো যেমন এটি নির্ধারণ করা সম্ভব যে ইনপুট প্রোগ্রামটি একটি সীমাবদ্ধ ভাষায় লেখা হয়েছে, আপনি ধরে নিতে পারেন যে ভাষা জটিলতার যে কোনও উচ্চতর আবদ্ধ দ্বারা আবদ্ধ time তবে, অনেক আদিম পুনরাবৃত্ত ফাংশনগুলির সাধারণ পুনরাবৃত্তির সমতুল্য রয়েছে যা আরও কার্যকর
ক্রিস প্রেসে

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

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

11

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

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

দ্বিতীয় পদ্ধতির মধ্যে রয়েছে এমন একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ ডিজাইন করা যা নির্দিষ্ট সীমাবদ্ধ জটিলতার প্রোগ্রামগুলিকেই স্বীকার করে। এটি অন্তর্নিহিত গণনা জটিলতার ক্ষেত্র

উভয় অঞ্চলের জন্য কিছু রেফারেন্স অনুসরণ করে।

  1. স্পিড প্রকল্প , প্রোগ্রাম বিশ্লেষণ কাজের একটি নির্দিষ্ট লাইন যা একবার প্রোগ্রামে প্রবেশের সময় কাউন্টারগুলিতে সীমানা কীভাবে সন্ধান করতে পারে তার উপর দৃষ্টি নিবদ্ধ করে। কাউন্টারগুলি সময় বা স্থান ব্যবহারের পরিমাপ করতে পারে।
  2. মাল্টিভিয়ারেট এমোরিটাইজড রিসোর্স বিশ্লেষণ , জান হফম্যান, ক্লাউস এহলিগ, মার্টিন হফম্যান, এসিএম টপলাস ২০১২
  3. আমির বেন আমরাম, ইমপ্লিটিভ কমপিটেশনাল কমপ্লিটেশন ২০১০-এর বিকাশমূলক কর্মসূচির ডিক্সেটেবল গ্রোথ-রেট প্রোপার্টি-তে On
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.