কোন ভাষা টিউরিং-সম্পূর্ণ করে তোলে?


79

ভাষার বৈশিষ্ট্য / কাঠামোর ন্যূনতম সেট কী এটি এটিকে টুরিং-সম্পূর্ণ করে তুলেছে?


21
এটি কেবল গুগল করা ভাল না? en.wikipedia.org/wiki/Turing_completeness
aml90

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

3
@ অ্যালান্টনি: ঠিক পাদটীকা হিসাবে
ববি

কম্পিউটার-বিজ্ঞানের দৃষ্টিভঙ্গির জন্য এখানে দেখুন
রাফেল

উত্তর:


73

একটি টুরিং তরপিট হ'ল একধরনের গৌরবময় প্রোগ্রামিং ল্যাঙ্গুয়েজ যা সম্ভব হিসাবে কয়েকটি উপাদান ব্যবহার করে টুরিং-সম্পূর্ণ হওয়ার চেষ্টা করে। ব্রেইনফাক সম্ভবত সর্বাধিক পরিচিত তরপিট, তবে অনেকগুলি রয়েছে।

  • ফোঁটা এবং Jot দুই এবং তিন প্রতীক, যথাক্রমে, উপর ভিত্তি করে সঙ্গে কার্মিক ভাষা এস কে (ই) combinator ক্যালকুলাস

  • ওআইএসসি ( এক নির্দেশ সেট কম্পিউটার ) এমন এক প্রকার বাধ্যতামূলক গণনা বোঝায় যা সাধারণত এক বা একাধিক যুক্তির এক নির্দেশ প্রয়োজন, সাধারণত "শূন্যের চেয়ে কম বা সমান হলে বিয়োগ ও শাখা", বা "বিপরীত বিয়োগ এবং .ণ নেওয়া হলে এড়িয়ে যান"। X86 এমএমইউ পূর্ব নির্দেশটি কার্যকর করে এবং তাই টুরিং-সম্পূর্ণ।

সাধারণত, একটি অত্যাবশ্যক ভাষা টিউরিং-সম্পূর্ণ হওয়ার জন্য, এটির প্রয়োজন:

  1. শর্তসাপেক্ষ পুনরাবৃত্তি বা শর্তাধীন জাম্পের একটি ফর্ম (যেমন while,, if+ goto)

  2. কিছু ফর্ম স্টোরেজ পড়ার এবং লেখার একটি উপায় (যেমন, ভেরিয়েবল, টেপ)

জন্য ল্যামডা-ক্যালকুলাস কার্মিক ভাষা ভিত্তিক হতে টিসি, এটা দরকার:

  1. আর্গুমেন্টের মাধ্যমে বিমূর্ত ফাংশনগুলির ক্ষমতা (যেমন, ল্যাম্বদা বিমূর্তি, উদ্ধৃতি)

  2. যুক্তিগুলিতে ফাংশন প্রয়োগ করার ক্ষমতা (যেমন হ্রাস)

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

কঠোরভাবে বলতে গেলে, টুরিং-সম্পূর্ণতার জন্য I / O প্রয়োজন হয় না; টিসি কেবলমাত্র দাবি করে যে কোনও ভাষা আপনার পছন্দসই ফাংশনটি গণনা করতে পারে, এটি আপনাকে ফলাফলটি প্রদর্শন করতে পারে না। অনুশীলনে, প্রতিটি দরকারী ভাষার একরকম বিশ্বের সাথে যোগাযোগের একটি উপায় রয়েছে।


অপরিহার্য ভাষার জন্য, সহজ ভেরিয়েবলগুলি কি যথেষ্ট? আমি এই ধারণায় ছিলাম যে কোনও ধরণের সংগ্রহ (যেমন অ্যারে বা লিঙ্কযুক্ত তালিকাগুলি) প্রয়োজনীয় হবে।
লুস্কুবাল

1
@ লুইস্কুবাল আপনাকে একটি স্বেচ্ছাচারিত পরিমাণের ডেটা নির্দিষ্ট করতে সক্ষম হতে হবে। সাধারণ ভেরিয়েবলের সাহায্যে আপনি ভেরিয়েবলগুলি যে পরিমাণ ডেটা উপস্থাপন করতে পারেন। আপনার যদি N + 1 টি বিভিন্ন টুকরো ডেটা উপস্থাপন করতে হয় তবে কী হবে। কেউ তর্ক করতে পারে যে ফ্র্যাক্ট্রান নাটকের মতো কৌশলগুলি দিয়ে আপনি এটি এমনকি সাধারণ ভেরিয়েবলগুলিতেও করতে পারেন ... তবে আপনি যা জিজ্ঞাসা করছেন এটি তেমন নয়।

এটি কি প্রয়োজন নয় যে ভাষা অবশ্যই এন্ডলেস লুপগুলিকে সমর্থন করবে ?
সার্জিওল

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

15

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

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


11
হ্যাঁ, এটি অবশ্যই এটির কাছে যাওয়ার সবচেয়ে ব্যবহারিক উপায়। </sarcasm>
রবার্ট হারভে

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

7
@ রবার্ট হার্ভে: কেন নয়? অবশ্যই তাদের নিজস্ব ভাষা ডিজাইনকারী কেউ এটিতে একটি বিএফ সংকলক লিখতে সক্ষম হবেন (যদি এটি অপরিহার্য হয়, এবং অন্যথায় উপযুক্ত অন্যান্য ভাষা খুঁজে পান)।
আন্তন গোলভ

5
@ ডেলানান: তবে আপনাকে প্রমাণ করতে হবে যে আপনার বিএফ ইন্টারফেসটার সঠিকভাবে বিএফ স্পেসিফিকেশন প্রয়োগ করে, IOW আপনাকে প্রমাণ করতে হবে যে আপনার বিএফ ইন্টারফেসার আসলে কোনও বিএফ-অনুবাদক এবং কোনও বিএফ-এর মতো ভাষার অনুবাদক নয় টিউরিং-সম্পূর্ণ হতে পারে বা নাও হতে পারে।
Jörg ডব্লু মিট্টাগ

2
@ দারেকনিডজা, টুরিংয়ের সম্পূর্ণতা কীভাবে সংজ্ঞায়িত করা হয়েছে তার এটি একটি প্রাকৃতিক পরিণতি; কোনও ট্যুরিং সম্পূর্ণ ভাষার কোনও বর্ধন এখনও টিউরিং সম্পূর্ণ lete
আন্তন গোলভ 14

8

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

কোনও কিছু টুরিং সম্পূর্ণ হয়েছে কিনা তা পরীক্ষা করে দেখুন, আপনি এর ভিতরে কোনও টুরিং মেশিন প্রয়োগ করতে পারেন কিনা তা দেখুন। অন্য কথায়, এটি নিম্নলিখিত অনুকরণ করতে পারে কিনা তা পরীক্ষা করে দেখুন:

  1. "ভেরিয়েবল" (বা স্বেচ্ছাসেবী ডেটা) পড়ার এবং লেখার ক্ষমতা : অনেক বেশি স্ব ব্যাখ্যাযোগ্য।
  2. পঠন / লিখনের শীর্ষকে সরাতে অনুকরণ করার ক্ষমতা : ভেরিয়েবলগুলি পুনরুদ্ধার এবং সঞ্চয় করতে সক্ষম হওয়ার পক্ষে এটি যথেষ্ট নয়। অন্যান্য ভেরিয়েবলগুলি রেফারেন্স করার জন্য টেপের মাথাটি সরিয়ে নেওয়ার ক্ষমতা অনুকরণ করাও আবশ্যক। এটি প্রায়শই অ্যারে ডেটা স্ট্রাকচার (বা সমতুল্য) ব্যবহারের সাথে বা মেশিন কোডের মতো নির্দিষ্ট ভাষার ক্ষেত্রে "পয়েন্টার" (বা সমতুল্য) ব্যবহারের মাধ্যমে অন্যান্য ভেরিয়েবলগুলিকে রেফারেন্স করার ক্ষমতা সহ প্রোগ্রামিং ভাষায় অনুকরণ করা যায়।
  3. একটি সসীম রাষ্ট্র মেশিন অনুকরণ করার ক্ষমতা : প্রায়শই উল্লেখ করা না হলেও, টুরিং মেশিনগুলি আসলে এআই বিকাশের মধ্যে ব্যবহৃত সসীম রাষ্ট্রের মেশিনগুলির একটি ভিন্নতা। অ্যালান টুরিং বলেছিলেন যে রাজ্যগুলির উদ্দেশ্য হ'ল একজন ব্যক্তির "বিভিন্ন সমস্যার সমাধানের বিভিন্ন পদ্ধতি" অনুকরণ করা।
  4. একটি "থাম" রাষ্ট্র : যদিও এটি প্রায়শই উল্লিখিত হয়েছে যে টিউরিং সম্পূর্ণ বলে গণ্য করার জন্য নিয়মের একটি সেট নিজেই পুনরাবৃত্তি করতে সক্ষম হবে, এটি একটি ভাল মাপকাঠি নয় যেহেতু একটি অ্যালগরিদম রাষ্ট্রীয় অ্যালগরিদমকে সর্বদা অবশ্যই আনুষ্ঠানিক সংজ্ঞা হিসাবে রাখতে হবে অবশেষে উপসংহার। যদি তারা কোনও উপায়ে সিদ্ধান্ত নিতে না পারে, হয় এটি টুরিং সম্পূর্ণ নয়, বা বলেছে অ্যালগরিদম কোনও গণনীয় কার্য নয়। প্রযুক্তিগতভাবে তারা যেভাবে কাজ করে (যেমন গেম কনসোলগুলির মতো, উদাহরণস্বরূপ) কিছু ফ্যাশনে একটি স্থবির অবস্থাকে "সিমুলেট" করতে সক্ষম হয়ে এই সীমাবদ্ধতার কাছাকাছি পৌঁছানোর কারণে প্রযুক্তিগতভাবে শেষ করতে পারে না তা শেখানো। "থামানো সমস্যা" দিয়ে বিভ্রান্ত হওয়ার দরকার নেই, এটি একটি অনিশ্চিত ফাংশন যা এটি প্রমাণ করে '

এগুলি হ'ল ট্যুরিং সম্পূর্ণ হিসাবে বিবেচিত হওয়ার কোনও সিস্টেমের জন্য ন্যূনতম প্রয়োজনীয়তা। বেশিও না কমও না. যদি এটি কোনও ফ্যাশনে এর কোনওটি অনুকরণ করতে না পারে তবে এটি টুরিং সম্পূর্ণ নয়। অন্যান্য লোকেদের প্রস্তাবিত পদ্ধতিগুলি কেবলমাত্র শেষ হওয়ার উপায় হিসাবে রয়েছে কারণ বেশ কয়েকটি টুরিং সম্পূর্ণ সিস্টেম রয়েছে যাতে এই বৈশিষ্ট্যগুলি নেই।

মনে রাখবেন যে সত্যিকারের টুরিংয়ের সম্পূর্ণ ব্যবস্থা গড়ে তোলার কোনও উপায় নেই। এটি কারণ প্রকৃতপক্ষে শারীরিক স্থানের মধ্যে টুরিং মেশিনের টেপের সীমাহীনতা অনুকরণ করার কোনও জ্ঞাত উপায় নেই।


4

আপনি যদি এর সাথে কোনও গণনা করতে পারেন তবে একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ সম্পূর্ণ টুরিং করে। বৈশিষ্ট্যগুলির একটি মাত্র সেট নেই যা একটি ভাষা টিউরিংকে সম্পূর্ণ করে তোলে তাই উত্তর দেয় যে আপনার লুপের প্রয়োজন বা আপনার ভেরিয়েবলগুলি দরকার কারণ ভুল রয়েছে কারণ ভাষা আছে যা দুটি না থাকলেও সম্পূর্ণ টিউরিং রয়েছে।

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

সময় জটিলতা, স্পেস জটিলতা, সহজ ইনপুট / আউটপুট ফর্ম্যাট এবং কোনও প্রোগ্রাম লেখার সহজ সমীকরণের অন্তর্ভুক্ত নয় সুতরাং এই জাতীয় মেশিন তাত্ত্বিকভাবে সমস্ত গণনা করতে পারে যদি গণনাটি বিদ্যুৎ হ্রাস বা পৃথিবী সূর্যের দ্বারা গ্রাস করা না থামায়।

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

একটি সফল ভাষা তৈরি করার জন্য এটি সম্পূর্ণরূপে টুরিংয়ের চেয়ে বেশি প্রয়োজন এবং এমনকি ট্যারিপিটকে ট্যুর করার জন্য এটি সত্য। আমার মনে হয় না এবং ছাড়াই ব্রেইনফাক জনপ্রিয় হত ।,.


2
"যদি আপনি এর সাথে কোনও গণনা করতে পারেন তবে একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ সম্পূর্ণ ট্যুরিজিং হয়" " এটি চার্চ-টিউরিং থিসিস, কোনও ভাষাকে টুরিং-সম্পূর্ণ করে তোলে না।
রাইময়েড

@ রাইময়েড তাই আপনি বোঝাতে চাইছেন যে কোনও অনুবাদক না করতে পারলে কিছুই টুরিং সম্পূর্ণ হয় না? অর্থাৎ। ল্যাম্বডা ক্যালকুলাস সম্পূর্ণরূপে টুরিং হয় না এমনকি যদি এটি সমান হয়?
সিলেস্টার 20'14

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

যাইহোক, আমি 'টিউরিং-সম্পূর্ণ'টিকে ইউনিভার্সাল ট্যুরিং মেশিনের সমতুল্য হিসাবে রূপান্তর হিসাবে ব্যাখ্যা করি (ইউটিএম; যার ফলে, কোনও টুরিং মেশিনকে সিমুলেট করতে সক্ষম - তাই' সর্বজনীন ')। ১৯৩36 সাল থেকে টুরিংয়ের কাগজে যেখানে তিনি তার মেশিনগুলি প্রবর্তন করেছিলেন, তিনি একটি ইউটিএম ধারণাটি সংজ্ঞায়িত করেছিলেন এবং একটি প্রমাণের স্কেচ দিয়েছিলেন যে ইউটিএমগুলি চার্চের ল্যাম্বডা ক্যালকুলাসের সমতুল্য। এটি করে তিনি প্রমাণ করলেন যে তাদেরও একই গণনা শক্তি ছিল। চার্চ-টিউরিং থিসিসটি দৃ simply়ভাবে বলেছে যে, "এটিই সমস্ত গণনার শক্তি আপনি পাবেন"।
রাইময়েড

উইকিপিডিয়ায় টুরিং সম্পূর্ণতার জন্য এটির দুটি আনুষ্ঠানিক সংজ্ঞা রয়েছে । একটিতে I / O প্রয়োজন অন্য একজনের দরকার নেই। যেটি বলে না যে কোনও মেশিন প্রতিটি টুরিং-কম্পিউটেবল ফাংশন গণনা করতে পারলে সম্পূর্ণ টুরিং হয়। এটি ল্যাম্বডা ক্যালকুলাসটিকে টিউরিং সম্পূর্ণ হওয়ার দিকে ফিরিয়ে দেয় কারণ আপনি সহজেই ল্যাম্বডা ক্যালকুলাসে একটি সমতুল্য প্রোগ্রাম তৈরি করতে পারেন যা কোনও টুরিং মেশিন প্রোগ্রামের মতোই গণনা করে।
সিলেস্টার

4

এটি অসীমভাবে লুপ করবেন বা বন্ধ হবে কিনা তা আপনি বলতে পারবেন না।

-------------

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

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

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

টিউরিং সম্পূর্ণ সিস্টেমগুলি অন্য কোনও টিউরিং সম্পূর্ণ সিস্টেমকে অনুকরণ করতে পারে, সুতরাং আপনি যদি আপনার সিস্টেমে কিছু সুপরিচিত টুরিং সম্পূর্ণ সিস্টেমের জন্য একটি এমুলেটর তৈরি করতে পারেন তবে এটি প্রমাণ করে যে আপনার সিস্টেমটিও টুরিং সম্পূর্ণ।

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


1
আমি এই যুক্তিটি কিনছি না। কেবল ট্যুরিং মেশিনের জন্য থামার সমস্যাটি অনস্বীকার্য বলে সরাসরি বোঝানো হয় না যে প্রতিটি স্বরলিপি আপনাকে কোনও প্রোগ্রাম নির্দিষ্ট করতে দেয় যার জন্য থামার সমস্যাটি অনির্বাণযোগ্য টুরিং সম্পূর্ণ। কেবল বিপরীতটি স্পষ্টতই সত্য: যদি স্বরলিপিটি টুরিংয়ের কাজটি সম্পূর্ণ হয় তবে অবশ্যই এমন প্রোগ্রামগুলি লেখা সম্ভব যার জন্য থামার সমস্যাটি অনস্বীকার্য।
5gon12eder

এটি একটি প্রয়োজনীয় শর্ত। আপনি যদি প্রতিটি প্রোগ্রামের জন্য এটি স্থগিত করে কিনা তা স্থির করতে পারেন তবে ভাষা টিউরিং সম্পূর্ণ নয়।
gnasher729

4

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

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

অন্যদিকে, প্রতিটি পুনরাবৃত্তি গণনা এবং প্রতিটি পুনরাবৃত্তির গভীরতার সাথে গণনা করা, কেবল কোনও প্রোগ্রাম থামবে কি না তা স্থির করা যায় না, তবে এটি বন্ধ হয়ে যায়।


-1

আমি জানি এটি আনুষ্ঠানিকভাবে সঠিক উত্তর নয়, তবে একবার আপনি 'টিউরিং-সম্পূর্ণ' এর বাইরে 'ন্যূনতম' নিয়ে যান এবং এটি যেখানে ব্যবহার করেন সেখানে 'ব্যবহারিক' ফিরিয়ে রাখলে আপনি একটি গুরুত্বপূর্ণ প্রোগ্রাম যা কোনও প্রোগ্রামিং ভাষার সাথে আলাদা করতে পারেন তা দেখতে পাবেন মার্কআপ ল্যাঙ্গুয়েজ হয়

  • ভেরিয়েবল
  • শর্তসাপেক্ষ (যদি / তারপর ...)
  • লুপেজ (লুপ / ​​ব্রেক, যখন ...)

পরের দিন

  • নামবিহীন এবং নামযুক্ত ফাংশন

এই দাবিগুলি পরীক্ষা করতে, একটি মার্কআপ ভাষা দিয়ে শুরু করুন, বলুন, এইচটিএমএল। আমরা কেবলমাত্র ভেরিয়েবলগুলির সাথে একটি এইচটিএমএল + উদ্ভাবন করতে পারি, বা কেবল শর্তসাপেক্ষে (এমএস শর্তাধীন মন্তব্য সহ এটি করেছিলেন), বা কোনও ধরণের লুপ তৈরি করেছিলেন (যা শর্তসাপের অনুপস্থিতিতে সম্ভবত এর মতো কিছু হতে পারে <repeat n='4'>...</repeat>)। এর মধ্যে যে কোনওটি করার ফলে এইচটিএমএলকে প্লেইন এইচটিএমএল থেকে উল্লেখযোগ্যভাবে (?) আরও শক্তিশালী করা হবে, তবে এটি প্রোগ্রামিং ভাষার চেয়ে আরও বেশি মার্কআপ হতে পারে; প্রতিটি নতুন বৈশিষ্ট্য সহ, আপনি এটিকে একটি ঘোষণামূলক কম এবং একটি অত্যাবশ্যক ভাষা কম করেন।

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

তারপরে আবার, আমি কখনই আমার সিএস শেষ করিনি।


2
আপনি যদি নিশ্চিত না হন তবে আপনার প্রথমে এটি গবেষণা করা উচিত। fractran হয় টুরিং সম্পূর্ণ হিসাবে, brainf * CK । আরও মনে রাখবেন যে এইচটিএমএল 5 + সিএসএস 3 টিউরিং সম্পূর্ণ কারণ এটি 110 টি বিধি কার্যকর করতে পারে ।

1
আমি জানি তবে প্রদত্ত সমস্ত উদাহরণ কমবেশি রহস্যজনক (সম্ভবত আকর্ষণীয় বা আশ্চর্যজনক হলেও), আমার উত্তরটি একটি বাস্তববাদী ছিল, এবং সম্ভবত খুব কমও নয়। আমি মনে করি যে এটি উল্লেখ করা গুরুত্বপূর্ণ। গুগলে টুরিং-সম্পূর্ণতার অনুসন্ধান করার সময় এই পৃষ্ঠাটি # 1 ছিল, উত্তরগুলি এখানে খুব কম ব্যবহারের IMHO রয়েছে, বলুন, এমন একটি n00bie যিনি পিএইচপি বা পাইথন থেকে এইচটিএমএলকে আলাদা করে জানতে চান wants মানে, ব্রেইনফ সি কে বিনা কারণে brainf ck বলা হয় না
প্রবাহ 22
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.