سؤال

أحاول حل هذا التكرار

تي(ن) = 3 تي(ن/2) + ن إل جي ن ..

لقد توصلت إلى الحل الذي ينتمي إلى حالة نظرية الماجستير 2 حيث أن n lg n هو O(n^2)

ولكن بعد الرجوع إلى دليل الحل لاحظت هذا الحل الذي لديهم

enter image description here

يقول الحل أن n lg n = O ( n ^(lg 3 - e)) لـ e بين 0 و0.58

فهذا يعني أن n lg n هو O(n) ..هل هذا صحيح؟نسيت شيئا ما هنا؟

أليس nlgn O(n^2) ؟

هل كانت مفيدة؟

المحلول

سيشرح هذا الأمور بشكل أفضل أدخل وصف الصورة هنا

نصائح أخرى

n*log(n) ليس O(n^2).يُعرف باسم شبه الخطي وينمو بشكل أبطأ بكثير من O(n^2).في الحقيقة n*log(n) أقل من كثير الحدود.

بعبارة أخرى:

O(n*log(n)) < O(n^k)

أين k > 1

في المثال الخاص بك:

3*T(2n) -> O(n^1.585)

منذ O(n^1.585) هو متعدد الحدود ويهيمن O(n*log(n)), ، يسقط المصطلح الأخير لذا يكون التعقيد النهائي عادلاً O(n^1.585).

n lg3 ليس O (n).إنها تتعدى O (n) ... في الواقع ، أي أس في n أكبر من 1 ينتج عنه وقت أطول بشكل مقارب من O (n).نظرًا لأن lg (3) يبلغ حوالي 1.58 ، طالما أنك تطرح أقل من .58 من الأس ، فستكون أكبر من O (n) بشكل مقارب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top