**أطول متتالية جزئية متزايدة** في علم الحاسوب، تعالج مسألةُ إيجاد البحث عن متتالية جزئية من متتالية معطاة بحيث تكون عناصر هذه المتتالية الجزئية مرتبة، تصاعديّاً أو تنازليًّا، وبحيث تكون أطول ما يمكن .وهذه المتتالية الجزئية ليست بالضرورة ناتجة عن عناصر متجاورة كما أنها يمكن ألا تكون وحيدة ضمن المتتالية الأصلية.
تمت دراسة مسألة إيجاد أطول متتالية جزئية متزايدة في سياق دراسة عدة فروع متعلقة بالرياضيات، متضمنة الخوارزميات ، تجمع مصفوفة غاوسية،نظرية تمثيل الزمر، والفيزياء. يمكن حل مسألة إيجاد أطول متتالية جزئية متزايدة في زمن( O(*n* log *n*، حيث *n* هو طول متتالية الدخل .

مثال
----

في متتالية ڤان دير كورپت الثنائية

0، 8، 4، 12، 2، 10، 6، 14، 1، 9، 5، 13، 3، 11، 7، 15، …
إحدى المتتاليات الجزئية الأطول المتزايدة هي

0، 2، 6، 9، 13، 15.
طول هذه المتتالية الجزئية هو 6; أي أن المتتالية الأصلية لا تحوي متتالية جزئية من 7 عناصر يمكنها تشكيل متتالية جزئية متزايدة.كما أن المتتالية الجزئية المتزايدة الأطول ليست وحيدة فمثلاً لدينا 

0، 4، 6، 9، 11، 15 أو 0، 4، 6، 9، 13، 15
هما متتاليتان جزئيتان متزايدتان من نفس طول المتتالية الجزئية المتزايدة الأطول .

علاقتها بمسائل خوارزمية أخرى
----------------------------

مسألة إيجاد المتتالية الجزئية المتزايدة الأطول لها تعلق وطيد بمسألة إيجاد أطول متتالية جزئية مشتركة، والتي تحتاج زمناً من الدرجة الثالثة لحلها باستخدام البرمجة الديناميكية : إن أطول متتالية جزئية متزايدة في متتالية ما *S* هي أطول متتالية جزئية مشتركة بين المتتاليتين *S* و *T*، حيث *T* هي نتيجة ترتيب المتتالية *S*.

من أجل الحالة الخاصة التي يكون فيها الدخل عبارة عن تبديل للأعداد الصحيحة 1، 2، ...، *n*، يمكن لهذا الحل أن يكون فعالاً، ليعطينا حلاً بحدود( O(*n* log log *n*.

خوارزمية فعالة للحل
-------------------

الخوارزمية التالية تحلّ مسألة إيجاد أطول متتالية جزئية متزايدة باستخدام المصفوفات والبحث الثنائي. 
فهي تقوم بمعالجة عناصر المتتالية تباعاً، وتقوم بحفظ أطول متتالية جزئية تم العثور عليها حتى الآن. إذا رمزنا إلى عناصر المتتالية بـ [X[1]، X[0، الخ. فبعد معالجة العنصر [X[*i*، تكون الخوارزمية قد حفظت قيماً في مصفوفتين:

[M[*j* — تحفظ قيمة الفهرس *k* لأصغر عنصر [X[*k* حيث توجد متتالية جزئية متزايدة طولها *j* وتنتهي بالعنصر [X[*k*في المجال *k* ≤ *i* (لاحظ أن لدينا هنا *j* ≤ *k* ≤ *i* ، لأن *j* يمثل طول المتتالية الجزئية المتزايدة، و*k* يمثل رقم فهرس انتهاء المتتالية الجزئية.فمن الواضح أنه لا يمكننا الحصول على متتالية جزئية متزايدة طولها 13 عندما نكون لانزال عند العناصر رقم 11 ،. *k* ≤ *i* بالتعريف).
[P[*k* — تحفظ رقم الفهرس للعنصر الذي يسبق [X[*k* في أطول متتالية جزئية متزايدة تنتهي عند [X[*k*.
إضافة لما سبق فإن الخوارزمية تحفظ عدداً L يمثل طول أطول متتالية جزئية متزايدة تم العثور عليها حتى الآن.

في الخوارزمية أدناه سنزيح المصفوفة M بالعنصر [M[0 الذي لن يستخدم للتسهيل (فالمصفوفة تستخدم الترقيم بدءاً من الصفر ).

لاحظ أن المتتالية [[X[M[1]]، X[M[2]]، ...، X[M[L تكون غير متناقصة عند أي نقطة من الخوارزمية، لذلك إذا كان هناك متتالية جزئية طولها *i* تنتهي عند [[X[M[*i*
فهناك أيضاً متتالية جزئية طولها *i*-1 تنتهي عند قيمة أصغر : وهي القيمة [[[X[P[M[*i*. لذلك نقوم بعمل بحث ثنائي في المتتالية في زمن لوغاريتمي .

سنكتب الخوارزمية بالعربية لتقريبها إلى الفهم أكثر بحيث توضح المسميات وظيفة كل متحول ومصفوفة وذلك كما يلي :

* سنرمز بالكلمة **أمجد** لــأطول متتالية جزئية متزايدة .
* [M[j تكافئها : **رقم\_أصغر\_نهاية\_لأمجد\_بطول\_ما**[**ج**]
* [P[k تكافئها : **رقم\_السابق\_في\_أمجد\_لعنصر\_ما**[**ك**]
* [X[k تكافئها : **الدخل**[**ك**]
* عدد العناصر N يقابله **الحجم**
* طول أمجد تم العثور عليها L يقابله **الطول**

نص الخوارزمية بطريقة **شبه الكود** كما يلي :

```
**رقم\_السابق\_في\_أمجد\_لعنصر\_ما** = *مصفوفة طولها* **الحجم**
**رقم\_أصغر\_نهاية\_لأمجد\_بطول\_ما** = *مصفوفة طولها* **الحجم**+1
**الطول** = 0

*من أجل* المتحول س *ضمن المجال من* 0 *إلى* **الحجم**-1 :
 \\ بحث ثنائي للعثور على أكبر قيمة تحقق العلاقتين **ج** ≤ **الطول**
 \\ و **الدخل**[ **رقم\_أصغر\_نهاية\_لأمجد\_بطول\_ما**[**ج**] ] <**الدخل**[**س**]
 **رقم\_القيمة\_الأدنى** = 1
 **رقم\_القيمة\_الأعلى** = **الطول**
 *طالما* **رقم\_القيمة\_الأدنى** ≤ **رقم\_القيمة\_الأعلى** :
  **رقم\_القيمة\_الوسطى** = (**رقم\_القيمة\_الأدنى**+**رقم\_القيمة\_الأعلى**)\2
  *إذا كان* **الدخل**[ **رقم\_أصغر\_نهاية\_لأمجد\_بطول\_ما**[**رقم\_القيمة\_الوسطى**] ] <**الدخل**[**س**]:
   **رقم\_القيمة\_الأدنى** = **رقم\_القيمة\_الوسطى** +1
  *وإلا :*
   **رقم\_القيمة\_الأعلى** = **رقم\_القيمة\_الوسطى** -1
  *نهاية جملة الشرط*
 *نهاية حلقة التكرار*
   
 \\ بعد انتهاء البحث،**رقم\_القيمة\_الأدنى** أكبر بمقدار 1 من
 \\ طول أمجد التي تسبق **الدخل**[**س**]
 **الطول\_الجديد** = **رقم\_القيمة\_الأدنى**
 \\ العنصر الذي يسبق **الدخل**[**س**] في أمجد المنتهية ب**الدخل**[**س**]
 \\ هو آخر عنصر من أمجد ذات الطول **الطول\_الجديد** -1 
 **السابق\_في\_أمجد\_لعنصر\_ما**[**س**] = **رقم\_أصغر\_نهاية\_لأمجد\_بطول\_ما**[**الطول\_الجديد** -1 ]
   
 *إذا كان* **الطول\_الجديد**> **الطول** :
  \\ أي أننا وجدنا أمجد جديدة أطول من السابقة
  \\ لذلك علينا تحديث قيمة **الطول** و **رقم\_أصغر\_نهاية\_لأمجد\_بطول\_ما**
  **رقم\_أصغر\_نهاية\_لأمجد\_بطول\_ما**[**الطول\_الجديد**] = **س**
  **الطول** = **الطول\_الجديد**
 *وإلا إذا كان* **الدخل**[**س**] <**الدخل**[**رقم\_أصغر\_نهاية\_لأمجد\_بطول\_ما**[**الطول\_الجديد**]]:
  \\ أي أننا عثرنا على قيمة أصغر لنهاية أمجد بطول **الطول\_الجديد**
  \\ فعلينا تغيير هذه القيمة
   **رقم\_أصغر\_نهاية\_لأمجد\_بطول\_ما**[**الطول\_الجديد**] = **س**
 *نهاية جملة الشرط* 
نهاية حلقة التكرار

\\إعادة بناء أمجد
**عناصر\_أمجد** = *مصفوفة* طولها **الطول**
**ك** = **رقم\_أصغر\_نهاية\_لأمجد\_بطول\_ما**[**الطول**]
*من أجل المتحول* **س** *في المجال من* **الطول-1** *إلى* 0 :
  **عناصر\_أمجد[س] = الدخل [ك]**
  **ك = رقم\_السابق\_في\_أمجد\_لعنصر\_ما[ك]**
*نهاية حلقة التكرار*

*قم بإعادة* **عناصر\_أمجد**
*نهاية الخوارزمية*
```

الزمن الكلي الذي تستغرقه الخوارزمية باستخدام رمز O الكبير هو (O(n log n وذلك لأن الخوارزمية تقوم بعملية بحث ثنائي من أجل كل عنصر .ناقش العالم فريدمان(1975) تعديلات على الخوارزمية نسبها إلى دونالد كنوث ، تختبر خوارزميته المعدلة فيما إذا كان من الممكن استخدام العنصر [X[i لتمديد المتتالية الجزئية الحالية الأطول، وذلك خلال زمن ثابت، وذلك قبل القيام بالبحث الثنائي .

تستخدم الخوارزمية وفق هذا التعديل عدداً أقصى من عمليات المقارنة هو (n log2 n − n log2log2 n + O(n في الحالة الأسوأ، وهو زمن مثالي لخوارزمية تعتمد المقارنة وذلك حتى الوصول إلى الثابت في عبارة (O(n .

حدود الطول
----------

حسب مبرهنة إيردوس-سيكريس، فإن أي متتالية من n2+1 عدد صحيح مختلف إما أن يكون لها متتالية جزئية متزايدة أو متناقصة طولها n+1.

في القوائم التي تكون فيها كل تبديلات القائمة متماثلة تقريباً، يكون الطول المتوقع لأطول متتالية جزئية متزايدة هو تقريباً2√n.
عندما تسعى n إلى اللانهاية، يكون طول أطول متتالية جزئية متزايدة في متتالية مبدّلة عشوائياً من n عنصر ذا توزّع يقترب من توزّع Tracy–Widom ، أي توزع أكبر قيمة ذاتية لمصفوفة عشوائية ضمن تجمع الغاوسي المتكامل .

خوارزميات متصلة على الخط
------------------------

انظر أيضًا
----------

* خوارزمية

مراجع
-----

1. ↑  Aldous، David؛ Diaconis، Persi (1999)، "Longest increasing subsequences: from patience sorting to the Baik–Deift–Johansson theorem"، *Bulletin of the American Mathematical Society*، ج. 36، ص. 413–432، DOI:10.1090/S0273-0979-99-00796-X.
2. ↑  Hunt, J.; Szymanski, T. (1977)، "A fast algorithm for computing longest common subsequences"، *Communications of the ACM*، ج. 20، ص. 350–353، DOI:10.1145/359581.359603.`{{استشهاد}}`: صيانة CS1: أسماء متعددة: قائمة المؤلفين (link)

* أيقونة بوابةبوابة إحصاء
* أيقونة بوابةبوابة خوارزميات
* أيقونة بوابةبوابة علم الحاسوب