নিয়মিত ভাষা কি টুরিং সম্পূর্ণ হতে পারে?


32

আমি আইওটা এবং জোট সম্পর্কে পড়ছিলাম এবং এই বিভাগটি বিভ্রান্তিকর অবস্থায় পেয়েছি:

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

আমার বোধগম্যতা হল যে আইওটা এবং জোট উভয়ই ট্যুরিং সম্পূর্ণ। তবে স্পষ্টতই, একটি প্রসঙ্গ-মুক্ত, এবং অন্যটি নিয়মিত! অবশ্যই নিয়মিত ভাষা টুরিং সম্পূর্ণ হতে পারে না?


3
নোট করুন যে একটি টিউরিং মেশিন বর্ণনা করে এমন একটি ভাষা নিয়মিত ভাষায় তুচ্ছভাবে লেখা যেতে পারে, উদাহরণস্বরূপ i = {0,1, -1 b, b = input ইনপুটটির শেষ} (i + bi + bi) + বি (i +) বর্ণনা করে নিয়মগুলির একটি খালি খালি সেট অনুসরণ করে একটি খালি খালি ইনপুট। অথবা, পরিবর্তে, আপনি এটির মতো ব্যাখ্যা করতে পারেন যদি আপনার কোনও অনুবাদক থাকে, যা উত্তরগুলির হিসাবে বর্ণিত হয়, ভাষা শ্রেণীর জন্য একটি পৃথক ধারণা।
কিউবিক

1
@ কিউবিক: এই বিষয়টির জন্য, ট্যুরিং মেশিনগুলি এমনভাবে গণনা করা যেতে পারে যে প্রতিটি সংখ্যা হ'ল একটি মেশিনের প্রতিনিধিত্ব করে (যেমন তারা গণনাকারী), এবং এই সংখ্যাগুলি অখণ্ডিত স্বরলিপিতে প্রকাশ করা যেতে পারে। আমি কখনই এই জিনিসটি সঠিকভাবে অধ্যয়ন করি নি, তাই সংজ্ঞাগুলি নিয়ে কাজ করতে হবে, তবে আমি গণনা 1*0একটি নিয়মিত ভাষা ;-) প্রোগ্রামার বা সংকলক-লেখকের পক্ষে খুব বন্ধুত্বপূর্ণ প্রোগ্রামিং ভাষা না হলেও।
স্টিভ জেসোপ

উত্তর:


40

সংক্ষেপে, উত্তর হ্যাঁ।

তবে আপনি "ভাষা" শব্দের দুটি সম্পূর্ণ সম্পর্কহীন অর্থ মেশাচ্ছেন (হ্যাঁ, এটি বিভ্রান্তিকর):

  • স্ট্রিং একটি সেট। "প্রসঙ্গমুক্ত ভাষা" এর অর্থ "স্ট্রিংগুলির একটি সেট যা প্রসঙ্গ-মুক্ত ব্যাকরণ ব্যবহার করে স্বীকৃত হতে পারে"।
  • একটি গণনা নির্দিষ্ট করার একটি উপায়। "টিউরিং-সম্পূর্ণ ভাষা" এর অর্থ "প্রোগ্রামগুলি নির্দিষ্ট করার একটি উপায় যেখানে টুরিং মেশিন নির্দিষ্ট করা যায়"।

নোট করুন যে আপনি "ভাষা" শব্দের দুটি অপ্রাসঙ্গিক অর্থ ব্যবহার করে দুটি সম্পূর্ণ অসম্পৃক্ত দৃষ্টিভঙ্গি থেকে "সি ++ ভাষা" সম্পর্কে কথা বলতে পারেন:

  • সি ++ স্ট্রিংগুলির সেট হিসাবে যা সি ++ ব্যাকরণ অনুযায়ী আইনী
  • প্রোগ্রাম নির্দিষ্টকরণের একটি উপায় হিসাবে সি ++।

এই দুটি দৃষ্টিকোণ থেকে "সি ++ ভাষা" এর বৈশিষ্ট্যগুলি সম্পর্কিত নয়।

আপনাকে এই ধারণাগুলি পৃথক করতে সহায়তা করার জন্য আরও উদাহরণ:

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

3
আমি যুক্ত করব যে (([a-z][0-9]*)*[A-Z][0-9]*([a-z][0-9]*)*->([a-zA-Z][0-9]*)*)*এটি একটি নিয়মিত ভাষা যা ক্লাস 0 এর যে কোনও ভাষার ব্যাকরণ বর্ণনা করতে সক্ষম হয়
এরবুরেথ বলেছেন মনিকা

2
এছাড়াও নোট করুন যে এটি সম্ভব কারণ আমরা যে কোনও টিউরিং মেশিনকে বাইনারি স্ট্রিং হিসাবে এনকোড করেছি এবং এটি নিশ্চিত করতে পারি যে প্রতিটি বাইনারি স্ট্রিং একটি টুরিং মেশিনের প্রতিনিধিত্ব করে। এর স্পষ্টত নিয়মিত ভাষা সুতরাং টুরিং সম্পূর্ণ থেকে সংযুক্ত শব্দার্থবিদ্যা থাকতে পারে। {0,1}*
jmite

10

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

যাইহোক, প্রাসঙ্গিক মুক্ত ভাষাগুলিও (সম্ভবত) এনপি-সম্পূর্ণ নয়, যেহেতু তাদের বহু-কালীন সময় পার্সিং অ্যালগরিদম রয়েছে।


9

আধুনিক প্রোগ্রামিং ভাষার একা সিনট্যাক্স (সিনট্যাক্স ট্রিগুলিতে এনকোড করা আছে) তারা যা করেন তা থেকে অনেক দূরে। প্রকৃতপক্ষে, প্রদত্ত ভাষায় সমস্ত প্রোগ্রামের সেট দ্বারা নির্ধারিত আনুষ্ঠানিক ভাষাগুলি যা ত্রুটি ছাড়াই সংকলন করে খুব কমই প্রসঙ্গ-মুক্ত

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

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


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

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

নোট করুন যে কোনও প্রোগ্রামিং ভাষার সিনট্যাক্সের সরলতা সেই প্রোগ্রামিং ভাষাগুলিতে উল্লিখিত প্রোগ্রামগুলির গণনা শক্তির উপর কোনও বিধিনিষেধ বোঝায় না।


1

উত্তরটি হল হ্যাঁ. আপনি দেখুন, গৃহীত উত্তর হিসাবে বলা হয়েছে, একটি ব্যাকরণ তার অর্থ থেকে স্বতন্ত্র। চমস্কির নিজস্ব কথায়:

আমি মনে করি আমরা এই সিদ্ধান্তে আসতে বাধ্য হই যে একটি ব্যাকরণ স্বায়ত্তশাসিত এবং অর্থ ব্যতীত স্বাধীন ...

চমস্কি, সিনট্যাকটিক স্ট্রাকচার (1956)

যদি কোনও ব্যাকরণ গণনা করা যায় এমন সমস্ত বিষয় বর্ণনা করার জন্য পর্যাপ্ত বাক্য তৈরি করতে পারে তবে আমরা তার বাক্যগুলিতে নির্বিচারে গণনাভিত্তিক অর্থ নির্ধারণ করতে পারি - গণনা করা যায় এমন প্রতিটি জিনিসের জন্য একটি।

আসল কংক্রিটের উদাহরণ হিসাবে, জনপ্রিয় ভাষার whitespaceএকটি নিয়মিত ব্যাকরণ রয়েছে এবং সম্ভবত এটিও x86 assembly languages(যাচাইকরণের প্রয়োজন)।


আমি মনে করি না যে উত্তরণের অর্থ হ'ল গো এর ব্যাকরণটি আনুষ্ঠানিক অর্থে নিয়মিত ভাষা; আমি মনে করি এটির অর্থ কেবল ব্যাকরণটি অনিয়মিত নয় , অর্থাৎ সামঞ্জস্যপূর্ণ নয়। চামস্কি শ্রেণিবিন্যাসে যদি গো এর বাক্য গঠনটি প্রকৃতপক্ষে নিয়মিত ভাষা হত তবে এটি ভারসাম্যহীন, নেস্টেড প্রথম বন্ধনী তৈরি করতে অক্ষম হবে।
tsleyson

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