**Բեռլեկեմպի ալգորիթմ**, ալգորիթմ՝ նախատեսված վերջավոր սեռով ունիտար բազմանդամների ֆակտորիզացիայի համար։ Մշակվել է Էլվին Բեռլեկեմպի կողմից 1967 թվականին։ Կարող է օգտագործվել նաև վերջավոր դաշտերի վրա չվերլուծվող բազմանդամների համար։ Ալգորիթմի հիմնական գաղափարը տրված բազմանդամի ներկայացումն է՝ նույն բազմանդամի և որոշ այլ բազմանդամների ընդհանուր բաժանարարի տեսքով, որոնք մինչև ազատ անդամի ճշտությամբ հանդիսանում են {\displaystyle f}-բաժանարարներ։ Բեռլեկեմպի ալգորիթմը ունի դուրսբերման մեծ դժվարություն, այդ պատճառով մշակվել են մի շարք լրացուցիչ մեթոդներ, որոնք թույլատրում են կրճատել անհրաժեշտ մաթեմատիկակն գործողությունների քանակը։ Այնուամենայնիվ, չնայած իր դժվարության, Բեռլեկեմպի ալգորիթմը իրականացվել է համակարգչային հանրահաշվի համակարգում։ Ալգորիթմը մեծ կիրառում է գտել կոդավորման տեսությունում և վերջավոր դաշտերում գծային ռեկուրենտ հարաբերությունների ուսումնասիրություններում։ Հանրահաշվում և թվերի տեսությունում կան բազմաթիվ հաշվողական առաջադրանքներ, որոնք այսպես թե այնպես կապված են վերջավոր դաշտերում բազմանդամների տրոհման հետ, օրինակ, բազմանդամների բազմության տրոհումը ամբողջ թվերի օղակի վրա, հանրահաշվական թվերի դաշտում պարզ ռացիոնալ թվի տրոհման որոնումը, ինչ֊որ հավասարության Գալուայի խմբի որոշումը ռացիոնալ թվերի դաշտի և ընդլայված դաշտերի վրա։

Ստեղծման պատմություն
--------------------

Ամերիկացի մաթեմատիկոս, Կալիֆոռնիայի համալսարանի պրոֆեսոր Բեռլեկեմպը զբաղվել է սխալների հայտնաբերման և ճշգրտման ցիկլիկ կոդի, այդ թվում նաև Չոուդխուր֊Խոկվինգեմի կոդի ուսումնասիրությամբ, որոնց հատկությունները կախված են վերածնող բազմանդամի բաժանարարներից։ Այդ կոդերի ապակոդավորման շրջանում Բեռլեկեմպի տեխնիկական հաջողությունները պրակտիկայի տեսանկյունից իրենց դարձրեցին առավել կարևոր։ Ալգորիթմը առաջին անգամ շարադրվել է *«Factoring Polynomials Over Finite Fields»* հոդվածում և ավելի ուշ հրատարակվել է *«Algebraic Coding Theory»* գրքում։ 1967 թվականի այդ աշխատության մեջ  Բեռլեկեմպը գրում է, որ ֆակտորիզացիայի խնդիրը առաջանում է Գոլոմբի աշխատություններում։ Այնուամենայնիվ, {\displaystyle f(x)} բազմանդամի նորմավորված բազմապատկիչների թվի որոշման {\displaystyle B} մատրիցի օգտագործումը առաջին անգամ նշվել. Բաթլերի հոդվածում որոշվել է, որ {\displaystyle B-E} մատրիցայի ռանգը հավասար է {\displaystyle n-k}, այդ փաստի մեկ այլ ապացույց տրվել է Շվարցի կողմից։
Բեռլեկեմպի ալգորիթմը հիշատակվել է մի շարք աշխատություններում և մինչև 1981 թվականին.հայտնվելը հանդիսանում է ֆակտորիզացիայի խնդրի լուծման հիմնական ալգորիթմ։ Մշակվել էր տեխնիկա, որը հնարավորություն էր տալիս բազմանդամը տրոհել{\displaystyle O(n^{(\omega +1)/2+o(1)}+n^{1+o(1)}\log q),} բազմապատկիչների, որտեղ {\displaystyle \omega } ֊ն՝ քառակուսի մատրիցի վերաբազմապատկման բարդության գործակիցն է։

Տրում և որոշում
---------------

Ուսումնասիրվում է վերջավոր դաշտի վրա տրված {\displaystyle f(x)} կարգի բազմանդամի ֆակտորիզացիայի խնդիրը {\displaystyle n} ({\displaystyle n\geq 2}) {\displaystyle \mathbb {F} \_{q}} ({\displaystyle q=p^{m}}, {\displaystyle p} պարզ թիվ է) տարբեր ունիտար բազմանդամների {\displaystyle f(x)=f\_{1}(x)^{e\_{1}}\cdots f\_{k}(x)^{e\_{k}}}։
Ալգորիթմում օգտագործման համար {\displaystyle B=(b\_{ij})\_{i=0,\;j=0}^{n-1,\;n-1}} մատրիցան կառուցվում է համաձայն հետևյալ պայմանների. {\displaystyle {x^{iq}}\equiv \sum \_{j=0}^{n-1}b\_{ij}x^{j}{\pmod {f(x)}}\quad i={\overline {0,n-1}}}։
{\displaystyle h(x)\in \mathbb {F} \_{q}[x]} բազմանդամն այնպիսին է, որ {\displaystyle 1\leqslant \deg {h(x)}<n,\quad {h(x)}^{q}\equiv h(x){\pmod {f(x)}}},կոչվում է {\displaystyle f}-տրոհվող բազմանդամ։

Մասնավոր դեպք
-------------

Բեռլեկեմպի ալգորիթմի բլոկսխեմա, մասնավոր դեպք
{\displaystyle \mathbb {F} \_{q}} վերջավոր դաշտի վրա

{\displaystyle f(x)=f\_{1}(x)\cdots f\_{k}(x)} տեսքի բազմանդամի ֆակտորիզացիայի ալգորիթմը կազմված է հետևյալ քայլերից.
1. {\displaystyle B} մատրիցի հաշվում .
2. {\displaystyle (B-E\_{n})^{T}\mathbf {x} =\mathbf {0} } գծային հավասարումների համակարգի լուծումների ենթատարարածության {\displaystyle {\overline {e\_{1}}},\dots ,{\overline {e\_{k}}}} բազիսի որոնում, դրա հետ մեկտեղ հաջողվում է ընտրել {\displaystyle {\overline {e\_{1}}}=(1,\;0,\;....\;,\;0)} վեկտորը, քանի որայն միշտ ներկա կլինի լուծումների տարածության բազիսում նկատի ունենալով, որ {\displaystyle x^{iq}\equiv 1{\pmod {f(x)}}}, {\displaystyle i=0} դեպքում։
3. Գտնված {\displaystyle k} թիվը հանդիսանում է  {\displaystyle f(x)} դուրս չբերվող բաժանարարների թիվը։
	* Եթե {\displaystyle k=1}, ապա բազմանդամը հանդիսանում է դուրս չբերվող։
	* Եթե {\displaystyle k>1}, ապա {\displaystyle {\overline {e\_{l}}}} վեկտորները ունեն {\displaystyle (h\_{l,\;0},\dots ,h\_{l,\;n-1})} տեսքը։ Այդ թվերով կառուցում են {\displaystyle f}-տրոհվող բազմանդամները։
	{\displaystyle h\_{l}(x)=\sum \_{i=0}^{n-1}h\_{l,\;i}\;x^{i},\quad l={\overline {2,\;k}},\quad h\_{1}(x)=1.}։
4. Տրոհման որոնում։
{\displaystyle f(x)=\prod \_{c\in \mathbb {F} \_{q},}\gcd(f(x),h\_{2}(x)-c)}
{\displaystyle f(x)=\prod \_{m}g\_{m,\;2}(x)} տեսքով,
որտեղ {\displaystyle g\_{m,\;s}(x),\quad s={\overline {2,k}}} ընդհանուր դեպքում չեն հանդիսանում դուրս չբերվող։{\displaystyle g\_{m,\;s}(x)} ֆունկցիաները ֆակտորիզացվում են նույն կերպով , այսինքն,
{\displaystyle g\_{m,\;s}(x)=\prod \_{c\in \mathbb {F} \_{q},}\gcd(g\_{m,\;s}(x),h\_{s+1}(x)-c),\quad s={\overline {2,k-1}}}.

Ընդհանուր դեպք
--------------

Բեռլեկեմպի ալգորիթմի բլոկսխեմա, մասնավոր դեպքի վերաբերյալ
Կամայական ունիտար բազմանդամի ֆակտորիզացման խնդիրը բերում է մասնավոր դեպքի քննարկման։ Դրա համար որոշվում է

{\displaystyle d(x)=\gcd(f(x),\;f^{'}(x))} բազմանդամը,
Էվկլիդեսի ալգորիթմի օգտագործմամբ.

* Եթե {\displaystyle d(x)=1,} ապա բազմանդամը չի պարունակում կրկնվող արմատներ,քանի որ կրկնվող արմատը միաժամանակ հանդիասանում է ածանցյալի արմատը.
* Եթե {\displaystyle d(x)=f(x),} ապա {\displaystyle f^{'}(x)=0,}, և նշանակում է, որ {\displaystyle f(x)=g(x)^{p},\quad g(x)\in \mathbb {F} \_{q}[x].} Եթե {\displaystyle g^{'}(x)=0,} ապա {\displaystyle g(x)} համար անհրաժեշտ է նշված գործընթացը կրկնել այքան ժամանակ, մինչև չենք ստանա {\displaystyle f(x)=h(x)^{p^{s}},h{'}(x)\neq 0.} տրոհումը։{\displaystyle h(x)} բազմանդամը բավարարում է մասնավոր դեպքի պայմաններին .
* Այլապես, {\displaystyle d(x)} բազմանդամը հանդիսանում է {\displaystyle f(x)} բազմանդամի ոչ տրիվյալ բաժանարար.Իր հերթին, {\displaystyle {\frac {f(x)}{d(x)}}} բազմանդամը չունի կրճատ չտրոհվող բազմապատիկներ. Եթե {\displaystyle d(x)} ներառում է կրճատ բազմապատիկներ, ապա նրա համար նույնպես կիրառվում է նկարագրված պրոցեդուրան։ Իմանալով այդ տրոհումները, հեշտ է ստանալ {\displaystyle f(x)} տրոհումը։

Այդ ձևով, {\displaystyle \mathbb {F} \_{q}[x]} վերջավոր դաշտի վրա կամայական ունիտար բազմանդամի տրոհման խնդիրը տարվում է բազմանդամների վերջավոր թվով բազմապատիկների տրոհման, որոնք չունեն կրճատ չբերվող ժազմապատիկներ, այսինքն մասնավոր դեպքի։

Հիմնավորում
-----------

Թող։

{\displaystyle f(x)=f\_{1}(x)^{e\_{1}}\cdots f\_{k}(x)^{e\_{k}}}, որտեղ {\displaystyle \quad e\_{i}=1,\quad i={\overline {1,k}}}.
Համաձայն մնացորդների մասին չինական թեորեմի {\displaystyle \mathbb {F} \_{q}} դաշտի էլեմենտների ցանկացած {\displaystyle (c\_{1},\;...\;c\_{k})} հավաքածուի համար գոյություն ունի միակ բազմանդամ։

{\displaystyle h(x)\in \mathbb {F} \_{q}[x],}
այնպիսին է, որ։

{\displaystyle h(x)\equiv c\_{i}{\pmod {f\_{i}(x)}},\;i={\overline {1,\;k}},\quad \deg {h(x)}<\deg {f(x)}}.
{\displaystyle h(x)} բազմանդամը բավարարում է պայմանը ։

{\displaystyle {h(x)}\equiv c\_{i}\equiv c\_{i}^{q}\equiv h(x)^{q}{\pmod {f\_{i}(x)}},\quad i={\overline {1,\;k}}},
և այդ պատճառով ։

{\displaystyle h(x)^{q}\equiv h(x){\pmod {f(x)}},\quad \deg {h(x)}<deg{f(x)}}.
{\displaystyle h(x)^{q}-h(x)=\prod \_{c\in \mathbb {F} \_{q}}(h(x)-c)\equiv 0{\pmod {f(x)}}} պայմանից,
և աջ մասի բազմապատիկների փոխադարձ պարզկությունից հետևում է, որ {\displaystyle f(x)} բազմանդամի յուրաքանչյուր չտրոհվող բաժանարար բաժանում է {\displaystyle h(x)-c} բազմանդամներից միայն ու միայն մեկը. Այսպիսով,ապացուցվեց  տրոհման ճշմարտությունն ու միակությունը։

{\displaystyle f(x)=\prod \_{c\in \mathbb {F} \_{q}}\gcd(f(x),h(x)-c).}
{\displaystyle h(x)=a\_{0}+a\_{1}x^{1}+\dots +a\_{n-1}x^{n-1}\in \mathbb {F} \_{q}} բազմանդամիը գտնելու համար դիտարկենք
{\displaystyle h(x)^{q}\equiv h(x){\pmod {f(x)}}} համեմատությունը,
որը հավասարազոր է  պայմանին։

{\displaystyle \sum \_{i=0}^{n-1}a\_{i}x^{iq}\equiv \sum \_{i=0}^{n-1}a\_{i}x^{i}{\pmod {f(x)}}}.
{\displaystyle B} մատրիցի որոշման համար ստանում ենք։

{\displaystyle \sum \_{i=0}^{n-1}a\_{i}\sum \_{j=0}^{n-1}b\_{ij}x^{j}=\sum \_{i=0}^{n-1}a\_{i}x^{i}}, դրա համար։
{\displaystyle \sum \_{i=0}^{n-1}a\_{i}b\_{ij}=a\_{j},\quad j={\overline {0,\;n-1}}}.
Ստացված հավասարությունների համակարգը որոշում է {\displaystyle f}-տրոհվող բազմանդամների գործակիցները և կարող է գրի առնվել

{\displaystyle \quad (a\_{0},\;a\_{1},...a\_{n-1})B=(a\_{0},\;a\_{1},\;...a\_{n-1})}
կամ։

{\displaystyle \quad (a\_{0},\;a\_{1},...a\_{n-1})(B-E\_{n})=\mathbf {0} } տեսքերով։

Ալգորիթմի բարդություն
---------------------

Ալգորիթմի բարդությունը կազմում է {\displaystyle O(n^{3}+qkn)} մաթեմատիկական գործողություն. Ալգորիթմը էֆեկտիվ կլինի միայն ոչ մեծ դաշտերի համար։ Դա կախված է բոլոր {\displaystyle c\in \mathbb {F} \_{q}} շատության անհրաժեշտության հետ։

Կատարելագործում
---------------

* Պարզ դաշտի դեպքում, եթե {\displaystyle p} արժեքը մեծ է, ապա {\displaystyle c\in {\mathbb {Z} /p\mathbb {Z} }} արժեքների շատությունը շատ ժամանակ կկազմի։ Սակայն,հնարավոր է որոշել {\displaystyle M} բազմությունը,կազմված {\displaystyle c} ֊ից, որոնց համար {\displaystyle \gcd(f(x),h(x)-c)} ոչ տրիվյալ են. Դրա համար անհրաժեշտ է գտնել  {\displaystyle R(c)} ռեզուլտանտնի արմատները, որոնք և կկազմեն {\displaystyle M} բազմությունը։
* {\displaystyle f(x)\in GF(q)[x]} ունիտար բազմանդամի տրոհման ևս մեկ մեթոդ,կրճատ չտրոհվող բազմապատիկներ չունեցող, հիմնված է Բեռլեկեմպի ալգորիթմով անկյունագծային տեսքի A մատրիցի որոշակի էֆեկտիվ հաշվարկների բերմանը։. Այնուամենայնիվ, անկյունագծայնացման պրոցեսը բականին դժվար է։
* Կալտոֆենի և Լոբոյի աշխատության մեջ առաջարկվել էր Բեռլեկեմպի ալգորիթմի հավանական տարբերակ, որը թույլ է տալիս {\displaystyle n} կարգի {\displaystyle f(x)\in GF(q)[x]} բազմանդամը տրոհել բազմապատիկների {\displaystyle O((n\log n+\log q)\cdot n(\log n)\log(\log n))} թվաբանական գործողություններով։ Կալտոֆեն֊Լոբոյի ալգորիթմը ռեալիզացվել է համակարգչով, և բարձր կարգի բազմանդամի համար դարձավ էֆեկտիվ , օրինակ, {\displaystyle \mathbb {Z} /127\mathbb {Z} } դաշտի վրա 10001 կարգի բազմանդամի համար այն համակարգչով աշխատում է մոտավորապես 102.5 ժամ Sun-4։

Համակարգչային հանրահաշվի համակարգում ռեալիզացում
------------------------------------------------

Համակարգչային հանրահաշվի համակարգում PARI/GP Բեռլեկեմպի ալգորիթմը կարող է կիրառվել `factormod` անմիջական հրամանով։

Ծանոթագրություններ
------------------

1. ↑  Berlekamp, 1967, էջ 1854: «О циклических кодах»
2. 1 2  Berlekamp, 1967
3. ↑  Berlekamp, 1967, էջ 1853
4. ↑  *Голомб, Соломон Вольф* Shift Register Sequences. — Aegean Park Pr; Revised edition, 1981. — 274 с. — ISBN 978-0894120480
5. ↑  Կաղապար:Հոդվածում
6. ↑  *Butler, M. C. R.* On the reducibility of polynomials over a finite field. — The Quarterly Journal of Mathematics Oxford Second Series 5, 1954. — С. 102-107.
7. ↑  *Schwarz, St.* On the reducibility of polynomials over a ﬁnite ﬁeld. — Quart. J. Math. Oxford Ser.(2) 7, 1956. — С. 110-124.
8. ↑  Лидл, 1988, Исторические комментарии, էջ 223-224
9. ↑  *Cantor D.G. Zassenhaus H.* A new algorithm for factoring polynomials over finite fields. — Math. Comp. 1981. — Vol. 36. — P. 587—592.
10. ↑  *von zur Gathen J. Shoup V.* Computing Frobenius maps and factoring polynomials. — Comput. Complexity, 1992. — Т. 2. — С. 187–224.
11. ↑  Василенко, 2003, էջ 185: «Сложность алгоритма Кантора—Цассенхауза»
12. ↑  Лидл, 1988, Постановка задачи, էջ 187
13. ↑  Василенко, 2003, Определения, էջ 172
14. 1 2  Василенко, 2003, Описание алгоритма, էջ 173
15. 1 2 3 4  Лидл, 1988, Описание алгоритма
16. 1 2 3 4  Лидл, 1988, Сведение к основному случаю, էջ 188
17. 1 2 3 4 5  Лидл, 1988, Обоснование корректности алгоритма, էջ 189-190
18. 1 2  Василенко, 2003, էջ 174
19. ↑  Василенко, 2003, էջ 174: «Сложность алгоритма»
20. ↑  Лидл, 1988, Подробнее о методе, էջ 201
21. ↑  Ван дер Варден, 1976, О результанте, էջ 124
22. ↑  Лидл, 1988, Подробнее о методе, էջ 206
23. ↑  *Kaltofen E, Lobo A.* Factoring high-degree polynomials by the black box Berlekamp algorithm(անգլ.) // *Proceedings of the international symposium on Symbolic and algebraic computation (ISSAC ’94)*. — N. Y.: ACM Press, 1994. — С. 90—98. — ISBN 0-89791-638-7. — doi:10.1145/190347.190371
24. ↑  «Catalogue of GP/PARI Functions: Arithmetic functions». Արխիվացված է օրիգինալից 2007 թ․ մարտի 11-ին. Վերցված է 2017 թ․ հոկտեմբերի 31-ին.

Գրականություն
-------------

* Berlekamp, Elwyn R. (1967). «Factoring Polynomials Over Finite Fields». *Bell System Technical Journal*. **46**: 1853–1859. MR 0219231. BSTJ Later republished in: Berlekamp, Elwyn R. (1968). *Algebraic Coding Theory*. McGraw Hill. ISBN 0-89412-063-8.
* *Василенко О. Н.* Теоретико-числовые алгоритмы в криптографии. — М.: МЦНМО, 2003. — 328 с. — ISBN 5-94057-103-4
* *Лидл Р. Нидеррайтер Г.* Конечные поля = Finite Fields / Под ред. В. И. Нечаева. — 1-е изд. — М.: Мир, 1988. — Т. 1. — 430 с. — ISBN 5-03-000065-8
* *Ван дер Варден Б.Л.* Алгебра. — M.: Наука, 1976. — 646 с.

|  |  |  |
| --- | --- | --- |
| 

|  |  |
| --- | --- |
|  ⛭   Չափորոշչային վերահսկողություն | Microsoft: 92511750 |

 |