فرم نرمال چامسکی

از testwiki
پرش به ناوبری پرش به جستجو

الگو:تمیزکاری در نظریه زبان صوری، یک گرامر مستقل از متن هنگامی در فرم نرمال چامسکی (نامگذاری به خاطر نوآم چامسکی) است که تمام قوانین تولید آن با فرم زیر باشید: الگو:چپ‌چین

ABC یا
Aα یا
Sε ,

الگو:پایان چپ‌چین به طوریکه A, B و C کاراکترهای غیرپایانه و α یک کاراکتر پایانه (کاراکتری که یک مقدار ثابت را نشان می‌دهد)، کاراکتر شروع، و S رشته تهی است. همچنین هیچ‌کدام از B یا C نمی‌توانند کاراکتر شروع باشند، و سومین قانون تولید فقط زمانی ظاهر می‌شود که ε در L(G)باشد، یعنی زبان توسط گرامر مستقل از متن G ایجاد شده باشد. هر گرامر در فرم نرمال چامسکی یک گرامر مستقل از متن می‌باشد و برعکس، هر گرامر مستقل از متنی را می‌توان به فرم معادل نرمال چامسکی تبدیل کرد. چندین الگوریتم برای انجام چنین تبدیلی شناخته شده‌است. این تبدیل در بسیاری از کتاب‌های درسی در نظریه ماشین‌ها، مانند Hopcroft و Ullman، ۱۹۷۹ توصیف شده‌است. همان‌طور که توسط "Lange and Leiß" اشاره شده‌است، اشکال این تبدیل این است که می‌تواند به بزرگ شدن نامطلوب اندازه گرامر منجر شود. اندازه یک گرامر، مجموع اندازه‌های قانون‌های تولید آن است، که در آن سایز هر قانون طول سمت راست آن به علاوه یک می‌باشد. |G| اندازه گرامر G را نشان می‌دهد، این اندازه در بدترین حالت بین |G|2 و 22|G| و وابسته به الگوریتم تبدیل استفاده شده، می‌باشد.

تعریف جایگزین

تعریف دیگر فرم نرمال چامسکی به صورت زیر است: (برای مثال Hopcroft و Ullman، ۱۹۷۸ و Hopcroft et al. 2006) الگو:چپ‌چین

ABC یا
Aα,الگو:پایان

به طوریکه A, B و C کاراکترهای غیرپایانه و α یک کاراکتر پایانه است. هنگام استفاده از این تعریف، B یا C می‌توانند کاراکتر شروع باشند. فقط آن گرامرهای مستقل از متنی که رشتهٔ تهی ایجاد نمی‌کنند می‌توانند به فرم کاهش یافتهٔ چامسکی تبدیل شوند.

تبدیل یک گرامر به فرم نرمال چامسکی

  1. معرفی S0
    معرفی یک متغیر شروع جدید S0، S0S که S متغیر شروع قبلی است.
  2. همهٔ قوانین ε را کاهش دهید.
    ε فرم‌هایی به شکل Aε, هستند که A=S0 and AV, که V متغیرهای الفبای CFGهستند.
    هر قانون شامل ε در سمت راستش را حذف کنید. برای هر قانون شامل A در سمت راستش، A مجموعه‌ای از قوانین جدید از ترکیبات مختلف A است که با ε جایگزین شده یا نشده باشد.
    اگر یک قانون فقط A را به صورت تنها در سمت راست داشته باشد، قانون R=Aε را اضافه کنید مگر اینکه R قبلاً از پردازش حذف شده باشد.
    برای مثال گرامرG:الگو:چپ‌چین
    SAbAB
    Bbc
    Aεالگو:پایان
    G فقط یک قانون تهی دارد، هنگامی که Aε حذف شود، داریم: الگو:چپ‌چین
    SAbAAbbAbB
    Bbcالگو:پایان
    توجه کنید که ما باید تمامی احتمالات را در نظربگیریم Aε و ما در واقع در نهایت ۳ قانون رااضافه می‌کنیم.
  3. همهٔ قوانین واحد را کاهش دهید
    الگو:چپ‌چینAB;A,BVالگو:پایان
    پس از آن که همهٔ قوانین ε حذف شدند، شما می‌توانید شروع به از بین بردن قوانین واحد، یا قوانینی که سمت چپ آن شامل یک متغیر و هیچ ترمینالی ندارد (است که در تضاد با CNF)کنید.
    برای حذف AB
    BU, که U که یک رشته از متغیرها و پایانه هاست، قانون AU را اضافه کنید مگر اینکه قانون پایه‌ای باشد که قبلاً حذف شده‌است.
  1. سایر قوانینی که در فرم نرمال چامسکی نیستند را حذف کنید
    Au1u2uk,k3,u1VΣ با Au1A1,A1u2A2,,Ak2uk1uk, جایگذاری کنید کهAiها متغیرهای جدید هستند.
    اگر uiΣ,replaceui را با متغیر Vi جایگزین کنید و قانون Viui را اضافه کنید.

منابع

الگو:پانویس