آلة لاحقة

في علم الحاسوب ، تُعدّ آلة اللواحق بنية بيانات فعّالة لتمثيل فهرس السلسلة الفرعية لسلسلة نصية معينة، مما يسمح بتخزين ومعالجة واسترجاع معلومات مضغوطة حول جميع سلاسلها الفرعية .S{\displaystyle S}هو أصغر رسم بياني موجه غير دوري مع رأس ابتدائي مخصص ومجموعة من الرؤوس "النهائية"، بحيث تمثل المسارات من الرأس الابتدائي إلى الرؤوس النهائية لواحق السلسلة.

في نظرية الأوتوماتا ، تُعرَّف أوتوماتا اللواحق بأنها أصغر أوتوماتا جزئية حتمية محدودة تتعرف على مجموعة لواحق سلسلة معينة.S=s1s2...sن{\displaystyle S=s_{1}s_{2}\dots s_{n}}. يُطلق على الرسم البياني للحالة الخاص بآلة لاحقة اسم الرسم البياني للكلمة الموجهة غير الدورية (DAWG)، وهو مصطلح يستخدم أحيانًا أيضًا لأي آلة حالة محدودة حتمية غير دورية .

تم تقديم آلات اللواحق في عام 1983 من قبل مجموعة من العلماء من جامعة دنفر وجامعة كولورادو بولدر . اقترحوا خوارزمية خطية زمنية عبر الإنترنت لإنشائها، وأظهروا أن آلة اللواحق لسلسلةS{\displaystyle S}يحتوي على طول لا يقل عن حرفين، وله على الأكثر2|S|-1{\textstyle 2|S|-1} الولايات وعلى الأكثر3|S|-4{\textstyle 3|S|-4}الانتقالات. وقد أظهرت أعمال أخرى وجود صلة وثيقة بين آلات اللواحق وأشجار اللواحق ، وحددت العديد من التعميمات لآلات اللواحق، مثل آلة اللواحق المضغوطة التي تم الحصول عليها عن طريق ضغط العقد ذات القوس الخارج الواحد.

توفر آلات اللواحق حلولاً فعالة لمشاكل مثل البحث عن السلاسل الفرعية وحساب أكبر سلسلة فرعية مشتركة بين سلسلتين أو أكثر.

تاريخ

أنسيلم بلومر مع رسم تخطيطي لـ CDAWG المعمم للسلاسل ababc و abcab

طُرح مفهوم آلة اللواحق في عام 1983 [ 1 ] من قِبل مجموعة من العلماء من جامعة دنفر وجامعة كولورادو بولدر، ضمت أنسيلم بلومر، وجانيت بلومر، وأندريه إهرنفويشت ، وديفيد هاوسلر ، وروس ماكونيل، على الرغم من أن مفاهيم مشابهة دُرست سابقًا إلى جانب أشجار اللواحق في أعمال بيتر واينر [ 2 ] ، وفون برات [ 3 ] ، وأناتول سليسينكو [ 4 ] . في عملهم الأولي، عرض بلومر وزملاؤه آلة لواحق مصممة للسلسلة النصيةS{\displaystyle S}طول أكبر من1{\displaystyle 1}لديه على الأكثر2|S|-1{\displaystyle 2|S|-1}الولايات وعلى الأكثر3|S|-4{\displaystyle 3|S|-4}[ 5 ] الانتقالات، واقترح خوارزمية خطية لبناء الآلات.

في عام 1983، أثبت كل من مو-تيان تشين وجويل سيفراس بشكل مستقل أن خوارزمية بناء شجرة اللواحق لـ وينر لعام 1973 [ 2 ] أثناء بناء شجرة لواحق للسلسلةS{\displaystyle S}يقوم بإنشاء آلة لاحقة للسلسلة المعكوسةSR{\textstyle S^{R}}كبنية مساعدة. [ 6 ] في عام 1987، طبق بلومر وآخرون تقنية الضغط المستخدمة في أشجار اللواحق على آلة اللواحق، وابتكروا آلة اللواحق المضغوطة، والتي تُسمى أيضًا الرسم البياني للكلمات الموجهة غير الدورية المضغوطة (CDAWG). [ 7 ] في عام 1997، طور ماكسيم كروشيمور ورينو فيرين خوارزمية خطية لإنشاء CDAWG مباشر. [ 1 ] في عام 2001، طور شونسوكي إينيناغا وآخرون خوارزمية لإنشاء CDAWG لمجموعة من الكلمات مُعطاة بواسطة شجرة بحث . [ 8 ]

التعريفات

عادة عند الحديث عن آلات اللواحق والمفاهيم ذات الصلة، يتم استخدام بعض المفاهيم من نظرية اللغة الرسمية ونظرية الآلات ، على وجه الخصوص: [ 9 ]

  • "الأبجدية" هي مجموعة منتهيةΣ{\displaystyle \Sigma }والتي تُستخدم لتكوين الكلمات. وتسمى عناصرها "الحروف"؛
  • "الكلمة" عبارة عن سلسلة محدودة من الأحرفω=ω1ω2...ωن{\displaystyle \omega =\omega _{1}\omega _{2}\dots \omega _{n}}. "طول" الكلمةω{\displaystyle \omega }يُشار إليه بـ|ω|=ن{\displaystyle |\omega |=n}؛
  • " اللغة الرسمية " هي مجموعة من الكلمات على أبجدية معينة؛
  • يُشار إلى "لغة جميع الكلمات" على النحو التالي:Σ*{\displaystyle \Sigma ^{*}}(حيث يرمز الرمز "*" إلى نجمة كلين )، ويُشار إلى "الكلمة الفارغة" (الكلمة التي طولها صفر) بالرمزε{\displaystyle \varepsilon }؛
  • " تسلسل الكلمات"α=α1α2...αن{\displaystyle \alpha =\alpha _{1}\alpha _{2}\dots \alpha _{n}}وβ=β1β2...βم{\displaystyle \beta =\beta _{1}\beta _{2}\dots \beta _{m}}يُشار إليه بـαβ{\displaystyle \alpha \cdot \beta }أوαβ{\displaystyle \alpha \beta }ويتوافق مع الكلمة التي يتم الحصول عليها عن طريق كتابةβ{\displaystyle \beta }إلى يمينα{\displaystyle \alpha }، إنه،αβ=α1α2...αنβ1β2...βم{\displaystyle \alpha \beta =\alpha _{1}\alpha _{2}\dots \alpha _{n}\beta _{1}\beta _{2}\dots \beta _{m}}؛
  • "تسلسل اللغات"أ{\displaystyle A}وب{\displaystyle B}يُشار إليه بـأب{\displaystyle A\cdot B}أوأب{\displaystyle AB}ويتوافق مع مجموعة عمليات الربط الثنائية.أب={αβ:αأ،βب}{\displaystyle AB=\{\alpha \beta :\alpha \in A,\beta \in B\}} ;
  • إذا كانت الكلمةωΣ*{\displaystyle \omega \in \Sigma ^{*}}قد يتم تمثيلها على النحو التاليω=αγβ{\displaystyle \omega =\alpha \gamma \beta }، أينα،β،γΣ*{\displaystyle \alpha ,\beta ,\gamma \in \Sigma ^{*}}ثم الكلماتα{\displaystyle \alpha }،β{\displaystyle \beta }وγ{\displaystyle \gamma }تُسمى هذه الأجزاء "بادئة" و"لاحقة" و" كلمة فرعية " (سلسلة فرعية) من الكلمةω{\displaystyle \omega }وبالمثل؛
  • لوتي=تي1...تين{\displaystyle T=T_{1}\dots T_{n}}وتيلتيل+1...تير=S{\displaystyle T_{l}T_{l+1}\dots T_{r}=S}(مع1لرن{\displaystyle 1\leq l\leq r\leq n}) ثمS{\displaystyle S}يقال إنها "تحدث" فيتي{\displaystyle T}ككلمة فرعية. هنال{\displaystyle l}ور{\displaystyle r}تُسمى هذه المواقع بمواقع حدوث اليسار واليمين.S{\displaystyle S}فيتي{\displaystyle T}وبالمثل.

بنية الأوتوماتون

بصورة رسمية، يتم تحديد الأوتوماتون المحدود الحتمي بواسطة مجموعة من خمسة عناصرأ=(Σ،سؤال،q0،F،دلتا){\displaystyle {\mathcal {A}}=(\Sigma ,Q,q_{0},F,\delta )}، حيث: [ 10 ]

  • Σ{\displaystyle \Sigma }هي "أبجدية" تُستخدم لتكوين الكلمات،
  • سؤال{\displaystyle Q}هي مجموعة من " حالات " الآلة،
  • q0سؤال{\displaystyle q_{0}\in Q}هي حالة "ابتدائية" للآلة،
  • Fسؤال{\displaystyle F\subset Q}هي مجموعة من الحالات "النهائية" للآلة،
  • دلتا:سؤال×Σسؤال{\displaystyle \delta :Q\times \Sigma \mapsto Q}هي دالة "انتقال" جزئية للآلة، بحيثدلتا(q،σ){\displaystyle \delta (q,\sigma )}لqسؤال{\displaystyle q\in Q}وσΣ{\displaystyle \sigma \in \Sigma }إما أن يكون غير مُعرَّف أو يُعرِّف انتقالًا منq{\displaystyle q}شخصية مفرطةσ{\displaystyle \sigma }.

في أغلب الأحيان، يتم تمثيل الآلة المحدودة الحتمية كرسم بياني موجه ("مخطط") بحيث: [ 10 ]

  • مجموعة رؤوس الرسم البياني تتوافق مع حالة الحالاتسؤال{\displaystyle Q}،
  • يحتوي الرسم البياني على رأس مميز محدد يتوافق مع الحالة الأوليةq0{\displaystyle q_{0}}،
  • يحتوي الرسم البياني على عدة رؤوس مميزة تتوافق مع مجموعة الحالات النهائيةF{\displaystyle F}،
  • مجموعة أقواس الرسم البياني تتوافق مع مجموعة الانتقالاتدلتا{\displaystyle \delta }،
  • على وجه التحديد، كل انتقالدلتا(q1،σ)=q2{\textstyle \delta (q_{1},\sigma )=q_{2}}يتم تمثيلها بقوس منq1{\displaystyle q_{1}}لq2{\displaystyle q_{2}}مُعلَّم بالحرفσ{\displaystyle \sigma }ويمكن الإشارة إلى هذا الانتقال أيضًا باسمq1σq2{\textstyle q_{1}{\begin{smallmatrix}{\sigma }\\[-5pt]{\longrightarrow }\end{smallmatrix}}q_{2}}.

من حيث مخططها، يتعرف الجهاز الآلي على الكلمةω=ω1ω2...ωم{\displaystyle \omega =\omega _{1}\omega _{2}\dots \omega _{m}}فقط إذا كان هناك مسار من الرأس الأوليq0{\displaystyle q_{0}}إلى رأس نهائي ماqF{\displaystyle q\in F}بحيث يشكل تسلسل الأحرف على هذا المسارω{\displaystyle \omega }تشكل مجموعة الكلمات التي يتعرف عليها جهاز آلي لغةً مُعدّة ليتعرف عليها هذا الجهاز. وبناءً على ذلك، فإن اللغة التي يتعرف عليها جهاز آلي ذو لاحقة هي لغة مُحددة.S{\displaystyle S}هي لغة لواحقها (التي قد تكون فارغة). [ 9 ]

حالات الأتمتة

"السياق الصحيح" للكلمةω{\displaystyle \omega }فيما يتعلق باللغةل{\displaystyle L}هي مجموعة[ω]R={α:ωαل}{\displaystyle [\omega ]_{R}=\{\alpha :\omega \alpha \in L\}} أي مجموعة من الكلماتα{\displaystyle \alpha }بحيث يكون تسلسلها معω{\displaystyle \omega }يشكل كلمة منل{\displaystyle L}تؤدي السياقات الصحيحة إلى علاقة تكافؤ طبيعية[α]R=[β]R{\displaystyle [\alpha ]_{R}=[\beta ]_{R}}على مجموعة جميع الكلمات. إذا كانت اللغةل{\displaystyle L}إذا تم التعرف على لغة معينة بواسطة آلة حتمية محدودة، فإنه يوجد آلة فريدة، حتى التماثل ، تتعرف على نفس اللغة ولها أقل عدد ممكن من الحالات. وتسمى هذه الآلة بالآلة الدنيا للغة المعطاة.ل{\displaystyle L}تسمح نظرية مايهيل-نيرود بتعريفها بشكل صريح من حيث السياقات الصحيحة : [ 11 ] [ 12 ]

نظرية لغة التعرف على الآلات الدنيال{\displaystyle L}على الأبجديةΣ{\displaystyle \Sigma }يمكن تعريفها بشكل صريح بالطريقة التالية:

  • الأبجديةΣ{\displaystyle \Sigma }يبقى على حاله،
  • الولاياتسؤال{\displaystyle Q}يتوافق مع السياقات الصحيحة[ω]R{\displaystyle [\omega ]_{R}}من بين جميع الكلمات الممكنةωΣ*{\displaystyle \omega \in \Sigma ^{*}}،
  • الحالة الابتدائيةq0{\displaystyle q_{0}}يتوافق مع السياق الصحيح للكلمة الفارغة[ε]R{\displaystyle [\varepsilon ]_{R}}،
  • الحالات النهائيةF{\displaystyle F}يتوافق مع السياقات الصحيحة[ω]R{\displaystyle [\omega ]_{R}}من الكلمات منωل{\displaystyle \omega \in L}،
  • التحولاتدلتا{\displaystyle \delta }يتم تقديمها بواسطة[ω]Rσ[ωσ]R{\displaystyle [\omega ]_{R}{\begin{smallmatrix}{\sigma }\\[-5pt]{\longrightarrow }\end{smallmatrix}}[\omega \sigma ]_{R}}، أينωΣ*{\displaystyle \omega \in \Sigma ^{*}}وσΣ{\displaystyle \sigma \in \Sigma }.

وبهذا المعنى، فإن "آلة اللواحق" هي آلة حتمية محدودة دنيا تتعرف على لغة لواحق الكلماتS=s1s2...sن{\displaystyle S=s_{1}s_{2}\dots s_{n}}السياق الصحيح للكلمةω{\displaystyle \omega }فيما يتعلق بهذه اللغة، فهي تتكون من كلماتα{\displaystyle \alpha }بحيثωα{\displaystyle \omega \alpha }هو لاحقة منS{\displaystyle S}يسمح ذلك بصياغة اللمة التالية التي تحدد تقابلاً بين السياق الصحيح للكلمة ومجموعة المواضع الصحيحة لظهورها فيS{\displaystyle S}[ 13 ] [ 14 ]

نظرية ليكنهـندصos(ω)={ر:ω=sل...sر}{\displaystyle endpos(\omega )=\{r:\omega =s_{l}\dots s_{r}\}}لتكن مجموعة المواضع الصحيحة لظهوراتω{\displaystyle \omega }فيS{\displaystyle S}.

يوجد تقابل تقابلي بينهـندصos(ω){\displaystyle endpos(\omega )}و[ω]R{\displaystyle [\omega ]_{R}}:

  • لوxهـندصos(ω){\displaystyle x\in endpos(\omega )}، ثمsx+1sx+2...sن[ω]R{\displaystyle s_{x+1}s_{x+2}\dots s_{n}\in [\omega ]_{R}}؛
  • لوα[ω]R{\displaystyle \alpha \in [\omega ]_{R}}، ثمن-|α|هـندصos(ω){\displaystyle n-\vert \alpha \vert \in endpos(\omega )}.

على سبيل المثال، بالنسبة للكلمةS=أبأجأبأ{\displaystyle S=abacaba}وكلمتها الفرعيةω=أب{\displaystyle \omega =ab}، وهو يحملهـندصos(أب)={2،6}{\displaystyle endpos(ab)=\{2,6\}}و[أب]R={أ،أجأبأ}{\displaystyle [ab]_{R}=\{a,acaba\}}بشكل غير رسمي،[أب]R{\displaystyle [ab]_{R}}تتكون من كلمات تلي حالات حدوثأب{\displaystyle ab}حتى نهايةS{\displaystyle S}وهـندصos(أب){\displaystyle endpos(ab)}يتكون من المواضع الصحيحة لتلك التكرارات. في هذا المثال، العنصرx=2هـندصos(أب){\displaystyle x=2\in endpos(ab)}يتوافق مع الكلمةs3s4s5s6s7=أجأبأ[أب]R{\displaystyle s_{3}s_{4}s_{5}s_{6}s_{7}=acaba\in [ab]_{R}}بينما الكلمةأ[أب]R{\displaystyle a\in [ab]_{R}}يتوافق مع العنصر7-|أ|=6هـندصos(أب){\displaystyle 7-|a|=6\in endpos(ab)}.

وهذا يستلزم العديد من خصائص بنية حالات الأوتوماتون اللاحقة. لنفترض|α||β|{\displaystyle |\alpha |\leq |\beta |}ثم: [ 14 ]

  • لو[α]R{\displaystyle [\alpha ]_{R}}و[β]R{\displaystyle [\beta ]_{R}}يشتركان في عنصر واحد على الأقلx{\displaystyle x}، ثمهـندصos(α){\displaystyle endpos(\alpha )}وهـندصos(β){\displaystyle endpos(\beta )}يوجد عنصر مشترك أيضًا. وهذا يعني ضمناًα{\displaystyle \alpha }هو لاحقة منβ{\displaystyle \beta }وبالتاليهـندصos(β)هـندصos(α){\displaystyle endpos(\beta )\subset endpos(\alpha )}و[β]R[α]R{\displaystyle [\beta ]_{R}\subset [\alpha ]_{R}}في المثال المذكور آنفاً،أ[أب]R[جأب]R{\displaystyle a\in [ab]_{R}\cap [cab]_{R}}، لذاأب{\displaystyle ab}هو لاحقة منجأب{\displaystyle cab}وبالتالي[جأب]R={أ}{أ،أجأبأ}=[أب]R{\displaystyle [cab]_{R}=\{a\}\subset \{a,acaba\}=[ab]_{R}}وهـندصos(جأب)={6}{2،6}=هـندصos(أب){\displaystyle endpos(cab)=\{6\}\subset \{2,6\}=endpos(ab)}؛
  • لو[α]R=[β]R{\displaystyle [\alpha ]_{R}=[\beta ]_{R}}، ثمهـندصos(α)=هـندصos(β){\displaystyle endpos(\alpha )=endpos(\beta )}، هكذاα{\displaystyle \alpha }يحدث فيS{\displaystyle S}فقط كلاحقة لـβ{\displaystyle \beta }على سبيل المثال، لـα=ب{\displaystyle \alpha =b}وβ=أب{\displaystyle \beta =ab}وهذا يعني أن[ب]R=[أب]R={أ،أجأبأ}{\displaystyle [b]_{R}=[ab]_{R}=\{a,acaba\}}وهـندصos(ب)=هـندصos(أب)={2،6}{\displaystyle endpos(b)=endpos(ab)=\{2,6\}}؛
  • لو[α]R=[β]R{\displaystyle [\alpha ]_{R}=[\beta ]_{R}}وγ{\displaystyle \gamma }هو لاحقة منβ{\displaystyle \beta }بحيث|α||γ||β|{\displaystyle |\alpha |\leq |\gamma |\leq |\beta |}، ثم[α]R=[γ]R=[β]R{\displaystyle [\alpha ]_{R}=[\gamma ]_{R}=[\beta ]_{R}}في المثال أعلاه[ج]R=[بأج]R={أبأ}{\displaystyle [c]_{R}=[bac]_{R}=\{aba\}}وينطبق ذلك على اللاحقة "الوسيطة".γ=أج{\displaystyle \gamma =ac}الذي - التي[أج]R={أبأ}{\displaystyle [ac]_{R}=\{aba\}}.

أي ولايةq=[α]R{\displaystyle q=[\alpha ]_{R}}يتعرف نظام اللاحقات الآلي على سلسلة متصلة من اللواحق المتداخلة لأطول كلمة تم التعرف عليها بواسطة هذه الحالة. [ 14 ]

"امتداد يساري"γ{\displaystyle {\overset {\scriptstyle {\leftarrow }}{\gamma }}}من السلسلةγ{\displaystyle \gamma }هي أطول سلسلةω{\displaystyle \omega }وهذا له نفس السياق الصحيح مثلγ{\displaystyle \gamma }. طول|γ|{\displaystyle |{\overset {\scriptstyle {\leftarrow }}{\gamma }}|}أطول سلسلة يتم التعرف عليها بواسطةq=[γ]R{\displaystyle q=[\gamma ]_{R}}يُرمز إليه بـلهـن(q){\displaystyle len(q)}. ينص على ما يلي: [ 15 ]

نظرية - الامتداد الأيسر لـγ{\displaystyle \gamma }قد يتم تمثيلها على النحو التاليγ=βγ{\displaystyle {\overleftarrow {\gamma }}=\beta \gamma }، أينβ{\displaystyle \beta }هي أطول كلمة بحيث يكون أي ظهور لهاγ{\displaystyle \gamma }فيS{\displaystyle S}يسبقهβ{\displaystyle \beta }.

"رابط لاحق"لأنانك(q){\displaystyle link(q)}من الدولةq=[α]R{\displaystyle q=[\alpha ]_{R}}هو المؤشر إلى الحالةص{\displaystyle p}التي تحتوي على أكبر لاحقة منα{\displaystyle \alpha }ذلك غير معترف به من قبلq{\displaystyle q}.

وبهذا المعنى يمكن القولq=[α]R{\displaystyle q=[\alpha ]_{R}}يتعرف بدقة على جميع اللواحق منα{\displaystyle {\overset {\scriptstyle {\leftarrow }}{\alpha }}}هذا أطول منلهـن(لأنانك(q)){\displaystyle len(link(q))}ولا تتجاوز مدةلهـن(q){\displaystyle len(q)}وينطبق عليه أيضاً ما يلي: [ 15 ]

نظرية تشكل روابط اللواحق شجرةتي(V،هـ){\displaystyle {\mathcal {T}}(V,E)}والتي يمكن تعريفها بشكل صريح بالطريقة التالية:

  1. الرؤوسV{\displaystyle V}تتوافق أجزاء الشجرة مع الامتدادات اليسرىω{\displaystyle {\overleftarrow {\omega }}}من بين الجميعS{\displaystyle S}السلاسل الفرعية،
  2. الحوافهـ{\displaystyle E}في الشجرة، يتم توصيل أزواج الرؤوس(ω،αω){\displaystyle ({\overleftarrow {\omega }},{\overleftarrow {\alpha \omega }})}بحيثαΣ{\displaystyle \alpha \in \Sigma }وωαω{\displaystyle {\overleftarrow {\omega }}\neq {\overleftarrow {\alpha \omega }}}.

الاتصال بأشجار اللواحق

العلاقة بين شجرة اللواحق، وشجرة اللواحق، وDAWG، وCDAWG

شجرة البادئة (أو "شجرة البادئة") هي شجرة موجهة ذات جذر، حيث يتم تمييز الأقواس بأحرف بطريقة لا يوجد فيها رأسv{\displaystyle v}تحتوي هذه الشجرة على قوسين خارجيين يحملان نفس الحرف. بعض رؤوس الشجرة تُصنّف على أنها نهائية. يُقال إن الشجرة تتعرف على مجموعة من الكلمات المُحددة بمسارات من جذرها إلى رؤوسها النهائية. وبهذه الطريقة، تُعد أشجار البادئات نوعًا خاصًا من الأوتوماتا المحدودة الحتمية إذا اعتبرنا جذرها رأسًا ابتدائيًا. [ 16 ] "شجرة اللاحقة" للكلمةS{\displaystyle S}هي شجرة بادئات تتعرف على مجموعة من لواحقها. " شجرة اللواحق " هي شجرة يتم الحصول عليها من شجرة اللواحق عبر إجراء الضغط، حيث يتم دمج الحواف المتتالية إذا كانت درجة الرأس بينهما تساوي اثنين. [ 15 ]

بحسب تعريفها، يمكن الحصول على آلة لاحقة من خلال تصغير شجرة اللواحق. ويمكن إثبات أن آلة لاحقة مضغوطة تُحصل عليها من خلال تصغير شجرة اللواحق (بافتراض أن كل سلسلة على حافة شجرة اللواحق هي حرف صلب من الأبجدية) وضغط آلة اللواحق. [ 17 ] بالإضافة إلى هذه العلاقة بين شجرة اللواحق وآلة اللواحق لنفس السلسلة، توجد أيضًا علاقة بين آلة اللواحق للسلسلةS=s1s2...sن{\displaystyle S=s_{1}s_{2}\dots s_{n}}وشجرة اللواحق للسلسلة المعكوسةSR=sنsن-1...s1{\displaystyle S^{R}=s_{n}s_{n-1}\dots s_{1}}[ 18 ]

وبالمثل، يمكن تقديم "سياقات يسارية" كما هو الحال مع السياقات اليمنى.[ω]ل={βΣ*:βωل}{\displaystyle [\omega ]_{L}=\{\beta \in \Sigma ^{*}:\beta \omega \in L\}}، "امتدادات اليمين"ω {\displaystyle {\overset {\scriptstyle {\rightarrow }}{\omega ~}}}بما يتوافق مع أطول سلسلة لها نفس السياق الأيسر مثلω{\displaystyle \omega }وعلاقة التكافؤ[α]ل=[β]ل{\displaystyle [\alpha ]_{L}=[\beta ]_{L}}إذا نظرنا إلى الامتدادات الصحيحة فيما يتعلق باللغةل{\displaystyle L}من "بادئات" السلسلةS{\displaystyle S}يمكن الحصول عليه من خلال: [ 15 ]

نظرية شجرة اللواحق للسلسلةS{\displaystyle S}يمكن تعريفها بشكل صريح بالطريقة التالية:

  • الرؤوسV{\displaystyle V}تتوافق أجزاء الشجرة مع الامتدادات اليمنىω{\displaystyle {\overrightarrow {\omega }}}من بين الجميعS{\displaystyle S}السلاسل الفرعية،
  • الحوافهـ{\displaystyle E}يتوافق مع التوائم الثلاثية(ω،xα،ωx){\displaystyle ({\overrightarrow {\omega }},x\alpha ,{\overrightarrow {\omega x}})}بحيثxΣ{\displaystyle x\in \Sigma }وωx=ωxα{\displaystyle {\overrightarrow {\omega x}}={\overrightarrow {\omega }}x\alpha }.

هنا ثلاثة توائم(v1،ω،v2)هـ{\displaystyle (v_{1},\omega ,v_{2})\in E}يعني ذلك وجود ميزة منv1{\displaystyle v_{1}}لv2{\displaystyle v_{2}}مع السلسلةω{\displaystyle \omega }مكتوب عليه

وهذا يعني شجرة روابط اللواحق للسلسلةS{\displaystyle S}وشجرة اللواحق للسلسلةSR{\displaystyle S^{R}}متماثلة: [ 18 ]

بنية اللواحق للكلمتين "abbcbc" و "cbcbba" 

وبالمثل لحالة الامتدادات اليسرى، فإن اللمة التالية تنطبق على الامتدادات اليمنى: [ 15 ]

نظرية الامتداد الأيمن للسلسلةγ{\displaystyle \gamma }قد يتم تمثيلها على النحو التاليγ=γα{\displaystyle {\overrightarrow {\gamma }}=\gamma \alpha }، أينα{\displaystyle \alpha }هي أطول كلمة بحيث يكون كل ظهور لهاγ{\displaystyle \gamma }فيS{\displaystyle S}ويخلفهα{\displaystyle \alpha }.

مقاس

آلة لاحقة للسلسلةS{\displaystyle S}من الطولن>1{\displaystyle n>1}لديه على الأكثر2ن-1{\displaystyle 2n-1}الولايات وعلى الأكثر3ن-4{\displaystyle 3n-4}الانتقالات. يتم الوصول إلى هذه الحدود على السلاسل النصيةأبب...بب=أبن-1{\displaystyle abb\dots bb=ab^{n-1}}وأبب...بج=أبن-2ج{\displaystyle abb\dots bc=ab^{n-2}c}وبالمثل. [ 13 ] يمكن صياغة ذلك بطريقة أكثر دقة على النحو التالي|دلتا||سؤال|+ن-2{\displaystyle |\delta |\leq |Q|+n-2}أين|دلتا|{\displaystyle |\delta |}و|سؤال|{\displaystyle |Q|}[ 14 ] تمثل أعداد الانتقالات والحالات في الأوتوماتون على التوالي.

آلات اللواحق القصوى

بناء

في البداية، تتكون الآلة من حالة واحدة فقط تتوافق مع الكلمة الفارغة، ثم تُضاف أحرف السلسلة حرفًا حرفًا، وتُعاد بناء الآلة في كل خطوة بشكل تدريجي. [ 19 ]

تحديثات الولاية

بعد إضافة حرف جديد إلى السلسلة، تتغير بعض فئات التكافؤ. لنفترض[α]Rω{\displaystyle [\alpha ]_{R_{\omega }}}كن السياق الصحيح لـα{\displaystyle \alpha }فيما يتعلق بلغةω{\displaystyle \omega }اللواحق. ثم الانتقال من[α]Rω{\displaystyle [\alpha ]_{R_{\omega }}}ل[α]Rωx{\displaystyle [\alpha ]_{R_{\omega x}}}بعدx{\displaystyle x}يُلحق بـω{\displaystyle \omega }يتم تعريفها بواسطة اللمة: [ 14 ]

نظرية ليكنα،ωΣ*{\displaystyle \alpha ,\omega \in \Sigma ^{*}}بعد بضع كلماتΣ{\displaystyle \Sigma }وxΣ{\displaystyle x\in \Sigma }ليكن حرفًا من هذه الأبجدية. ثم توجد علاقة تناظرية بين[α]Rω{\displaystyle [\alpha ]_{R_{\omega }}}و[α]Rωx{\displaystyle [\alpha ]_{R_{\omega x}}}:

  • [α]Rωx=[α]Rωx{ε}{\displaystyle [\alpha ]_{R_{\omega x}}=[\alpha ]_{R_{\omega }}x\cup \{\varepsilon \}}لوα{\displaystyle \alpha }هو لاحقة منωx{\displaystyle \omega x}؛
  • [α]Rωx=[α]Rωx{\displaystyle [\alpha ]_{R_{\omega x}}=[\alpha ]_{R_{\omega }}x}خلاف ذلك.

بعد الإضافةx{\displaystyle x}إلى الكلمة الحاليةω{\displaystyle \omega }السياق الصحيح لـα{\displaystyle \alpha }قد يتغير بشكل كبير فقط إذاα{\displaystyle \alpha }هو لاحقة منωx{\displaystyle \omega x}وهذا يعني وجود علاقة تكافؤ.Rωx{\displaystyle \equiv _{R_{\omega x}}}هو تحسين لـRω{\displaystyle \equiv _{R_{\omega }}}بمعنى آخر، إذا[α]Rωx=[β]Rωx{\displaystyle [\alpha ]_{R_{\omega x}}=[\beta ]_{R_{\omega x}}}، ثم[α]Rω=[β]Rω{\displaystyle [\alpha ]_{R_{\omega }}=[\beta ]_{R_{\omega }}}بعد إضافة حرف جديد، لا يوجد على الأكثر فئتان مكافئتان منRω{\displaystyle \equiv _{R_{\omega }}}سيتم تقسيمها، وقد ينقسم كل منها إلى فئتين جديدتين على الأكثر. أولاً، يتم دائمًا تقسيم فئة التكافؤ المقابلة للسياق الأيمن الفارغ إلى فئتين من فئات التكافؤ، إحداهما مقابلة لـωx{\displaystyle \omega x}نفسها وامتلاكها{ε}{\displaystyle \{\varepsilon \}}كسياق صحيح. تحتوي فئة التكافؤ الجديدة هذه بالضبطωx{\displaystyle \omega x}وجميع لواحقها التي لم تظهر فيω{\displaystyle \omega }، حيث كان السياق الصحيح لمثل هذه الكلمات فارغًا من قبل، ويحتوي الآن على كلمة فارغة فقط. [ 14 ]

بالنظر إلى التطابق بين حالات آلة اللواحق ورؤوس شجرة اللواحق، فمن الممكن تحديد الحالة الثانية التي قد تنقسم بعد إضافة حرف جديد. الانتقال منω{\displaystyle \omega }لωx{\displaystyle \omega x}يتوافق ذلك مع الانتقال منωR{\displaystyle \omega ^{R}}لxωR{\displaystyle x\omega ^{R}}في السلسلة المعكوسة. من حيث أشجار اللواحق، يتوافق ذلك مع إدخال أطول لاحقة جديدةxωR{\displaystyle x\omega ^{R}}في شجرة اللواحق لـωR{\displaystyle \omega ^{R}}قد يتشكل رأسان جديدان على الأكثر بعد هذا الإدخال: أحدهما يتوافق معxωR{\displaystyle x\omega ^{R}}بينما يتوافق الآخر مع سلفه المباشر في حالة وجود تفرع. وبالعودة إلى آلات اللواحق، فهذا يعني أن الحالة الجديدة الأولى التي يتم التعرف عليهاωx{\displaystyle \omega x}والثاني (إن وُجدت حالة جديدة ثانية) هو رابطها اللاحق. ويمكن صياغته على شكل مبرهنة: [ 14 ]

نظرية ليكنωΣ*{\displaystyle \omega \in \Sigma ^{*}}،xΣ{\displaystyle x\in \Sigma }بعض الكلمات والشخصياتΣ{\displaystyle \Sigma }. دع أيضًاα{\displaystyle \alpha }أن يكون أطول لاحقة منωx{\displaystyle \omega x}، وهو ما يحدث فيω{\displaystyle \omega }ودعβ=α{\displaystyle \beta ={\overset {\scriptstyle {\leftarrow }}{\alpha }}}ثم لأي سلاسل فرعيةu،v{\displaystyle u,v}لω{\displaystyle \omega }وهذا صحيح:

  • لو[u]Rω=[v]Rω{\displaystyle [u]_{R_{\omega }}=[v]_{R_{\omega }}}و[u]Rω[α]Rω{\displaystyle [u]_{R_{\omega }}\neq [\alpha ]_{R_{\omega }}}، ثم[u]Rωx=[v]Rωx{\displaystyle [u]_{R_{\omega x}}=[v]_{R_{\omega x}}}؛
  • لو[u]Rω=[α]Rω{\displaystyle [u]_{R_{\omega }}=[\alpha ]_{R_{\omega }}}و|u||α|{\displaystyle \vert u\vert \leq \vert \alpha \vert }، ثم[u]Rωx=[α]Rωx{\displaystyle [u]_{R_{\omega x}}=[\alpha ]_{R_{\omega x}}}؛
  • لو[u]Rω=[α]Rω{\displaystyle [u]_{R_{\omega }}=[\alpha ]_{R_{\omega }}}و|u|>|α|{\displaystyle \vert u\vert >\vert \alpha \vert }، ثم[u]Rωx=[β]Rωx{\displaystyle [u]_{R_{\omega x}}=[\beta ]_{R_{\omega x}}}.

وهذا يعني أنه إذاα=β{\displaystyle \alpha =\beta }(على سبيل المثال، عندما)x{\displaystyle x}لم يحدث فيω{\displaystyle \omega }على الإطلاق وα=β=ε{\displaystyle \alpha =\beta =\varepsilon })، عندئذٍ يتم تقسيم فئة التكافؤ المقابلة للسياق الأيمن الفارغ فقط. [ 14 ]

إلى جانب روابط اللواحق، من الضروري أيضًا تحديد الحالات النهائية للآلة. ويترتب على خصائص البنية أن جميع لواحق الكلمةα{\displaystyle \alpha }معترف بها من قبلq=[α]R{\displaystyle q=[\alpha ]_{R}}يتم التعرف عليها بواسطة بعض الرؤوس على مسار اللاحقة(q،لأنانك(q)،لأنانك2(q)،...){\displaystyle (q,link(q),link^{2}(q),\dots )}لq{\displaystyle q}أي اللواحق التي يزيد طولها عنلهـن(لأنانك(q)){\displaystyle len(link(q))}استرخيq{\displaystyle q}، اللواحق التي يزيد طولها عنلهـن(لأنانك(لأنانك(q)){\displaystyle len(link(link(q))}لكن ليس أكبر منلهـن(لأنانك(q)){\displaystyle len(link(q))}استرخيلأنانك(q){\displaystyle link(q)}وهكذا دواليك. وبالتالي، إذا كانت الدولة تعترفω{\displaystyle \omega }يُرمز إليه بـلأsت{\displaystyle last}ثم جميع الحالات النهائية (أي التعرف على لواحق منω{\displaystyle \omega }) تشكيل التسلسل(لأsت،لأنانك(لأsت)،لأنانك2(لأsت)،...){\displaystyle (last,link(last),link^{2}(last),\dots )}[ 19 ]

بعد الشخصيةx{\displaystyle x}يُلحق بـω{\displaystyle \omega }الحالات الجديدة المحتملة لآلة اللواحق هي[ωx]Rωx{\displaystyle [\omega x]_{R_{\omega x}}}و[α]Rωx{\displaystyle [\alpha ]_{R_{\omega x}}}رابط لاحق من[ωx]Rωx{\displaystyle [\omega x]_{R_{\omega x}}}يذهب إلى[α]Rωx{\displaystyle [\alpha ]_{R_{\omega x}}}ومن[α]Rωx{\displaystyle [\alpha ]_{R_{\omega x}}}يذهب إلىلأنانك([α]Rω){\displaystyle link([\alpha ]_{R_{\omega }})}كلمات من[ωx]Rωx{\displaystyle [\omega x]_{R_{\omega x}}}يحدث فيωx{\displaystyle \omega x}فقط كلاحقاتها، لذلك لا ينبغي أن تكون هناك أي انتقالات على الإطلاق من[ωx]Rωx{\displaystyle [\omega x]_{R_{\omega x}}}بينما ينبغي أن تتم الانتقالات إليه من لواحق منω{\displaystyle \omega }بطول لا يقل عنα{\displaystyle \alpha }وأن يتم تمييزها بالحرفx{\displaystyle x}. ولاية[α]Rωx{\displaystyle [\alpha ]_{R_{\omega x}}}تتكون من مجموعة فرعية من[α]Rω{\displaystyle [\alpha ]_{R_{\omega }}}وهكذا ينتقل من[α]Rωx{\displaystyle [\alpha ]_{R_{\omega x}}}ينبغي أن يكون هو نفسه كما هو من[α]Rω{\displaystyle [\alpha ]_{R_{\omega }}}في غضون ذلك، تؤدي التحولات إلى[α]Rωx{\displaystyle [\alpha ]_{R_{\omega x}}}ينبغي أن تنتقل من لواحق منω{\displaystyle \omega }طوله أقل من|α|{\displaystyle |\alpha |}وعلى الأقللهـن(لأنانك([α]Rω)){\displaystyle len(link([\alpha ]_{R_{\omega }}))}حيث أدت هذه التحولات إلى[α]Rω{\displaystyle [\alpha ]_{R_{\omega }}}قبل ذلك، كانت تُقابل الجزء المنفصل من هذه الولاية. ويمكن تحديد الولايات التي تُقابل هذه اللواحق من خلال اجتياز مسار رابط اللاحقة لـ[ω]Rω{\displaystyle [\omega ]_{R_{\omega }}}[ 19 ]

بناء آلة لاحقة للكلمة abbcbc 
∅ → أ
بعد إضافة الحرف الأول، يتم إنشاء حالة واحدة فقط في آلة اللواحق.وبالمثل، تتم إضافة ورقة واحدة فقط إلى شجرة اللواحق.
أ → أب
يتم استخلاص الانتقالات الجديدة من جميع الحالات النهائية السابقة لأن b لم يظهر من قبل.وللسبب نفسه، تُضاف ورقة أخرى إلى جذر شجرة اللواحق.
ab → abb
تتعرف الحالة 2 على الكلمتين ab و b ، ولكن b فقط هي اللاحقة الجديدة، لذلك يتم فصل هذه الكلمة إلى الحالة 4.في شجرة اللواحق، يتوافق ذلك مع انقسام الحافة المؤدية إلى الرأس 2.
abb → abbc
يظهر الحرف c لأول مرة، لذلك يتم رسم الانتقالات من جميع الحالات النهائية السابقة.شجرة اللواحق للسلسلة المعكوسة تحتوي على ورقة أخرى مضافة إلى الجذر.
abbc → abbcb
تتكون الحالة 4 من الكلمة الوحيدة b ، وهي لاحقة، وبالتالي فإن الحالة غير مقسمة.وبالمثل، يتم تعليق الورقة الجديدة على الرأس 4 في شجرة اللواحق.
abbcB → abbcbc
تتعرف الحالة 5 على الكلمات abbc و bbc و bc و c ، ولكن الكلمتين الأخيرتين فقط هما لاحقتان لكلمة جديدة، لذلك يتم فصلهما في الحالة 8 الجديدة.وبالمثل، يتم تقسيم الحافة المؤدية إلى الرأس 5 ويتم وضع الرأس 8 في منتصف الحافة.

خوارزمية البناء

تؤدي النتائج النظرية المذكورة أعلاه إلى الخوارزمية التالية التي تأخذ الحرف x وتعيد بناء آلة اللواحق الخاصة بـ ω إلى آلة اللواحق الخاصة بـωx{\displaystyle \omega x}[ 19 ]

  1. يتم الاحتفاظ بالحالة المقابلة للكلمة ω كآخر حالة ؛
  2. بعد إضافة x ، يتم تخزين القيمة السابقة لـ last في المتغير ويتم إعادة تعيين last نفسه إلى الحالة الجديدة المقابلة لـωx{\displaystyle \omega x}؛
  3. يتم تحديث الحالات المقابلة لللاحقات ω بالانتقالات إلى الحالة الأخيرة . وللقيام بذلك، يجب المرور عبرص،لأنانك(ص)،لأنانك2(ص)،...{\displaystyle p,link(p),link^{2}(p),\dots }، إلى أن تكون هناك حالة قد حدثت فيها بالفعل عملية انتقال بمقدار x ؛
  4. بمجرد انتهاء الحلقة المذكورة أعلاه، توجد 3 حالات:
    1. إذا لم تشهد أي من الحالات على مسار اللاحقة انتقالًا بواسطة x ، فإن x لم يظهر أبدًا في ω من قبل، ويجب أن يؤدي رابط اللاحقة من الأخير إلىq0{\displaystyle q_{0}}؛
    2. إذا تم العثور على الانتقال بواسطة x والذي يؤدي من الحالة p إلى الحالة q ، بحيثلهـن(ص)+1=لهـن(q){\displaystyle len(p)+1=len(q)}، عندئذٍ لا يلزم تقسيم q وهو رابط لاحق لـ last ؛
    3. إذا تم العثور على الانتقال ولكنلهـن(q)>لهـن(ص)+1{\displaystyle len(q)>len(p)+1}ثم الكلمات من q التي لا يتجاوز طولهالهـن(ص)+1{\displaystyle len(p)+1}ينبغي فصلها إلى حالة "استنساخ" جديدة cl ؛
  5. إذا تم الانتهاء من الخطوة السابقة بإنشاء cl ، فيجب أن تنسخ الانتقالات منه ورابط اللاحقة الخاص به تلك الخاصة بـ q ، وفي نفس الوقت يتم تعيين cl ليكون رابط لاحقة مشترك لكل من q و last ؛
  6. الانتقالات التي أدت إلى q من قبل ولكنها تتوافق مع كلمات لا يتجاوز طولهالهـن(ص)+1{\displaystyle len(p)+1}يتم إعادة توجيهها إلى cl . وللقيام بذلك، يستمر المرء في المرور عبر مسار اللاحقة لـ p حتى يتم العثور على الحالة التي لا يؤدي الانتقال بواسطة x منها إلى q .

يتم وصف الإجراء بأكمله بواسطة الشفرة الزائفة التالية: [ 19 ]

دالة إضافة_حرف(x) : تعريف p = last تعيين last = new_state() تعيين len(last) = len(p) + 1 طالما أن δ(p, x) غير معرف: تعيين δ(p, x) = last، p = link(p) تعريف q = δ(p, x) إذا كان q = last : تعيين link(last) = q 0 وإلا إذا كان len(q) = len(p) + 1 : تعيين link(last) = q وإلا : تعريف cl = new_state() تعيين len(cl) = len(p) + 1 تعيين δ(cl) = δ(q)، link(cl) = link(q) تعيين link(last) = link(q) = cl طالما أن δ(p, x) = q : تعيين δ(p, x) = cl، p = link(p)

هناq0{\displaystyle q_{0}}تمثل الحالة الابتدائية للآلة، و new_state()هي دالة تُنشئ حالة جديدة لها. يُفترض أن قيم lastو lenو linkمخزنة δكمتغيرات عامة. [ 19 ] وللتسهيل، تُعرَّف بأنهاlink(q0)q0{\displaystyle q_{0}}.

تعقيد

قد تختلف درجة تعقيد الخوارزمية تبعًا للبنية الأساسية المستخدمة لتخزين انتقالات الأوتوماتون. ويمكن تنفيذها فييا(نسجل|Σ|){\displaystyle O(n\log |\Sigma |)}معيا(ن){\displaystyle O(n)}أو في تكلفة الذاكرةيا(ن){\displaystyle O(n)}معيا(ن|Σ|){\displaystyle O(n|\Sigma |)}زيادة الحمل على الذاكرة إذا افترضنا أن تخصيص الذاكرة يتم فييا(1){\displaystyle O(1)}للحصول على هذا القدر من التعقيد، يجب استخدام أساليب التحليل المُستهلك . قيمةلهـن(ص){\displaystyle len(p)}يتناقص هذا المقدار بشكل صارم مع كل تكرار للدورة، بينما قد يزيد بمقدار واحد فقط بعد التكرار الأول للدورة عند استدعاء الدالة add_letter التالي . القيمة الإجمالية لـلهـن(ص){\displaystyle len(p)}لا يتجاوز أبداًن{\displaystyle n}ولا يزيد إلا بمقدار واحد بين كل تكرار لإضافة أحرف جديدة، مما يشير إلى أن التعقيد الكلي خطي على الأكثر. وقد تم إثبات خطية الدورة الثانية بطريقة مماثلة. [ 19 ]

التعميمات

ترتبط آلة اللواحق ارتباطًا وثيقًا ببنى اللواحق الأخرى ومؤشرات السلاسل الفرعية . وبمعرفة آلة لواحق لسلسلة معينة، يمكن إنشاء شجرة اللواحق الخاصة بها عبر الضغط والاجتياز المتكرر في وقت خطي. [ 20 ] ويمكن إجراء تحويلات مماثلة في كلا الاتجاهين للتبديل بين آلة اللواحق الخاصة بـS{\displaystyle S}وشجرة اللواحق للسلسلة المعكوسةSR{\displaystyle S^{R}}[ 18 ] بالإضافة إلى ذلك ، طُوِّرت عدة تعميمات لإنشاء آلة لسلسلة السلاسل النصية المُعطاة بواسطة شجرة البحث (Trie)، [ 8 ] وآلة اللواحق المضغوطة (CDAWG)، [ 7 ] وللحفاظ على بنية الآلة على النافذة المنزلقة، [ 21 ] ولإنشاءها بطريقة ثنائية الاتجاه، تدعم إدخال الأحرف في بداية ونهاية السلسلة. [ 22 ]

آلة لاحقة مضغوطة

كما ذُكر سابقًا، يُمكن الحصول على آلة لاحقة مضغوطة من خلال ضغط آلة لاحقة عادية (عن طريق إزالة الحالات غير النهائية والتي لها قوس خروج واحد فقط) وتقليل شجرة لاحقة. وعلى غرار آلة اللاحقة العادية، يُمكن تعريف حالات آلة اللاحقة المضغوطة بشكل صريح. امتداد ثنائي الاتجاهγ{\displaystyle {\overset {\scriptstyle {\longleftrightarrow }}{\gamma }}}كلمةγ{\displaystyle \gamma }هي أطول كلمةω=βγα{\displaystyle \omega =\beta \gamma \alpha }بحيث يكون كل ظهور لـγ{\displaystyle \gamma }فيS{\displaystyle S}يسبقهβ{\displaystyle \beta }وخلفهα{\displaystyle \alpha }أما فيما يتعلق بالامتدادات اليسرى واليمنى، فهذا يعني أن الامتداد ثنائي الاتجاه هو الامتداد الأيسر للامتداد الأيمن، أو ما يعادله، الامتداد الأيمن للامتداد الأيسر.γ=γ=γ{\textstyle {\overset {\scriptstyle \longleftrightarrow }{\gamma }}={\overset {\scriptstyle \leftarrow }{\overset {\rightarrow }{\gamma }}}={\overset {\rightarrow }{\overset {\scriptstyle \leftarrow }{\gamma }}}}. من حيث الامتدادات ثنائية الاتجاه، يتم تعريف الأوتومات المضغوط على النحو التالي: [ 15 ]

نظرية آلة لاحقة مضغوطة للكلمةS{\displaystyle S}يتم تعريفها بواسطة زوج(V،هـ){\displaystyle (V,E)}، أين:

  • V={ω:ωΣ*}{\displaystyle V=\{{\overleftrightarrow {\omega }}:\omega \in \Sigma ^{*}\}}هي مجموعة من حالات الأوتوماتون؛
  • هـ={(ω،xα،ωx):xΣ،αΣ*،ωx=ωxα}{\displaystyle E=\{({\overleftrightarrow {\omega }},x\alpha ,{\overleftrightarrow {\omega x}}):x\in \Sigma ,\alpha \in \Sigma ^{*},{\overleftrightarrow {\omega x}}={\overleftrightarrow {\omega }}x\alpha \}}هي مجموعة من انتقالات الأوتوماتون.

تؤدي الامتدادات ثنائية الاتجاه إلى علاقة تكافؤα=β{\textstyle {\overset {\scriptstyle \longleftrightarrow }{\alpha }}={\overset {\scriptstyle \longleftrightarrow }{\beta }}}والتي تحدد مجموعة الكلمات التي تتعرف عليها نفس حالة الآلة المضغوطة. علاقة التكافؤ هذه هي إغلاق متعدٍ للعلاقة المحددة بواسطة(α=β)(α=β){\textstyle ({\overset {\scriptstyle {\rightarrow }}{\alpha \,}}={\overset {\scriptstyle {\rightarrow }}{\beta \,}})\vee ({\overset {\scriptstyle {\leftarrow }}{\alpha }}={\overset {\scriptstyle {\leftarrow }}{\beta }})}مما يسلط الضوء على حقيقة أنه يمكن الحصول على آلة مضغوطة عن طريق لصق رؤوس شجرة اللواحق المتكافئة عبرα=β{\displaystyle {\overset {\scriptstyle {\leftarrow }}{\alpha }}={\overset {\scriptstyle {\leftarrow }}{\beta }}}العلاقة (تقليل شجرة اللواحق) ولصق حالات آلة اللواحق المتكافئة عبرα=β{\displaystyle {\overset {\scriptstyle {\rightarrow }}{\alpha \,}}={\overset {\scriptstyle {\rightarrow }}{\beta \,}}}العلاقة (ضغط آلة اللواحق). [ 23 ] إذا كانت الكلماتα{\displaystyle \alpha }وβ{\displaystyle \beta }لها نفس الامتدادات الصحيحة، والكلماتβ{\displaystyle \beta }وγ{\displaystyle \gamma }إذا كانت لها نفس الامتدادات اليسرى، فإن جميع السلاسل تتراكم.α{\displaystyle \alpha }،β{\displaystyle \beta }وγ{\displaystyle \gamma }لها نفس الامتدادات ثنائية الاتجاه. في الوقت نفسه، قد يحدث ألا يكون للامتدادات اليسرى أو اليمنى لـα{\displaystyle \alpha }وγ{\displaystyle \gamma }يتزامن. على سبيل المثال، يمكن للمرء أن يأخذS=β=أب{\displaystyle S=\beta =ab}،α=أ{\displaystyle \alpha =a}وγ=ب{\displaystyle \gamma =b}، والتي تكون امتداداتها اليسرى واليمنى كما يلي:α=β=أب=β=γ{\displaystyle {\overset {\scriptstyle {\rightarrow }}{\alpha \,}}={\overset {\scriptstyle {\rightarrow }}{\beta \,}}=ab={\overset {\scriptstyle {\leftarrow }}{\beta }}={\overset {\scriptstyle {\leftarrow }}{\gamma }}}، لكنγ=ب{\displaystyle {\overset {\scriptstyle {\rightarrow }}{\gamma \,}}=b}وα=أ{\displaystyle {\overset {\scriptstyle {\leftarrow }}{\alpha }}=a}مع ذلك، فبينما تتشكل علاقات التكافؤ للامتدادات أحادية الاتجاه من خلال سلسلة متصلة من البادئات أو اللواحق المتداخلة، فإن علاقات التكافؤ للامتدادات ثنائية الاتجاه أكثر تعقيدًا، والشيء الوحيد الذي يمكن استنتاجه على وجه اليقين هو أن السلاسل التي لها نفس الامتداد ثنائي الاتجاه هي سلاسل فرعية من أطول سلسلة لها نفس الامتداد ثنائي الاتجاه، ولكن قد يحدث حتى ألا يكون لها أي سلسلة فرعية غير فارغة مشتركة. لا يتجاوز العدد الإجمالي لفئات التكافؤ لهذه العلاقةن+1{\displaystyle n+1}وهذا يعني أن آلة اللاحقة المضغوطة للسلسلة ذات الطولن{\displaystyle n}لديه على الأكثرن+1{\displaystyle n+1}الحالات. عدد الانتقالات في مثل هذه الآلة هو على الأكثر2ن-2{\displaystyle 2n-2}[ 15 ]

آلة لاحقة لعدة سلاسل

لنفترض مجموعة من الكلماتتي={S1،S2،...،Sك}{\displaystyle T=\{S_{1},S_{2},\dots ,S_{k}\}}من الممكن بناء تعميم لآلة اللواحق بحيث تتعرف على اللغة المكونة من لواحق جميع الكلمات من المجموعة. وستبقى قيود عدد الحالات والانتقالات في هذه الآلة كما هي بالنسبة لآلة الكلمة الواحدة إذا وضعنان=|S1|+|S2|++|Sك|{\displaystyle n=|S_{1}|+|S_{2}|+\dots +|S_{k}|}[ 23 ] تشبه الخوارزمية بناء آلة الكلمات المفردة باستثناء أنه بدلاً منلأsت{\displaystyle last}ستعمل الدالة add_letter مع الحالة التي تتوافق مع الكلمةωأنا{\displaystyle \omega _{i}}بافتراض الانتقال من مجموعة الكلمات{ω1،...،ωأنا،...،ωك}{\displaystyle \{\omega _{1},\dots ,\omega _{i},\dots ,\omega _{k}\}}إلى المجموعة{ω1،...،ωأناx،...،ωك}{\displaystyle \{\omega _{1},\dots ,\omega _{i}x,\dots ,\omega _{k}\}}[ 24 ] [ 25 ]

تُعمم هذه الفكرة بشكل أكبر لتشمل الحالة عندماتي{\displaystyle T}لا يتم تحديدها بشكل صريح، بل يتم تحديدها بواسطة شجرة بادئة معسؤال{\displaystyle Q}أظهر موهري وآخرون أن مثل هذه الآلة سيكون لها على الأكثر رؤوس.2سؤال-2{\displaystyle 2Q-2}ويمكن بناؤها في وقت خطي انطلاقاً من حجمها. وفي الوقت نفسه، قد يصل عدد الانتقالات في هذه الآلة إلىيا(سؤال|Σ|){\displaystyle O(Q|\Sigma |)}على سبيل المثال، بالنسبة لمجموعة الكلماتتي={σ1،أσ1،أ2σ1،...،أنσ1،أنσ2،...،أنσك}{\displaystyle T=\{\sigma _{1},a\sigma _{1},a^{2}\sigma _{1},\dots ,a^{n}\sigma _{1},a^{n}\sigma _{2},\dots ,a^{n}\sigma _{k}\}}على الأبجديةΣ={أ،σ1،...،σك}{\displaystyle \Sigma =\{a,\sigma _{1},\dots ,\sigma _{k}\}}يبلغ الطول الإجمالي للكلمات ما يلي:يا(ن2+نك){\textstyle O(n^{2}+nk)}عدد الرؤوس في شجرة اللاحق المقابلة يساوييا(ن+ك){\displaystyle O(n+k)}وتتكون الآلة اللاحقة المقابلة منيا(ن+ك){\displaystyle O(n+k)}الولايات ويا(نك){\displaystyle O(nk)}الانتقالات. الخوارزمية التي اقترحها موهري تُكرر بشكل أساسي الخوارزمية العامة لبناء آلة من عدة سلاسل نصية، ولكن بدلاً من إضافة الكلمات واحدة تلو الأخرى، فإنها تجتاز شجرة البحث بترتيب بحث العرض أولاً ، وتُضيف الأحرف الجديدة عند مصادفتها أثناء الاجتياز، مما يضمن تعقيدًا خطيًا مُستهلكًا. [ 26 ]

نافذة منزلقة

قد تستفيد بعض خوارزميات الضغط ، مثل LZ77 و RLE، من تخزين آلة لاحقة أو بنية مشابهة ليس للسلسلة بأكملها، بل للجزء الأخير فقط.ك{\displaystyle k}يتم تحديث أحرفها أثناء تحديث السلسلة. وذلك لأن ضغط البيانات عادة ما يكون كبيرًا بشكل ملحوظ، واستخداميا(ن){\displaystyle O(n)}الذاكرة غير مرغوب فيها. في عام 1985، طورت جانيت بلومر خوارزمية للحفاظ على آلة لاحقة على نافذة منزلقة بحجمك{\displaystyle k}فييا(نك){\displaystyle O(nk)}أسوأ الحالات ويا(نسجلك){\displaystyle O(n\log k)}في المتوسط، بافتراض أن الشخصيات موزعة بشكل مستقل ومتساوٍ . كما أظهرت أيضًايا(نك){\displaystyle O(nk)}لا يمكن تحسين التعقيد: إذا اعتبرنا الكلمات بمثابة سلسلة من عدة(أب)مج(أب)مد{\displaystyle (ab)^{m}c(ab)^{m}d}الكلمات، حيثك=6م+2{\displaystyle k=6m+2}ثم عدد الحالات لنافذة بحجمك{\displaystyle k}سيتغير بشكل متكرر مع قفزات الترتيبم{\displaystyle m}مما يجعل حتى التحسين النظري لـيا(نك){\displaystyle O(nk)}بالنسبة لآلات اللواحق المنتظمة، يكون ذلك مستحيلاً. [ 27 ]

ينطبق الأمر نفسه على شجرة اللواحق، لأن رؤوسها تُطابق حالات آلة اللواحق للسلسلة المعكوسة، ولكن يمكن حل هذه المشكلة بعدم تخزين كل رأس يُطابق لاحقة السلسلة كاملةً بشكل صريح، وبالتالي تخزين الرؤوس التي لها حافتان صادرتان على الأقل فقط. اقترح إدوارد فيالا ودانيال غرين في عام 1989 تعديلًا لخوارزمية بناء شجرة اللواحق لماكريت لهذه المهمة؛ [ 28 ] وبعد عدة سنوات، تم الحصول على نتيجة مماثلة باستخدام تعديل لخوارزمية أوكونين بواسطة جيسبر لارسون. [ 29 ] [ 30 ] ظل وجود مثل هذه الخوارزمية، لآلة اللواحق المضغوطة التي تجمع بعض خصائص كل من أشجار اللواحق وآلات اللواحق، سؤالًا مفتوحًا لفترة طويلة حتى اكتشف مارتن سينفت وتوماس دفوراك في عام 2008 أنه من المستحيل وجودها إذا كان حجم الأبجدية اثنين على الأقل. [ 31 ]

إحدى طرق التغلب على هذه العقبة هي السماح بعرض النافذة بالتغير قليلاً مع البقاءيا(ك){\displaystyle O(k)}يمكن تحقيق ذلك باستخدام خوارزمية تقريبية اقترحها إينيناغا وآخرون في عام 2004. ولا يُضمن أن تكون النافذة التي يُبنى عليها آلة اللواحق في هذه الخوارزمية بطولك{\displaystyle k}لكن من المؤكد أن يكون على الأقلك{\displaystyle k}وعلى الأكثر2ك+1{\displaystyle 2k+1}مع توفير تعقيد خطي إجمالي للخوارزمية. [ 32 ]

التطبيقات

آلة لاحقة السلسلةS{\displaystyle S}يمكن استخدامها لحل مشاكل مثل: [ 33 ] [ 34 ]

  • حساب عدد السلاسل الفرعية المميزة منS{\displaystyle S}فييا(|S|){\displaystyle O(|S|)}متصل،
  • إيجاد أطول سلسلة فرعية منS{\displaystyle S}يحدث مرتين على الأقل فييا(|S|){\displaystyle O(|S|)}،
  • إيجاد أطول سلسلة فرعية مشتركة منS{\displaystyle S}وتي{\displaystyle T}فييا(|تي|){\displaystyle O(|T|)}،
  • حساب عدد مرات حدوثتي{\displaystyle T}فيS{\displaystyle S}فييا(|تي|){\displaystyle O(|T|)}،
  • إيجاد جميع حالاتتي{\displaystyle T}فيS{\displaystyle S}فييا(|تي|+ك){\displaystyle O(|T|+k)}، أينك{\displaystyle k}هو عدد مرات الظهور.

يفترض هنا أنتي{\displaystyle T}يتم إدخالها بعد لاحقة أوتوماتونS{\displaystyle S}[ 33 ]

تُستخدم آلات اللواحق أيضًا في ضغط البيانات، [ 35 ] واسترجاع الموسيقى [ 36 ] [ 37 ] ومطابقة تسلسلات الجينوم. [ 38 ]

مراجع

  1. 1 2 كروشيمور وفيرين (1997) ، ص. 192 
  2. 1 2 واينر (1973)
  3. برات (1973)
  4. سليسينكو (1983)
  5. بلومر وآخرون (1984) ، ص 109 
  6. تشين وسيفيراس (1985) ، ص 97 
  7. 1 2 بلومر وآخرون (1987) ، ص 578 
  8. 1 2 إنيناجا وآخرون. (2001) ، ص. 1 
  9. 1 2 كروشيمور وهانكارت (1997) ، الصفحات 3-6 
  10. 1 2 سيريبرياكوف وآخرون. (2006) ، ص. 50-54 
  11. ^ روبتسوف (2019) ، ص 89-94 
  12. هوبكروفت وأولمان (1979) ، الصفحات 65-68 
  13. 1 2 بلومر وآخرون (1984) ، الصفحات 111-114 
  14. 1 2 3 4 5 6 7 8 كروشيمور وهانكارت (1997) ، الصفحات 27-31 
  15. 1 2 3 4 5 6 7 إنيناجا وآخرون. (2005) ، ص 159 – 162 
  16. ^ روبينتشيك وشور (2018) ، ص 1–2 
  17. ^ إنيناجا وآخرون. (2005) ، ص 156-158 
  18. 1 2 3 فوجيشيجي وآخرون. (2016) ، ص. 1–3 
  19. 1 2 3 4 5 6 7 كروشيمور وهانكارت (1997) ، الصفحات 31-36 
  20. ^ باراينكو (2007) ، ص 19 – 22 
  21. بلومر (1987) ، ص 451 
  22. إينيناغا (2003) ، ص. 1 
  23. 1 2 بلومر وآخرون (1987) ، الصفحات 585-588 
  24. بلومر وآخرون (1987) ، الصفحات 588-589 
  25. بلومر وآخرون (1987) ، ص 593 
  26. ^ موهري، مورينو وينشتاين (2009) ، ص 3558–3560 
  27. بلومر (1987) ، الصفحات 461-465 
  28. ^ فيالا وغرين (1989) ، ص. 490 
  29. لارسون (1996)
  30. ^ برودنيك وجيكوفيك (2018) ، ص. 1 
  31. ^ سينفت ودفورجاك (2008) ، ص. 109 
  32. إينيناغا وآخرون (2004)
  33. 1 2 كروشيمور وهانكارت (1997) ، الصفحات 36-39 
  34. كروشيمور وهانكارت (1997) ، الصفحات 39-41 
  35. ^ ياماموتو وآخرون. (2014) ، ص. 675 
  36. ^ كروشيمور وآخرون. (2003) ، ص. 211 
  37. ^ موهري، مورينو وينشتاين (2009) ، ص. 3553 
  38. فارو (2016) ، ص 145 

فهرس

  • بلومر، أ.؛ بلومر، ج.؛ إهرنفويشت، أ.؛ هاوسلر، د.؛ ماكونيل، ر. (1984). "بناء آلة الحالة المحدودة المحددة الدنيا لمجموعة جميع الكلمات الفرعية لكلمة ما عبر الإنترنت في وقت خطي". الأوتوماتا واللغات والبرمجة . سلسلة محاضرات في علوم الحاسوب. المجلد  172. الصفحات 109-118 . doi : 10.1007/3-540-13345-3_9 . ISBN  978-3-540-13345-2.
  • بلومر، أ.؛ بلومر، ج.؛ هاوسلر، د.؛ ماكونيل، ر.؛ إهرنفويشت، أ. (1987). "ملفات معكوسة كاملة لاسترجاع النصوص وتحليلها بكفاءة". مجلة ACM . 34 (3): 578-595 . doi : 10.1145/28869.28873 . Zbl 1433.68118 . 
  • بلومر، جانيت أ. (1987). "ما مقدار DAWG في النافذة؟ خوارزمية نافذة متحركة للرسم البياني الموجه غير الدوري للكلمات". مجلة الخوارزميات . 8 (4): 451-469 . doi : 10.1016/0196-6774(87)90045-9 . Zbl 0636.68109 . 
  • برودنيك، أندريه؛ جيكوفيتش، ماتيفز (2018). "شجرة اللاحقة المنزلقة" . الخوارزميات . 11 (8): 118. أرخايف : 1801.07449 . دوى : 10.3390 / A11080118 . زبل 1458.68043 . 
  • تشين، إم تي؛ سيفراس، جويل (1985). "بناء شجرة الكلمات الفرعية بكفاءة وأناقة". الخوارزميات التوافقية على الكلمات . ص 97-107 . doi : 10.1007/978-3-642-82456-2_7 . ISBN  978-3-642-82458-6.
  • كروشيمور، ماكسيم؛ هانكارت، كريستوف (1997). "آلات مطابقة الأنماط". دليل اللغات الرسمية . ص 399-462 . doi : 10.1007/978-3-662-07675-0_9 . ISBN  978-3-642-08230-6.
  • كروشيمور، ماكسيم؛ فيرين، رينو (1997). "حول الرسوم البيانية للكلمات الموجهة المدمجة غير الدورية". هياكل في المنطق وعلوم الحاسوب . سلسلة محاضرات في علوم الحاسوب. المجلد  1261. الصفحات 192-211 . doi : 10.1007/3-540-63246-8_12 . ISBN  978-3-540-63246-7.
  • كروشيمور، ماكسيم؛ إليوبولوس، كوستاس س. نافارو، جونزالو؛ بينزون، يوان ج. (2003). “نهج آلي لاحقة متوازية للبت لـ (δ، γ) – المطابقة في استرجاع الموسيقى”. معالجة السلسلة واسترجاع المعلومات . ملاحظات محاضرة في علوم الكمبيوتر. المجلد.  2857. ص 211 – 223. دوى : 10.1007 / 978-3-540-39984-1_16 . رقم ISBN  978-3-540-20177-9.
  • سيريبرياكوف، فلاديمير؛ جالوتشكين، مكسيم بافلوفيتش؛ فوروجيان، ميران جابيبولايفيتش؛ جونشار، دميتري رسلانوفيتش (2006). نظرية وتحقيق языков программирования: Учебное пособие (PDF) (بالروسية). موسكو: مطبعة إم زد. رقم ISBN 5-94073-094-9.
  • فارو، سيمون (2016). "تقييم وتحسين الخوارزميات السريعة للمطابقة الدقيقة لتسلسلات الجينوم". خوارزميات علم الأحياء الحاسوبي . سلسلة محاضرات في علوم الحاسوب. المجلد  9702. الصفحات 145-157 . doi : 10.1007/978-3-319-38827-4_12 . ISBN  978-3-319-38826-7.
  • فيالا، إي آر؛ غرين، دي إتش (1989). "ضغط البيانات باستخدام نوافذ محدودة". اتصالات رابطة آلات الحوسبة . 32 (4): 490-505 . doi : 10.1145/63334.63341 .
  • فوجيشيغي، يوتا؛ تسوجيمارو، يوكي؛ إينيناغا، شونسوكي؛ باناي، هيديو؛ تاكيدا، ماسايوكي (2016). "حساب مجموعات الكلمات الرقمية المعممة (DAWGs) والكلمات الغائبة الدنيا في زمن خطي للأبجديات العددية الصحيحة". الندوة الدولية الحادية والأربعون حول الأسس الرياضية لعلوم الحاسوب (MFCS 2016) . وقائع لايبنيز الدولية في المعلوماتية. شلوس داغشتول - مركز لايبنيز للمعلوماتية. الصفحات  38:1-38:14. doi : 10.4230/LIPICS.MFCS.2016.38 . Zbl 1398.68703 . 
  • هوبكروفت، جون إدوارد؛ أولمان، جيفري ديفيد (1979). مقدمة في نظرية الأوتوماتا واللغات والحوسبة (الطبعة الأولى  ). ماساتشوستس: أديسون-ويسلي. ISBN 978-81-7808-347-6. OL 9082218M . 
  • إينيناغا، شونسوكي (2003). "البناء ثنائي الاتجاه لأشجار اللواحق" (ملف PDF) . المجلة الإسكندنافية للحوسبة . 10 (1): 52-67 . CiteSeerX 10.1.1.100.8726 . 
  • إنيناجا، شونسوكي؛ هوشينو، هيروماسا؛ شينوهارا، أيومي؛ تاكيدا، ماسايوكي؛ أريكاوا، سيتسو؛ موري، جيانكارلو؛ بافيسي، جوليو (2005). “الإنشاء عبر الإنترنت للرسوم البيانية للكلمات غير الحلقية المدمجة والموجهة”. الرياضيات التطبيقية المنفصلة . 146 (2): 156–179 . دوى : 10.1016/J.DAM.2004.04.012 . زبل 1084.68137 . 
  • إنيناجا، شونسوكي؛ هوشينو، هيروماسا؛ شينوهارا، أيومي؛ تاكيدا، ماسايوكي؛ أريكاوا ، سيتسو (2001). "إنشاء CDAWG للتجربة" (PDF) . مؤتمر براغ لعلم السلاسل. الإجراءات . ص 37 – 48. CiteSeerX 10.1.1.24.2637 .  
  • إنيناجا، شونسوكي؛ شينوهارا، أيومي؛ تاكيدا، ماسايوكي؛ أريكاوا ، سيتسو (2004). “رسوم بيانية مدمجة موجهة للكلمات غير الحلقية لنافذة منزلقة”. مجلة الخوارزميات المنفصلة . 2 : 33 – 51. دوى : 10.1016 / S1570-8667 (03)00064-9 . زبل 1118.68755 . 
  • لارسون، ن. ج. (1996). "تطبيق موسع لأشجار اللواحق على ضغط البيانات". وقائع مؤتمر ضغط البيانات - DCC '96 . الصفحات 190-199 . doi : 10.1109/DCC.1996.488324 . ISBN  0-8186-7358-3.
  • مهري، مهريار؛ مورينو، بيدرو؛ وينشتاين، يوجين (2009). "خوارزمية بناء آلة اللواحق العامة وحدود المساحة". علوم الحاسوب النظرية . 410 (37): 3553-3562 . doi : 10.1016/J.TCS.2009.03.034 . Zbl 1194.68143 . 
  • باراوينكو، دميتري أ. (2007). Обработка строк на основе suffиксный автоматов (PDF) (بالروسية). سانت بطرسبرغ: جامعة ITMO.
  • برات، فوغان رونالد (1973). تحسينات وتطبيقات لأداة البحث عن التكرارات لـ وينر . OCLC 726598262 . 
  • روبتوف ، ألكسندر ألكسندروفيتش (2019). Заметки и задачи о regулярный языкан и конечныно автоматан (PDF) (بالروسية). موسكو: معهد موسكو للفيزياء والتكنولوجيا. رقم ISBN 978-5-7417-0702-9.
  • روبينتشيك، ميخائيل؛ شور، أرسيني م. (2018). “EERTREE: بنية بيانات فعالة لمعالجة المتناظرات في السلاسل”. المجلة الأوروبية للتوافقيات . 68 : 249 – 265. أرخايف : 1506.04862 . دوى : 10.1016/J.EJC.2017.07.021 . زبل 1374.68131 . 
  • سينفت، مارتن؛ دفوراك، توماش (2008). "إتقان CDAWG المنزلق". معالجة السلاسل واسترجاع المعلومات . سلسلة محاضرات في علوم الحاسوب. المجلد  5280. الصفحات 109-120 . doi : 10.1007/978-3-540-89097-3_12 . ISBN  978-3-540-89096-6.
  • سليسينكو، أ.و. (1983). "الكشف عن الدورات ومطابقة السلاسل في الوقت الحقيقي". مجلة الرياضيات السوفيتية . 22 (3): 1316-1387 . doi : 10.1007/BF01084395 . Zbl 0509.68043 . 
  • واينر، بيتر (1973). "خوارزميات مطابقة الأنماط الخطية". الندوة السنوية الرابعة عشرة حول نظرية التبديل والأتمتة (سوات 1973) . الصفحات 1-11 . doi : 10.1109/SWAT.1973.13 . 
  • ياماموتو، جونيتشي؛ إي، توموهيرو؛ باناي، هيديو؛ إينيناغا، شونسوكي؛ تاكيدا، ماسايوكي (2014). "تحليل ليمبل-زيف المضغوط عبر الإنترنت بشكل أسرع". الندوة الدولية الحادية والثلاثون حول الجوانب النظرية لعلوم الحاسوب (STACS 2014) . وقائع لايبنيز الدولية في المعلوماتية. شلوس داغشتول - مركز لايبنيز للمعلوماتية. الصفحات 675-686 . doi : 10.4230/LIPICS.STACS.2014.675 . Zbl 1359.68341 .  
  • شعار ويكيميديا ​​كومنزالوسائط المتعلقة بآلة اللواحق على ويكيميديا ​​كومنز
  • مقال عن خوارزميات E-Maxx في اللغة الإنجليزية