From 970ec196eecbfc29cdefcbaf13cd05da3ee16a2f Mon Sep 17 00:00:00 2001 From: Arity-T Date: Mon, 31 Mar 2025 19:00:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B0=D0=BB=D0=B3=D0=BE=D1=80=D0=B8=D1=82=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- report/img/first-step.png | Bin 0 -> 4462 bytes report/img/fon.png | Bin 0 -> 2103 bytes report/img/last-step.png | Bin 0 -> 11157 bytes report/img/reverse.png | Bin 0 -> 11583 bytes report/img/third-step.png | Bin 0 -> 5042 bytes report/report.tex | 46 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 46 insertions(+) create mode 100644 report/img/first-step.png create mode 100644 report/img/fon.png create mode 100644 report/img/last-step.png create mode 100644 report/img/reverse.png create mode 100644 report/img/third-step.png diff --git a/report/img/first-step.png b/report/img/first-step.png new file mode 100644 index 0000000000000000000000000000000000000000..0d253da193b1a1b1b419fb754dc5eeb3e74a8ee2 GIT binary patch literal 4462 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 YNG_0Ror7)xU!VwJ(2mv&OW(x*1L_`dPXGV_ literal 0 HcmV?d00001 diff --git a/report/img/fon.png b/report/img/fon.png new file mode 100644 index 0000000000000000000000000000000000000000..3cb0786fd651c53f5cff6c95e4cff8f9395a37ef GIT binary patch literal 2103 zcmcIlX;9PG7LTn!ij63nHbHqNN)RI9Q6RE4k2QdXCE5pwY#N{%i7c{1c$O#w2$T?$ z0+wZ1#V4x*0VEZCP)G=nlwf2VNemhYsF(l(N&oFkXFC1bz7OY~Idf;uJ#&7`&Gqxa zLA0UTAP@-R<>^KMaw8BA!J5E%{I<0gkoF`Ha4w)`p3xhi*cBKV)y~0OGn%fQir_7-Jk7$c&C=igGXWL z1XBYAe#ri#%+9V_gb!HSF zHG{#Rxx2fMJbB`Tc{hG<=3+LB;m38d+ny~!7c4}aIxWQI{J zuL#aVVX(U9W*&Y=wz5KRZ@0P<6LZ(})TuGewD@?qzrL5ZcQXb#@BzJ9+=RM7VIltn2zh z=Ni;7jJ8SppczK{k6Q1hi_IsuuI|;I0_!&&G(C^-YxJn{EBIG6^eLb_0`0q$J$yXV0kRn~D!_&Xtyx(MCo_soA(3%${zskCh{;nqvC1p(!Hre#;q2rSVif;CA#d?sUgk05qFH8e7nyZGEDG~P zM7}ov)Ws53Z*FF`(vV8*d|p<~s@iwR!V_Q-TKnb8!5pPHF+F_-zhkvLjJ=cj593T_ z#XZjc^;L!JZQ$ZsmPMuG=FiP9_dm_(E5m-dI?EE9Q0Dql1*#<@BO}Qf-5Y-+5Pxj- zxRK3XAa|wjY_^5GND~i108qv&vCQc43K2g2SYOIJ7uBOJ+?J??g1V0duV-yYunq5- z*o;$CciD6f6Wt3eKtuYNG%b-$Js>Ym^ZB%keJPV&-IxKvZf>TwGhGKNua> zPiIpUbr(;fWA)go-J*c^?>SklnpO(~wO{lvN2HPvG&xop9p_ODON(MeP|^*r{3f`g zQ5q7Js-H+CKF5Kzw6v7T<6JKN^-9Q~roFwrS!!x(=L~?y3 zdR==vAHRE*L@N3CF|8M2O$|hu)Ya7`aT4eZM%1THc6P<4c`J-pem=gwWBmj#JU&s6 z&1H?*Q0>()Y3TRc;j1`sb#Th|&Lodl2)U7x5~!`MUE9(!-fz0Mqnr{E;VhL(XP>nc z6hOX!!AiEaQb%~aq;u^3Iy!at?|W%#YSuP2jRGT($&8^PkKPAgQF%O{lji0nLgBw{ lQS1T;r{#^P_1;<4p$@gf;<`va3w-tb|2-k_RzyYV78GTK)aVpO_s9`S!(fzzqymx>A|>71h=Ig_fgp%6V%gIS2cZZw^cBcwyaSbJMQaJU?uI8`QZ&s zh|L2jgBtcz@i@i&L5;;d%A6PV4PWRWaSli`hWHs8p23lm1#abtGsC}=Om4JIRGmpw zH_!*lh{$FY>u0WxKWUua2l$qbvu85i`rE#Ye7R|- ziV*JZlchT4>=!K2FVr;CiAwQ@zqnu2or_L$-OiDBRp*|TA`tCKM%F6UYKW@m5^gdd z)F$kcV}F>96r{Jz8F`>b4_5WwbGZ|Nw-wm;CB&s4`-Jf~6(v&beGPchJb zDq7#^yN5u73843m-(NZTrWPqi93JObKb@AiMorg&Jlx1ksf>IQ@ox9T_~c!44E^Z9 z+!ql9gFcegamRbjZGz-93|${69TyEUm_O7(1#XtT-*lu9iOLmR!2WDFqeuZfVsZ(2|Z{E#bTIN$KQ zi@)H{Y%j)UQ25uyXH7t(1-A%XN>|%WC4D4wT+-G`<~);xt!J*~-sTK$zU>$QJdPdC zEq~2)_4WSYvNsxc*Q&xmZoS$Ag@4Tw%>C-O zE3y4_1E&d1N?^{D!WS3*3y#9R7-4MsAvaP6lJ3rwVAtI2v78}f`L(Sqt{}3z>`UNA z#ch39dkL}x`7?o?=B3bs4=iY0WhQk#yB!2AkjdBy#hWLVg50ue)oQ%gFooP?9uvZ z&bU_(<42gr(6qJw@S^DpCFM^StCEk^5QkSi-PPJRHXRuCtz+?Z6-MmN2>pFFD?(M) zJzI6A_JIZ=n7-3(WcFiW_;}Gg8#ukseAtCkg7C?nQtyo8^aj&ao!ZzPDw<)Br!i} zx!k5eHB3p?FLFKCu2?oD%h*U=HDSdj&G6!qODL@{@r1_3!hA2D4_$LnOFl`VSUo$w zD1FH{<@y5o=oW>G^WeCI>p1tccxg~&*z9i+U{eN#t9IYb#y#6>=9X%D(Q{a6EE^(R zW|`;>%5}$Xx6AapjqW#(U_(>69CFn)Hc~xSnCnE{`<{n8)<}S)35mxBMa<01yg4k6 zd#@B?^65uyW{gf>vZpWVb%6{2y5HBUn0YENRw$_9@?I+JT08 zZKsJ)#{=H=F1OKmm)c9Dv%&AvimuNY<%K^eD`|G9w}V=4ov(gcs~A`! zkuCAC=y?SnDbtqqbLrf--UsI%rBlSCH8p&_1Wvn2@EWjEyyKi~e; zBpWFBf~RL-%$#n@a?Md-(dSUNlcnJClT3fGEy!v9FJtN8jLX0$n@~!0{DMihwT{-k8R1=!x;OhOJ9H7f-hMuV}q3GHjmPGe-Tw2?|y=@lWr7pb9EeM%5y0R;&bR-xq~ z>HhDD=6C7B{`YI!Qh^ncz8UCO0d7#TIOkVhO|9p%X2{+LZ8=Xz^d*MDvv0PP1 z)#dz-@SXY%B%%3LuP{!3UCt0=ZRjirYB!r?)StKu({92JUBv#k_QNIA6r3MvL60~f zV9xkWUR`>4@he!XO$U-1Mre}F^nkm^YUYmUmy2sI$x=8cEIM?ix0(#iUXh=>Y4_xlsJ^3ZZ%*k?+F~Ym+sIrP zf%05n+X@70$E=AHcypi7fMnmyR@$iPZ{N{ zw7$~Xcil;H=+b2@5kQX)Q3;|T(ZfmvXOD8fWgEe4&)```z4oy6TIT<4w>%c*4X3mf z($>gsZf^d^(yxs-u;Z0KkH~k5)tV|-_}L44V}}CpOb?5uKY3f#)vZ)4J&+1@KFgr3 z%nXP{spwCo^ibU``xorRJGQdIIKNZZdq~0M00!Vk7@_XW{ zhfz=4lik8x+b?fhE1PtilR9q0c_y^v_60c`?>zjS%f3{TknPQvmAtU94|(Py=#c0a z#8T;_fIZZ}O9ucuG`x@`g!g)n3=BwFq@k+x=O1N*R|Zefuy}a;`>P?C^z^EyjC2bl zkXHTWR%*gvZ#9fO){3W-nGhJ>{aFM@b1NvpWtnT5E2#6VF=E9qZP-s5c6uvZ(qmXT zX=wQIAKF20(XRormB&3n3}HQ4amK+*qFCeozWFTHyMy+L^rN3y_>SB}bB0r0)&KHb z*k3oW1GwR)-PlL3`l5t`Skk7uf?gp<4}%&_A3kX|mP9khvf(ZCEy+z|CE4lg!`ynQ zKmTS8?!=NjS=S7bPxwLN#2iULJV;d~VYM}-2`=5AEo%Vg6XawUEV?(Jfuh4&HHfCT zpb1N^sYTr0StA#stYe=;Qi~d$)_0!~9p)+nP{ab*AjS2eoaPGP&PhexrXcaT{Uy(R za6i*xMV2%EM-7cZIGNv6pj+tAo=O>+Wwnk**sOZ+wjGB#Roj!G*i=u8OwL4*F3Mtl zP8fDNtTGx<&F+{qWRX<#Lw`tGanpP3?~p0|9%(|5^QR?6kVcQ|@ymxaGv!kkPI*rS ztcc4Rd5f=Ey~ILp>-%E-W_x?il@0p0b2>~uQ&@p~v{NJ5huT&?!);rn02VD&ILf>s zoyV&w0a9j$@7C%B~tGyZUuhdbTLZ5DrmVUp z{6*IZ5DWh8x+_?RBr%Y33p70%HFq11>$_Z`gk1^PY&WfSrsf;QR&RTQYLDEtte2V(bgr}Hjck6fG z|L%jq8=PiZv30DOMKhI)p`F}>0Wg>v{obFm!E{5Z;XM@Ge_Kcv0y?-Zl3wgb34+M?<0+$O+|en68DcWQ2=_Dp>>rbTcfV_O zI93fL513?(efV~v2tlRd>Q`8!U(lf$%TCT%%J!a>NQE}BT}8$;29E3Az|moq3=v-a z9%_idk9d(3X+ntFsf`y(Fu}cg;PXize?0)4YJY?`p;EZ0_d+qX!?npy>L7Sg1OV|8 zOv7V!Eo84XTw`A(GbdE37NfvQR&I6)&Z2gfdJ-{5!0UOY zFYq7GVf16Azpj7@DbBqUIkMgdVPz%e_AO_6Y6z(@Y4f^R(n8Wf4yY|nh#ew9TT7wEYRjepS6>5D(yV7_BJBgKQWJ{!*eylu$Q6T+&}ZMqds4w`}$;#vr77 z=F?Pt%5&+6HtvW(i4X1E^Bpu{vs6maPk)xvWnQlw>iJOnl@DM0bt>yPaqV?VyB1_z z4tC=IbB$ckO~?OUwcj@iKGF~sY~iUs;>r<)4Z}3jjw#)5{9cO$txWUUvabKnzTgKS zV&-R6ray7K{fM`Yt=HAGb7z#>+uJo%ZpIHRlsg%h#u-ho;w?B#;R*M3%dyE#KLX)W zO)76RA1nx4TK{yu55r)vbLb06$1tT##;y4z_IbWkC#gu5&>*zgz*~d+%}E2-Q<1kl z{XYalb*@a@>_V%x#F|x4r zcs}8(T(1X(eeVPX8~)sZX!@10w9^ojbX9kR*GAmGJ*`~nw*O6|r=iiG{tH%9Z4NPM zrvSIGa^TLp|0#)(i_rNrmQqxEQmmZJp^-KGgCw+;a3vu8|>W5KNP-GJh#Xcx@8iyRGV4PZ;RC1c(vmoNHnX z=+v#RVbK8;;r05M5b_u1s94PTm=QbE!?zGAokp?MJ`>;FCh-7`#%$W%_Q#{P_zYc2 z_kIQ(`6Ey5EURKdzn#$ey5ULDKVYjfGq!RMxbc$FVyjJP&68Ve-Z-s{f0I<^nZ5 zEEf_yX8DoDN4RZ**^zlVI3x!9gbX{)yh->5pwJyC-_pw1;T&8 zK8<`MXf*#H;{0eO37rCj6rF)Es~+D!d*dgW$`FxZMG+@;2|wvX7r>Q3nC#bn@zNac zWB-j2Jntwn%?^^B*E@HO74RF4q90AF#orn6N4Wh8v9S(q9-diSE86|DJHGp+;^UD7 zx4q{!nBdYA&TPmEkebyaX+r*zNMc23C^^6tvGSD6NNuNODS}JKEHE65WJ0@mepKOYoLEBL zXo%w+lRyclaFU8by+)~}M-JQ?w|#Caxl?YA8f<8TPS$T;BV4HZP^x&CS!^Lc`Ey^` z&wS@vhnhDDbhPH+x2^q;j19J~Tfm~D2Q_#idHPGcHFh8NC8pFqXLZV&BDDo{?L*IK(VTrK^$~nwi`4%UToUKt<3}*Oj4}X6aiATvkF`Hm`CaS6LmI z1n{@xY~bp7K(;~&cc_u*JUzo)2^1rCyehW- zcfzNxZtn};a2FDykXh~3?y#fE)B;U$P-IhntvLLzFZyQG2Xug9GvamA>Pp&9X5gSk zMj+Ffi}C}WXzvf^`rjXp@BKAOtv_q-^|NDy3*aYqCzB;u$r)Q)MSDwC&p#LBjy%ir zTQab_ip3g?-k`_=AOKS`dFB^+oLT*o&NEVeEUm@D z0Q<$ffh^sneL^1Q`dqcW$+(FU+e1FAykW6@`ZjW@F#AAJWYh7NYr&XhsCm}O+5ZNcy@E2=ZE2YGwvM1!&$!qu<6OtX{|2~NxZXCG1%W#E*?}Q-^*Y|ub zCbwZnEz#wNS-}P8UoQEIDeuxkNFp&Xlws6uv^;0SEoWS20JFB}z&h^*@R`)eJ%13$ zP!{IA%g~SE;mP&ge_f1RD=efbJ~7LmFLq2EivK`vG)g_pTaJV#=pP8+$ySo4g$Wrk z!p=JvqxL@*-Ex*KR|J5e58=HuAZad~TgafM(nN@%6}!)8jdt2et$aGE3hZ7bLv~{G zhR{t!V$(2!6fNoF2;>3StATuZ1{Dm%DS;xb5K z>3BK`?N6K9gH>Lzx?~B}+Rtg}nwcLJ=Ux?RD>+=3X~`u=i}~Oe#T)bE)JExKDlRK1 zWdp3sggmFRFJrG-i{xWiS2rmN!7*^K6I$G=c3E$?cV0Mw;|6#LEU&0^Ma)trO+V^A!H`M6*<+X`G=nmRe&3 z!O}}}cD&FBc(n@3%A(9gcEx7&YYh!dmz?Wu6hRF`Ta2n|h(cg0ZB*keENZgyGks(g%ISLKfzD4ns*MGd4H9`s<0D@G;tpy0ja}&&5+QFZw0oYISJu` z5Lf!OySK$gaH>gt*XZ77`35HymAhYmAiYh94Fs)Z5JwP{=;Zg*#6ZV6eGIRa4^q3g z=pk%HB1KZjf_}>ctvK6!T#ALFZ)0@g&8(>Ncyl=qGu=3rox4_L2Cef zt32X~d?1+S`1(Mxzzu#N!zfQbiJqx|;iBh2l{QsKO1x;m5Y)np!JQGuGr;Oq|WxUCUog6)V; z&FPfUsVA0eoII6?s3@TMjM;^z%rGiiHRoJ6gcQ*==>C@L7Zk?bj^rFgpY@g?9k%TX z*w)x~mgsSA=NC&Tvpf5%*^jsMymOY{3d!{JOa5g0_@xq}e!{8a+G+}}ZGf@fA!!f`!`Na|g)@`I) z#0VLkP@{C}R3^EunR~}~i^Fd`+-SPy-eTw^{=s1jtxOeOZyMYjV#Wbr@c|m5-lIr6 zhEVEZ-AI3wEAgvUqGc{rSx_}I5YAIL^}->)_cP0#r(`RPy{wt+@L$LKjo$-quQ>fH zx)?DjIa9H>2*6PqD^=!q`8Ul@3RP?OCXZd3t2~#xw}%E@3X+SB)H0#X6D#6T>l@=g ztpGDzq7M#u|E5Z{&gv3{a+gP#gkP!$D<;R=;BH;`@pnd~kf@@RY`<9PAXgs!sAZ@l zJy3_OttAs()YEry#*)u|Y+{uw13g18kPD}S@4T0$%K>@vx-ios1vJjVlHq-CSOc%; zQV+y2Ok?8g*_(+6m$K=03my1pu_k|qw84En{WSwbmJmDVXt}i2V-~zqm>0w7tZXPE z2%ee993HDGd&kEqS4_1BJ!@2*)V3#)gc`_Z)y9vkZ2p%YWl*uf8_xxx9q;x5mW__e z%U=Y$3^6B{R== z8rz+xYB$$x?r2Ds1>Bo1EL!p^t?_i>ctC-+7oICr3`0OHmZP+)<5PHrNev*y)Aw^` z?L^ZDW^%kf)LKGJqxWvkwQLm<^6p)4-y;qU(qfr1~&fW4A`4i->C-Mg@^X$ukP7))n9M zsS%{99x~6-VZhgF0sco(i{fPE;G*DnnRiF3E#jVISM+n|@7Z*zI6*Y;6eTw?z-0!Y zc&2T9=*MO)$`px0zY_k+Iiu6i9HI5=mNwA5ErNy<<-514cZ9J6ZJfIdLGV`nP;Ru< z4-CQdpmDHAb(QOK`&D3Y!n8N360#d~!4(826XaQ)c-UWR zR@3T(qkw~2`R3|gvQZB)7LeLixAq$j0_fq!ZyXE1YdHcNGbgb#1vOI8IBni%IEzFY z=_Z&9lovni9u9sg!jnBRxqGJtO$K+*V=_yVeg$(b=>FMGtPH<#NB0RyT!UQjTn@ds z>@Xo8eiB^iwmSCJW5eh)=^ZIMV#Z8ZMf$Axss6s!1D4>E5|d} zE}dAx*QjxF=jfdfbR~bL^b|x3KLXoMZF~3+sH6o469- zqHF_~1C13o)glTP1^z#-`%{TiyQ3%H|zg$l_0&Pdfi{n#p~ zJjeUP#*n#3?jDcFt6A`ISKo01VA<2aux4Iz1}i?vW`YE00-00~=|uit`M5K3_;sEf zKlK~Xq_w<5PR0I;#;TJpeE{gob$o&sAn>>59EXX-u;)YZ7r~h06pFs6k#I?Z%Y)oY zju4+jjI7y~vcm^8;xoY4hrCJhqM)Dy9X_4#m#S((aBezw$L^E^?+N*)vM1|q{P)>` zymun|m4(zfLv*J+_G@#@;<`R&&PdQ@^4RjSS;U|$|E?~eGB~^e>7aC2qklfz^ztY= zO5jnt=$sqSNl;VvWUf;9*TUx?Vc+J-{}JvBX?lWfbq2RZzP{n{iM?_BmNq0hmKS>% z)two`7o=H=`TV^T|11yQ7A)b{^wwegu#4F2>-^$(tPwkGNy~BjgE*Z!F+zY)ny1D2 z2=RlTU9`IgD-rklx~hkQBIivhEysp(P_(3DF}2jI>7zx!A+};!yHT9A=M3lWjCm~x zgJ0vt@P_15?5r9pM-B~98OFizq`GJ}1MfGBeBa4!CM;>(vkrxZji5@+wvtNJ+t;_L zFmc6Hm?DQQ)n`FIMzEq|mRo5jusKXwTuKj#-lhht>^N}>r|JdYhYe!?@CUSj1o2(d z*Vzg$_9ccKq$l3V2VsN}wX?#Qb6#{LuhcfR)3FbZlWFX4hEz4}y6}=-Z%a+ZJCuso zkniIzBQ~94P7dUoyl@Qt$v~!f2kLX za{Lys^uTL!f?w=s{A8!)QtO9!*)PJJ9aM1Ra>f$#bppeGsZi)MbR@7+3RtQ5rcf2S zJ9O6_-mM+bFz^ftjxX`{13^mHm0YDPoHt5Jp6>eicded+Tu?p$3(8QlMn6ilnM=Jt zi1ly!30(2-{_iI6LuY1if?s&QZB<TOsp?u1-gX zX^{e#<@pl#hVu2ipnzcZ)0AYuCFa`eLmNE3#Dqbg%S1SNYeM6{H0E{eDg&F1yL3ZE8H$Vwab36H!9*P}&2fxYFcl}a*0 zkou`)$!QW^DU8t_N^I_CN>IY~q-7;i6AL#81_eOp*$sHw$GBgSOPO1q$(Usp6iIDWea)&-rNVZ z(t7Pw&(v%cCyxYsSktDS*n5+`adu+($IlsYAC{;Ku@?AAt%6#mW{hu&7cyUIx)1OJ z-3=n)rTyHpLyaO07BAUWAHhj@Kl`26E5qe^hgxPfVK;CmU*CHs$1nii`W)G4sUzw4 zB~=dVj7}aiy-+>JiTmpEF;9+Un$U++^y>IVV=UX0>SEMdZez+;>aDsG zlTC7ee>D5G!VFb}>5hV8NfcI_%O8o&Lh*LPJ9v>~YJ{r)PiHc)*&rgr;#*X;*8S1a zJ`Tg#Mx)o|tx|@}&8GJ$3)tKenbnuHbTP?%!ti7$RP)jd!#?IPd#^L@mj#}EK+%uV zhpv>on*rwsWfFJ5Xz~OVFVaIsx(E+6gxau#pKmLvCG8KS0i9^VeHh2Haa6h%!f4EE z0Ip~Vz-SION&Wp^K&lKTh?}y-fzip=`?WCpHx{nIou0wfX8S^VNnLY>kM62D=gc%Z z)u$m#Ie%xY6H2>3Dn*F&H~Vh~y<(dbS@#%za_nM31omwVs?}8>C6fN%Nt!zR<9P^> zLtnt&_0Gcl1PB^`YF;<1_$n5D@_&`3|Lf!$ayZ*m(xBG=%qBKh9k&HDm%~1sePj!L zO(G1b+|&17Gzm6(pS9?h=5Y<~9vY8LVS2x!_!LbZE=G8c-xdWzz)X-yTrRt(aqRG- zU?RY<8G06dMInY5mieIpdK(ioB>DmRtI0kEp{5M+wJ?_LpQGxMzBj$j*SxZQ9F`=3 z1{J4Dt^T@!#Za`+56Ds1KypZ2VyA#%9W)rgBP_J+GWyZ4YSGRV>grly&w3LJE1EDK zs{a1eWc|)Z`&===t~9?2I$-Vlrgzm>4!dNY^&;h}{~uSYwcxwH(|_%O1Sr+xvH_(T z>sk;2^;nq3-&`>Exv2Q-4s^ScD1utLcA0GcfAeb!)dly0^s#Mcv1SF(XG^9HF;K64 I{50zS0il%>KL7v# literal 0 HcmV?d00001 diff --git a/report/img/reverse.png b/report/img/reverse.png new file mode 100644 index 0000000000000000000000000000000000000000..78812ac335262ae68a09b1bfaffd840a36996756 GIT binary patch literal 11583 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 Ogo7Q?_95Q?;{O1?AFho6 literal 0 HcmV?d00001 diff --git a/report/report.tex b/report/report.tex index 273ab85..44ce81e 100644 --- a/report/report.tex +++ b/report/report.tex @@ -492,6 +492,52 @@ K40. Ниже приведены вычислительные возможнос \end{itemize} +\newpage +\section{Алгоритм решения задачи} +Для решения задачи используется волновой алгоритм, также известный как алгоритм Ли. Алгоритм состоит из двух частей. В первой части от начальной точки к конечной распространяется волна. Во второй выполняется обратный ход, в процессе которого из ячеек волны формируется путь. + +Волна, идущая от начальной к конечной точке, на каждом шаге первой части алгоритма пополняется свободными ячейками, которые, во-первых, еще не принадлежат волне, и, во-вторых, являются соседями ячеек, попавших в волну на предыдущем шаге. Непроходимые ячейки просто игнорируются. Новые ячейки волны заполняются минимальным значением соседской клетки, которая уже принадлежит волне, увеличенным на единицу. Начальная клетка заполняется нулём и является стартовой для распространения волны. Для определения соседних ячеек используется окрестность фон Неймана (Рис.~\ref{fig:fon}). + +\begin{figure}[h!] + \centering + \includegraphics[width=0.2\linewidth]{img/fon.png} + \caption{Окрестность фон Неймана.} + \label{fig:fon} +\end{figure} + +На Рис.~\ref{fig:first-step}-\ref{fig:last-step} представлены иллюстрации работы первой части алгоритма. + +\begin{figure}[h!] + \centering + \includegraphics[width=0.45\linewidth]{img/first-step.png} + \caption{Первый шаг распространения волны.} + \label{fig:first-step} +\end{figure} + +\begin{figure}[h!] + \centering + \includegraphics[width=0.45\linewidth]{img/third-step.png} + \caption{Третий шаг распространения волны.} + \label{fig:third-step} +\end{figure} + +\begin{figure}[h!] + \centering + \includegraphics[width=0.45\linewidth]{img/last-step.png} + \caption{Последний шаг распространения волны.} + \label{fig:last-step} +\end{figure} + +Восстановление пути происходит в обратном направлении: при выборе ячейки от финишной ячейки к стартовой на каждом шаге выбирается ячейка со значением на единицу меньше текущей ячейки (Рис.~\ref{fig:reverse}). + +\begin{figure}[h!] + \centering + \includegraphics[width=0.45\linewidth]{img/reverse.png} + \caption{Восстановление пути.} + \label{fig:reverse} +\end{figure} + +Волновой алгоритм либо находит кратчайший путь от начальной к конечной точке, либо информирует о неудаче, если путь к конечной точке блокируется препятствиями. \newpage