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

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

   یا
   یا
  ,

به طوریکه  ,  و   کاراکترهای غیرپایانه و    یک کاراکتر پایانه (کاراکتری که یک مقدار ثابت را نشان می‌دهد)، کاراکتر شروع، و   رشته تهی است. همچنین هیچ‌کدام از   یا   نمی‌توانند کاراکتر شروع باشند، و سومین قانون تولید فقط زمانی ظاهر می‌شود که    در باشد، یعنی زبان توسط گرامر مستقل از متن   ایجاد شده باشد.
هر گرامر در فرم نرمال چامسکی یک گرامر مستقل از متن می‌باشد و برعکس، هر گرامر مستقل از متنی را می‌توان به فرم معادل نرمال چامسکی تبدیل کرد. چندین الگوریتم برای انجام چنین تبدیلی شناخته شده‌است. این تبدیل در بسیاری از کتاب‌های درسی در نظریه ماشین‌ها، مانند Hopcroft و Ullman، ۱۹۷۹ توصیف شده‌است. همان‌طور که توسط "Lange and Leiß" اشاره شده‌است، اشکال این تبدیل این است که می‌تواند به بزرگ شدن نامطلوب اندازه گرامر منجر شود. اندازه یک گرامر، مجموع اندازه‌های قانون‌های تولید آن است، که در آن سایز هر قانون طول سمت راست آن به علاوه یک می‌باشد.    اندازه گرامر   را نشان می‌دهد، این اندازه در بدترین حالت بین  و  و وابسته به الگوریتم تبدیل استفاده شده، می‌باشد.

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

  یا

 ,

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

تبدیل یک گرامر به فرم نرمال چامسکی 
 معرفی  </dt>
معرفی یک متغیر شروع جدید ،   که  متغیر شروع قبلی است.</dd>
 همهٔ قوانین  را کاهش دهید. </dt>
  فرم‌هایی به شکل , هستند که  and , که  متغیرهای الفبای CFGهستند.
هر قانون شامل   در سمت راستش را حذف کنید. برای هر قانون شامل  در سمت راستش،  مجموعه‌ای از قوانین جدید از ترکیبات مختلف   است که با  جایگزین شده یا نشده باشد.
اگر یک قانون فقط  را به صورت تنها در سمت راست داشته باشد، قانون   را اضافه کنید مگر اینکه  قبلاً از پردازش حذف شده باشد.
برای مثال گرامر:
 
 
 
  فقط یک قانون تهی دارد، هنگامی که  حذف شود، داریم: 
 
 
توجه کنید که ما باید تمامی احتمالات را در نظربگیریم  و ما در واقع در نهایت ۳ قانون رااضافه می‌کنیم.
 همهٔ قوانین واحد را کاهش دهید

پس از آن که همهٔ قوانین   حذف شدند، شما می‌توانید شروع به از بین بردن قوانین واحد، یا قوانینی که سمت چپ آن شامل یک متغیر و هیچ ترمینالی ندارد (است که در تضاد با CNF)کنید.
برای حذف  
 , که  که یک رشته از متغیرها و پایانه هاست، قانون  را اضافه کنید مگر اینکه قانون پایه‌ای باشد که قبلاً حذف شده‌است.</dd>
 سایر قوانینی که در فرم نرمال چامسکی نیستند را حذف کنید
   با  , جایگذاری کنید کهها متغیرهای جدید هستند.
اگر u_i \in \Sigma, replace u_i را با متغیر V_i جایگزین کنید و قانون V_i \rightarrow u_i را اضافه کنید.

منابع 
 

زبان‌های صوری
نوآم چامسکی