একটি প্রসঙ্গ ফ্রি ব্যাকরণ কি?


104

কোনও প্রবন্ধমুক্ত ব্যাকরণ কী তা আমাকে বোঝাতে পারেন? উইকিপিডিয়া এন্ট্রি এবং তারপরে আনুষ্ঠানিক ব্যাকরণে উইকিপিডিয়া এন্ট্রি দেখার পরে আমি পুরোপুরি এবং পুরোপুরি বিস্মৃত হই কেউ কি এই বিষয়গুলি ব্যাখ্যা করার জন্য এত দয়াবান হবে?

আমি এটি ভাবছি কারণ আমি পার্সিং তদন্ত করতে চাই এবং পাশাপাশি, একটি রেজেক্স ইঞ্জিনের সীমাবদ্ধতাও তদন্ত করতে চাই।

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


2
এর সাথে আরও সম্পর্কিতAutomata Theorem
রাহুল

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

1
এই জাতীয় প্রশ্নগুলি তাত্ত্বিক কম্পিউটার বিজ্ঞানে স্থানান্তরিত করা উচিত নয়?
ফ্যালি ব্লু ডট

উত্তর:


110

একটি প্রসঙ্গমুক্ত ব্যাকরণ একটি ব্যাকরণ যা নির্দিষ্ট বৈশিষ্ট্যগুলিকে সন্তুষ্ট করে। কম্পিউটার বিজ্ঞানে, ব্যাকরণগুলি ভাষাগুলির বর্ণনা দেয়; বিশেষত, তারা প্রথাগত ভাষা বর্ণনা করে।

একটি আনুষ্ঠানিক ভাষা হ'ল স্ট্রিং (প্রতীকগুলির ক্রম ... "স্ট্রিং" শব্দের প্রোগ্রামিং ব্যবহারের সাথে খুব মিল) কেবলমাত্র একটি সেট (অবজেক্ট সংকলনের জন্য গাণিতিক শব্দ)। আনুষ্ঠানিক ভাষার একটি সাধারণ উদাহরণ হ'ল দৈর্ঘ্যের তিনটি বাইনারি স্ট্রিংয়ের সেট, {000, 001, 010, 011, 100, 101, 110, 111}।

ব্যাকরণ দ্বারা বর্ণিত ভাষায় একটি স্ট্রিং তৈরি করতে আপনি রূপান্তরগুলি সংজ্ঞায়িত করে কাজ করতে পারেন। ব্যাকরণবিদরা বলবেন কীভাবে একটি চিহ্ন প্রতীক (সাধারণত এস) কিছু চিহ্নের স্ট্রিংয়ে রূপান্তর করতে হয় to এর আগে দেওয়া ভাষার ব্যাকরণটি হ'ল:

S -> BBB
B -> 0
B -> 1

এই ব্যাখ্যা করতে বলা হয় যে হয় Sদ্বারা প্রতিস্থাপিত করা যাবে BBB, এবং B0 দ্বারা প্রতিস্থাপিত হতে পারে, এবং Bস্ট্রিং ২010 আমরা কি করতে পারি গঠন করা 1. সুতরাং দ্বারা প্রতিস্থাপিত হতে পারে S -> BBB -> 0BB -> 01B -> 010

একটি প্রসঙ্গ-মুক্ত ব্যাকরণ কেবলমাত্র একটি ব্যাকরণ যেখানে আপনি যে জিনিসটি (তীরের বামে) প্রতিস্থাপন করছেন সেটি একটি একক "নন-টার্মিনাল" প্রতীক। একটি টার্মিনাল প্রতীক হ'ল ব্যাকরণে আপনি ব্যবহার করেন এমন কোনও প্রতীক যা আপনার চূড়ান্ত স্ট্রিংগুলিতে উপস্থিত হতে পারে না। উপরের ব্যাকরণে, "এস" এবং "বি" অ-টার্মিনাল প্রতীক এবং "0" এবং "1" "টার্মিনাল" প্রতীক। ব্যাকরণ পছন্দ

S -> AB
AB -> 1
A -> AA
B -> 0

নিয়মিত নয় যেহেতু এগুলিতে "এবি -> 1" এর মতো বিধি রয়েছে।


12
'নিয়মিত নয়' দ্বারা, আপনার অর্থ 'প্রসঙ্গমুক্ত নয়'? (কারণ সিএফজির দ্বারা প্রতিনিধিত্বযোগ্য ভাষাটি নিয়মিত প্রকাশের দ্বারা উপস্থাপিতদের একটি সুপার সেট)
এন্টি আর্থ

3
"এস কি বি দ্বারা প্রতিস্থাপিত হতে পারে" পড়া "এস বিবিবি দ্বারা প্রতিস্থাপিত করা যেতে পারে"?
কসমো হরিগান

4
শুভ প্রভু, আমি এসও-তে দেখেছি এটির সেরা ব্যাখ্যাগুলির মধ্যে একটি।
রাফায়েল ডায়াস দা সিলভা

1
@ অ্যান্টিআর্থ দ্বিতীয় উদাহরণটি নিয়মিত ব্যাকরণ নয় কারণ এর নিয়ম রয়েছে যা একটি একক নন-টার্মিনাল প্রতীক থেকে দুটি নন-টার্মিনাল প্রতীক তৈরি করে, যা নিয়মিত ব্যাকরণে অনুমোদিত নয় (এছাড়াও, ওপি বলেছে যে, এটিতে একাধিক অবিচ্ছিন্ন চিহ্ন সহ বিধি রয়েছে বাম). en.wikipedia.org/wiki/Regular_grammar
awwsmm

21

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

একটি নিয়মিত প্রকাশ হ'ল নিয়মিত ভাষা বর্ণনা করার উপায় way একটি নিয়মিত ভাষা হ'ল এমন একটি ভাষা যা নির্ধারিত সসীম অটোমেটনের দ্বারা সিদ্ধান্ত নেওয়া যেতে পারে।

আপনার সীমাবদ্ধ স্টেট মেশিনে নিবন্ধটি পড়তে হবে: http://en.wikedia.org/wiki/Finite_state_machine

এবং নিয়মিত ভাষা: http://en.wikedia.org/wiki/Regular_language

সমস্ত নিয়মিত ভাষা কনটেক্সট ফ্রি ল্যাঙ্গুয়েজ তবে কনটেক্সট ফ্রি ল্যাঙ্গুয়েজগুলি নিয়মিত নয়। কনটেক্সট ফ্রি ল্যাঙ্গুয়েজ হ'ল একটি কনটেক্সট ফ্রি ব্যাকরণ বা পুশডাউন অটোমেটা দ্বারা গৃহীত সমস্ত স্ট্রিংয়ের সেট যা একটি একক স্ট্যাক সহ একটি চূড়ান্ত স্টেট মেশিন: http://en.wikedia.org/wiki/Pushdown_automaton#PDA_and_Context- ফ্রি_ ল্যাঙ্গুয়েজস

আরও জটিল ভাষাগুলির জন্য একটি ট্যুরিং মেশিনের প্রয়োজন (যে কোনও সম্ভাব্য প্রোগ্রাম আপনি আপনার কম্পিউটারে লিখতে পারেন) কোনও স্ট্রিং ভাষাতে আছে কিনা তা সিদ্ধান্ত নিতে।

ভাষা তত্ত্ব পি বনাম এনপি সমস্যা এবং কিছু অন্যান্য আকর্ষণীয় স্টাফের সাথেও খুব সম্পর্কিত।

কম্পিউটার বিজ্ঞানের আমার পরিচিতি তৃতীয় বর্ষের পাঠ্যপুস্তকটি এই স্টাফটি ব্যাখ্যা করার ক্ষেত্রে বেশ ভাল ছিল: থিওরি অফ কম্পিউটেশন এর ভূমিকা লিখেছেন মাইকেল সিপসার। তবে, নতুন কিনতে এটির জন্য আমার 160 ডলার খরচ হয়েছে এবং এটি খুব বেশি বড় নয়। হতে পারে আপনি একটি ব্যবহৃত অনুলিপি খুঁজে পেতে পারেন বা একটি লাইব্রেরিতে একটি অনুলিপি বা এটি আপনাকে সহায়তা করতে পারে এমন কিছু খুঁজে পেতে পারেন।

সম্পাদনা করুন:

নিয়মিত এক্সপ্রেশন এবং উচ্চতর ভাষা ক্লাসের সীমাবদ্ধতাগুলি গত ৫০ বছর বা তারও বেশি সময় ধরে গবেষণা হয়েছে ar আপনি নিয়মিত ভাষার জন্য পাম্পিং লেমায় আগ্রহী হতে পারেন। একটি নির্দিষ্ট ভাষা নিয়মিত নয় তা প্রমাণ করার একটি মাধ্যম:

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

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

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

আমি মনে করি যে অংশটি আপনি সবচেয়ে বেশি আগ্রহী তা হ'ল নিয়মিত অভিব্যক্তি কোন ভাষাগুলি সিদ্ধান্ত নিতে পারে এবং কোন ভাষা নিয়মিত নয় তা প্রমাণ করার জন্য পাম্পিং লেম্মা দেখার জন্য সুনির্দিষ্ট রাষ্ট্র মেশিনগুলি (নির্ধারক এবং নির্ধারক উভয়) is

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

কমপক্ষে তিনটি বি রয়েছে এমন অক্ষর a এবং b ব্যবহার করে সমস্ত স্ট্রিংয়ের ভাষা হ'ল নিয়মিত ভাষা: বা বা বা বা

A এবং b বর্ণগুলিতে যেগুলির চেয়ে বেশি বি থাকে সেগুলি ব্যবহার করে সমস্ত স্ট্রিংয়ের ভাষা নিয়মিত নয়।

এছাড়াও আপনার সমস্ত সীমাবদ্ধ ভাষা নিয়মিত হওয়া উচিত নয়, উদাহরণস্বরূপ:

A এবং b অক্ষরের সাথে 50 এর চেয়ে কম বর্ণের সমস্ত স্ট্রিংয়ের ভাষা নিয়মিত, যেহেতু এটি সীমাবদ্ধ আমরা জানি আমরা এটি হিসাবে বর্ণনা করতে পারি (b | abb | bab | bab | aabbb | ababb | ..) যতক্ষণ সম্ভব সমস্ত সংমিশ্রণগুলি তালিকাভুক্ত না হওয়া পর্যন্ত ect


1
নিয়মিত প্রকাশগুলি এমন সিদ্ধান্তের প্রোগ্রাম নয় যা প্যাটার্নের সাথে স্ট্রিং মেলে match এগুলি হল এমন অভিব্যক্তি যা নিয়মিত সেটগুলি বোঝায়, যার জন্য সদস্যপদ সমস্যাটি সিদ্ধান্ত গ্রহণযোগ্য।
ড্যানপোর্টিন

1
যদি কোনও সেট নিয়মিত হয় তবে তা অবশ্যই সিদ্ধান্ত গ্রহণযোগ্য id আমি কীভাবে এটির কথা বলতে পারি তা নিশ্চিত নই। এগুলি কার্যকরভাবে সিদ্ধান্ত গ্রহণের প্রোগ্রাম যাগুলির স্মৃতি নেই।
পল

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

1
আমি এটিকে এটিকে পরিবর্তন করেছিলাম "একটি নিয়মিত ভাষা হ'ল নিয়মিত ভাষা বর্ণনা করার একটি উপায় regular এটি কি আরও ভাল লাগছে?
পল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.