শব্দের ভাষার জন্য প্রসঙ্গে সংবেদনশীল ব্যাকরণ নিজের সাথে একত্রিত


9

আমি একটি প্রসঙ্গ-সংবেদনশীল ব্যাকরণের সন্ধান করছি যা নীচের ভাষাটি বর্ণনা করে: ।এল={WW|W∈{একটি,খ}*,|W|≥1}

মতো কোনও নিয়মের অনুমতি নেই এবং এই কারণে আমি শব্দের "মাঝারি" নির্দেশ করে কোনও অবিচ্ছিন্ন রাখতে পারি না এই সমস্যাটি নিয়ে আমার সমস্যা হয়েছে। সমস্যার কোন কৌশল আছে?এক্স→ε


1
বিরক্তিকর উত্তর: একটি এলবিএ প্রণয়ন এবং প্রমাণ করুন যে এলবিএ এবং প্রসঙ্গ-সংবেদনশীল ব্যাকরণ সমান শক্তিশালী তা প্রয়োগ করতে ব্যবহৃত সিমুলেশন প্রয়োগ করুন।
— রাফেল

উত্তর:


6

প্রকৃতপক্ষে, একটি সহজ কৌশল আছে যা আপনাকে একটি নির্দিষ্ট অবস্থানে অতিরিক্ত তথ্য যুক্ত করতে দেয়: কেবলমাত্র অবস্থানের সংলগ্ন একটি চিঠি প্রতিস্থাপন করুন এবং তথ্য এবং মূল চিঠিটি দিয়ে চিহ্নিত করুন।

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

বেশিরভাগ ক্ষেত্রেই অ্যাপ্লিকেশন Ma→aডেরাইভেশন প্রক্রিয়া শেষে সঞ্চালন করা প্রয়োজন। কিছু নির্মাণে এটি "সময়োপযোগী" হওয়ার দরকার পড়ে না: কখনMখুব শীঘ্রই অদৃশ্য হয়ে যায়, ডেরাইভেশনটি একটি সঠিক অবস্থান খুঁজে পেতে পারে না এবং প্রক্রিয়াটি সফলভাবে থামবে না will অন্যান্য ক্ষেত্রে এক ধরনের নিয়ন্ত্রণ প্রয়োজন। এটি কখনও কখনও অক্ষর বরাবর সরানো একটি সংকেত হিসাবে একটি ননটার্মিনালাল পরিচয় করিয়ে সম্পন্ন করা হয়। আবার, এই সংকেতটিতে একটি টার্মিনালও বহন করা উচিত অন্যথায় আপনি একই সমস্যার মধ্যে পড়ে।

তথাকথিত মনোোটোনিক ব্যাকরণগুলিতে চারদিকে তথ্য সঞ্চার করা সহজ (α→β সঙ্গে |α|≤β|) মত নিয়ম ব্যবহার করে XA→AX, যা হিসাবে দেখা যেতে পারে X ঝাঁপিয়ে পড়া A। যথাযথ প্রসঙ্গে সংবেদনশীল ব্যাকরণগুলির জন্য এইটিকে তিনটি ধাপে বিভক্ত করা দরকার:XA→XAX,XAX→AAX,AAX→AX। প্রতিটি উত্পাদনে একটি বর্ণ যথাযথ প্রসঙ্গে পরিবর্তিত হয়। এই প্রক্রিয়াটি বংশগতির অন্যান্য অংশের সাথে ইন্টারঅ্যাক্ট করে না তা দেখতে বেশ কিছুটা কল্পনা লাগে। যেমন, যখন হয়A শেষ ধাপে প্রথমে অন্য একটি উত্কৃষ্ট পদক্ষেপের সাথে জড়িত?

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


প্রযোজকদের একটি নির্দিষ্ট ক্রমে নজর দেওয়া দরকার ছিল না যাতে নন্টারমিনালগুলি শেষ পর্যন্ত পুনর্বিন্যাস করার আগে মা → আ ব্যবহার করা হবে না? নাকি আমি কিছু মিস করছি?
— মিঃবোল্টন

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

1

সংক্ষিপ্ত ডিফল্ট উত্তর: একটি এলবিএ নিয়ে আসুন যা ভাষাটি গ্রহণ করে এবং প্রসঙ্গ-সংবেদনশীল ব্যাকরণ এবং এলবিএ একই ভাষার সেট সংজ্ঞায়িত করে তা প্রমাণ করতে ব্যবহৃত সিমুলেশন ব্যবহার করে। তবে তা অবশ্যই আপনার পরে নয়।

এই নির্দিষ্ট ক্ষেত্রে, এর জন্য একটি ডান-লিনিয়ার ব্যাকরণ ব্যবহার করার কথা ভাবার চেষ্টা করুন Σ*দু'বার, একটি বাম দিকে এবং একটি ডান অর্ধেকের জন্য। আপনার উভয় ব্যাকরণই "সিঙ্কে" সঞ্চারিত হয়েছে তা নিশ্চিত করতে হবে।

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

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

এটি অর্জনের একটি উপায় হ'ল এলবিএ সম্পর্কে নির্দিষ্ট প্রমাণের মতো একই কৌশলটি ব্যবহার করা: আপনার প্রথমে যে সমস্ত নন-টার্মিনালগুলির প্রয়োজন হবে তা তৈরি করুন, অর্থাৎ "টেপ" প্রস্তুত করুন। পরে, সেই টেপটিতে "ঘোরাফেরা করুন"। কেবলমাত্র "শেষে", সমস্ত অ-টার্মিনালগুলিকে টার্মিনালগুলির সাথে প্রতিস্থাপন করুন।

বেশ দেরি জি=(এন,Σ,δ,এস) সঙ্গে Σ={একটি,খ} (নির্মাণটি সহজেই বৃহত্তর বর্ণমালা পর্যন্ত প্রসারিত হয়) এবং এন, δ নিম্নলিখিত বিধি দ্বারা প্রদত্ত

S→X^lS′Xr∣aaaa∣abab∣baba∣bbbb∣aa∣bb∣εS′→XlS′Xr∣XlX^r

"টেপ" তৈরির নিয়ম are লক্ষ্য করুন যে টুপি "মাথা অবস্থান" এবং সূচকগুলি বোঝায়l,rনন-টার্মিনাল শব্দের অর্ধেকটি বোঝান। নীচে কিছু নিয়ম সুরক্ষিত করার জন্য এইভাবে সংক্ষিপ্ত শব্দগুলি উত্পন্ন হয়। বাম অংশে একটি প্রতীক প্রাপ্ত করার জন্য এখন আমাদের বিধিগুলির প্রয়োজন:

X^lXl→XγX^lγX^lXα→XγXαγ

সবার জন্য (α,γ)∈Σ2। উত্সাহিত চিহ্নটি ডানদিকে নিয়ে যাওয়ার জন্য আমরা কীভাবে উপরের সূচকটি ব্যবহার করব তা নোট করুন।Xa এবং Xb"চূড়ান্ত" নন-টার্মিনালগুলি যা কেবলমাত্র নিয়ন্ত্রণ টোকেনকে চারপাশে স্থানান্তর করতে এবং পরে টার্মিনালগুলি আহরণের জন্য ব্যবহৃত হবে। আরও মনে রাখবেন যে দ্বিতীয় নিয়মটি (কেবল) ডান অর্ধের শেষ চিহ্নের জন্য ব্যবহৃত হয়।

ক্যারিটি ডান অর্ধে নিয়ে যাওয়ার জন্য, আমাদের উভয়কেই রেখে যেতে হবেXl এবং ইতিমধ্যে উত্পন্ন Xα:

X^ঠγএক্সঠ→এক্স^ঠএক্সঠγএক্স^ঠγএক্সα→এক্স^ঠএক্সαγএক্সঠγএক্সঠ→এক্সঠএক্সঠγএক্সঠγএক্সα→এক্সঠএক্সαγএক্সαγএক্সβ→এক্সαএক্সβγ

সবার জন্য (α,β,γ)∈Σ3। এখন একবার বাহনটি ডান কন্ট্রোল টোকনে পৌঁছে গেলে, আমাদের বামদিকে ব্যবহৃত নিয়মের নকল করতে হবে:

এক্সঠγএক্স^R→এক্সঠএক্স^Rγএক্সαγএক্স^R→এক্সαএক্স^Rγএক্স^Rγএক্সR→এক্সγএক্স^Rএক্স^Rγ→এক্সγ

সবার জন্য (α,γ)∈Σ2। মনে রাখবেন যে প্রথম বিধিটি ডান অর্ধের প্রথম প্রতীক হিসাবে ব্যবহৃত হয় এবং শেষ বিধিটি কেবলমাত্র সর্বশেষ চিহ্নের জন্য ব্যবহার করা যেতে পারে, অন্যথায় ডাইরিভিশনটি কখনই শেষ হয় না। এখন আমাদের কেবল সমাপ্তির বিধিগুলির প্রয়োজন

এক্সα→α

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

মনে রাখবেন যে এই ব্যাকরণটি অস্পষ্ট। শুধু পারে নাএক্সα→α(নিরাপদে) যেকোন সময় বাম "মাথা" এর বামদিকে যে কোনও জায়গায় প্রয়োগ করা যেতে পারে, তবে একই সাথে একাধিক বহন করাও চলতে পারে। যেহেতু তারা একে অপরকে কখনই ছাড়তে পারে না সঠিক ক্রম বজায় থাকে।

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

একজনবি→সিডি

দ্বারা

একজনবি→একজনওয়াইআরএকজনওয়াইআর→এক্সআরওয়াইআরএক্সআরওয়াইআর→এক্সআরডিএক্সআরডি→সিডি

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

আপনি কীভাবে এটি প্রসারিত করবেন তা দেখেন Lk={wk∣w∈Σ∗}? Does it also work for L=⋃i≥1Lk? Can you use the same construction for any Lk for regular L?


0

Although I don't know how the context-sensitive grammar will look like, you can circumvent your problem with the symbol X as follows.

You know that your concatenated words w must be at least of length |w|≥1. Hence, you could simply "encode" those ε-rules of your grammar by some rules like:

একটিএক্সএকটি→একটিএকটি,  একটিএক্সখ→একটিখ,  খএক্সএকটি→খএকটি,  খএক্সখ→খখ

যদিও, আমি সামগ্রিক সমাধানটি এখনও দেখতে পাচ্ছি না, কারণ আমার মনে হচ্ছে আপনার ব্যাকরণের নিয়মের বাম দিকগুলি সম্ভবত নির্বিচারে দীর্ঘ হয়ে যায়, কারণ আমি মনে করি আপনি এর উপসর্গগুলি বিবেচনা করার চেষ্টা করবেন W একরকম আপনার বিধি।


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