در جبر بولی، **صورت بهنجار جبری** یا **فرم نرمال جبری** (انگلیسی: Algebraic Normal Form)، **فرم نرمال ژگالکین** (انگلیسی: Zhegalkin Normal Form) و **بسط رید-مولر** (انگلیسی: Reed–Muller Expansion) ابزارهای نوشتن فرمولهای منطقی در یکی از ۳ فرم زیر هستند:

* کل فرمول به صورت مطلق درست یا غلط است
۰
۱
* یک یا چند متغیر با AND به صورت یک ترم درآمده باشند. یک یا چند ترم با XOR به صورت یک صورت بهنجار جبری درآمده باشند. استفاده از نقیض مجاز نمی‌باشد.
a ⊕ b ⊕ ab ⊕ abc
* متشکل از علامت‌های استاندارد منطق گزاره‌ها
{\displaystyle a\veebar b\veebar \left(a\wedge b\right)\veebar \left(a\wedge b\wedge c\right)}
* فرم قبلی با ارزش درستی مطلق
1 ⊕ a ⊕ b ⊕ ab ⊕ abc

فرمولهای نوشته شده به صورت صورت بهنجار جبری به نام صورت بهنجار ژگالکین و قطب مثبت بسط رید-مولر هم شناخته می‌شوند.

استفاده‌های معمول
-----------------

صورت بهنجار جبری یک صورت بهنجار متعارف (انگلیسی: Canonical Normal Form) است.
صورت بهنجار در فرم نرم جبری بدین معناست که دو فرمول معادل به یک صورت بهنجار جبری تبدیل می‌شوند، به راحتی نشان داده می‌شود که آیا دو فرمول برای اثبات خودکار قضیه یکسان هستند یا خیر. برخلاف دیگر فرمهای نرمال، صورت بهنجار جبری می‌تواند نمایانگر لیست ساده‌ای از فهرست نام متغیرها باشد. همچنین صورت بهنجار اشتراکی و صورت بهنجار فصلی نیاز دارند تا اینکه متغیر نفی شده‌است یا خیر را ذخیره کنند. از آنجایی که صورت بهنجار منفی از رابطه هم‌ارزی به عنوان برابری استفاده نمی‌کند، لذا a ∨ ¬a و ۱ به عبارت یکسانی کاهش پیدا نمی‌کنند، حتی اگر فکر کنیم معادل هستند.

قرار دادن فرمول در صورت بهنجار جبری حتی باعث شناسایی راحت‌تر توابع خطی (که به عنوان مثال در ثبات تغییر بازخورد خطی (انگلیسی: Linear Feedback Shift Registers) استفاده می‌شوند) می‌شود، همانند تابع خطی که جمع لیترال‌های تک است. همچنین خواص بازخورد غیرخطی انتقال ثبات‌ها می‌تواند از خواص اصلی تابع بازخورد در صورت بهنجار جبری استنباط شود.

انجام عملیات در صورت بهنجار جبری
--------------------------------

راه‌های ساده و مستقیمی برای انجام عملیات بولی استاندارد بر روی ورودی‌های صورت بهنجار جبری به منظور رسیدن به نتایج صورت بهنجار جبری وجود دارد.
  

  

XOR (یای انحصاری) به صورت مستقیم اعمال می‌شود:

{\displaystyle {\begin{array}{rl}&(1\oplus x)\oplus (1\oplus x\oplus y)\\&1\oplus x\oplus 1\oplus x\oplus y\\&1\oplus 1\oplus x\oplus x\oplus y\\&y\\\end{array}}}
NOT (نقیض) به xOR تبدیل می‌شود:

{\displaystyle {\begin{array}{rl}&\neg (1\oplus x\oplus y)\\&1\oplus (1\oplus x\oplus y)\\&1\oplus 1\oplus x\oplus y\\&x\oplus y\\\end{array}}}
AND (عطف منطقی) از قانون توزیع‌پذیری تبعیت می‌کند:

{\displaystyle {\begin{array}{rl}&(1\oplus x)(1\oplus x\oplus y)\\&1(1\oplus x\oplus y)\oplus x(1\oplus x\oplus y)\\&(1\oplus x\oplus y)\oplus (x\oplus x\oplus xy)\\&1\oplus x\oplus x\oplus x\oplus y\oplus xy\\&1\oplus x\oplus y\oplus xy\\\end{array}}}
OR (یای منطقی) از {\displaystyle 1\oplus (1\oplus a)(1\oplus b)} (هرگاه هر دو عملوند ترم‌های مثبت داشته باشند) یا {\displaystyle a\oplus b\oplus ab} (در بقیه موارد) استفاده می‌کند:

{\displaystyle {\begin{array}{rl}&(1\oplus x)+(1\oplus x\oplus y)\\&1\oplus (1\oplus 1\oplus x)(1\oplus 1\oplus x\oplus y)\\&1\oplus x(x\oplus y)\\&1\oplus x\oplus xy\\\end{array}}}

تبدیل به صورت بهنجار جبری
-------------------------

هر متغیر در فرمول بشخصه به صورت صورت بهنجار جبری است، بنابراین تنها لازم است عملیات بولی همان‌طور که در بالا توضیح داده شده‌است اعمال شوند تا کل فرمول به صورت صورت بهنجار جبری درآید. به عنوان مثال:

{\displaystyle {\begin{array}{rl}&x+(y\cdot \neg z)\\&x+(y(1\oplus z))\\&x+(y\oplus yz)\\&x\oplus (y\oplus yz)\oplus x(y\oplus yz)\\&x\oplus y\oplus xy\oplus yz\oplus xyz\\\end{array}}}

تعریف مشابه
-----------

صورت بهنجار جبری گاهی به روش مشابهی توصیف می‌شود:

{\displaystyle {\begin{array}{rl}f(x\_{1},x\_{2},\ldots ,x\_{n})=&a\_{0}\oplus \\&a\_{1}x\_{1}\oplus a\_{2}x\_{2}\oplus \cdots \oplus a\_{n}x\_{n}\oplus \\&a\_{1,2}x\_{1}x\_{2}\oplus \cdots \oplus a\_{n-1,n}x\_{n-1}x\_{n}\oplus \\&\cdots \oplus \\&a\_{1,2,\ldots ,n}x\_{1}x\_{2}\ldots x\_{n}\\\end{array}}}
به طوریکه {\displaystyle a\_{0},a\_{1},\ldots ,a\_{1,2,\ldots ,n}\in \{0,1\}^{\*}} به‌طور کامل f را توصیف می‌کنند.

### به دست آوردن صورت بهنجار جبری توابع بولی چند آرگومانی به صورت بازگشتی

تنها چهار تابع با یک آرگومان موجود است:

{\displaystyle {\begin{array}{rl}&f(x)=0\\&f(x)=1\\&f(x)=x\\&f(x)=1\oplus x\\\end{array}}}
برای نشان دادن یک تابع با آرگومان‌های متعدد می‌توان از برابری زیر استفاده کرد:

{\displaystyle f(x\_{1},x\_{2},\ldots ,x\_{n})=g(x\_{2},\ldots ,x\_{n})\oplus x\_{1}h(x\_{2},\ldots ,x\_{n})}

{\displaystyle {\begin{array}{rl}\*&g(x\_{2},\ldots ,x\_{n})=f(0,x\_{2},\ldots ,x\_{n})\\\*\*&h(x\_{2},\ldots ,x\_{n})=f(0,x\_{2},\ldots ,x\_{n})\oplus f(1,x\_{2},\ldots ,x\_{n})\\\end{array}}}
در واقع،

* اگر {\displaystyle x\_{1}=0} آنگاه {\displaystyle x\_{1}h=0} و در نتیجه {\displaystyle f(0,\ldots )=f(0,\ldots )}
* اگر {\displaystyle x\_{1}=1} آنگاه {\displaystyle x\_{1}h=h} و در نتیجه {\displaystyle f(1,\ldots )=f(0,\ldots )\oplus f(0,\ldots )\oplus f(1,\ldots )}

از آنجایی که g و h تعداد آرگومان‌های کمتری نسبت به f دارند، به این نتیجه می‌رسیم که با تکرار بازگشتی این پروسه در انتها به توابعی با یک آرگومان می‌رسیم. به عنوان مثال صورت بهنجار جبری {\displaystyle f(x,y)=x\lor y} را بدست می‌آوریم:

* با توجه به رابطه بالا داریم {\displaystyle f(x,y)=f(0,y)\oplus x(f(0,y)\oplus f(1,y))}
* از آنجایی که {\displaystyle f(0,y)=0\lor y=y} و {\displaystyle f(1,y)=1\lor y=1}
* نتیجه می‌گیریم {\displaystyle f(x,y)=y\oplus x(y\oplus 1)}
* و در انتها به صورت بهنجار جبری {\displaystyle f(x,y)=y\oplus xy\oplus x=x\oplus y\oplus xy} می‌رسیم.

جستارهای وابسته
---------------

* تابع بولی
* گراف منطقی
* چندجمله‌ای‌های ژگالکین
* صورت بهنجار نفی
* صورت بهنجار اشتراکی
* صورت بهنجار فصلی

منابع
-----

* ویکی‌پدیا انگلیسی