تعقيد الزمن

في علم الحاسوب، فإن تعقيد زمان خوارزمية هو تحديد الزمن الذي تستغرقه تلك الخوارزمية لتعمل كتابع لحجم مدخلات المسألة. غالباً ما يعبر عن تعقيد زمن خوارزمية بإستخدام تدوين أوه الكبيرة، الذي يستبعد الثوابت المضروبة والحدود الأقل رتبة. وعندمايستخدم التدوين السابق لوصف تعقيد زمن خوارزمية ما فإن ذلك الوصف يكون بشكل مقارب asymptotically، أي عندما يسعى حجم المدخلات إلى اللانهاية. على سبيل المثال ، إذا كان أقصى زمن تستغرقه خوارزمية من أجل جميع المدخلات من حجم n هو ،فإن تعقيد الزمن المقارب هو .

ويقدر عادة تعقيد وقت خوارزمية من خلال إحصاء عدد العمليات الأولية التي تؤديها الخوارزمية، باعتبار أن تنفيذ كل عملية ابتدائية يأخذ مقداراً محدداً من الزمن. لذلك فإن الوقت الذي تستغرقه الخوارزمية وعدد العمليات الأولية المنفذة فيها يختلف بمقدار معامل ثابت على الأكثر.

وبما أنه يمكن للخوارزمية أن تستغرق مقداراً مختلفاً من الوقت بالنسبة لمدخلات من الحجم نفسه، فإن المقياس الأكثر استخداما في تعقيد الزمن، هو تعقيد زمن أسوأ الحالات للخوارزمية، والذي يعبر عنه باستخدام ، وهو الحد الأعظمي من الوقت الذي يمكن أن يستهلكه أي دخل من الحجم n. تصنف تعقيدات زمن الخوارزميات وفقاً لطبيعة التابع . فعلى سبيل المثال، تسمى خوارزمية بتابع خوارزمية زمن خطي ، وخوارزمية بتابعو خوارزمية زمن أسي.

جدول بأشهر تعقيدات الزمن

يلخص الجدول التالي أهم أصناف تعقيدات الزمن The following table summarises some classes of commonly encountered time complexities. In the table, poly(x) = xO(1), i.e., polynomial in x.

quasi-polynomial time || QP || 2poly(log n) || nlog log n, nlog n || Best-known O(log2n)-approximation algorithm for the directed Steiner tree problem.
الاسم صنف التعقيد وقت التشغيل أمثلة على أوقات التشغيل أمثلة على الخوارزميات
وقت ثابت 10 تحديد ما إذا كان عدد ما زوجياً أو فردياً
آكيرمان العكسي Amortized time per operation using a disjoint set
لوغاريتمي تكراري Distributed coloring of cycles
لوغاريتمي لوغاريتمي Amortized time per operation using a bounded priority queue[1]
زمن لوغاريتمي DLOGTIME , Binary search
زمن كثير-لوغاريتمي poly(log (n)) >
قوة كسرية , , Searching in a kd-tree
زمن خطي O(n) n Finding the smallest item in an unsorted array
"n لوغاريتم نجمة n" O(n قالب:Log-star n) Seidel's polygon triangulation algorithm.
زمن خطي-حسابي O(n log n) n log n, log n! Fastest possible comparison sort
quadratic time O(n2) n2 Bubble sort; Insertion sort
زمن تكعيبي O(n3) n3 Naive multiplication of two n×n matrices. Calculating partial correlation.
زمن كثير حدودي P 2O(log n) = poly(n) n, n log n, n10 Karmarkar's algorithm for linear programming; AKS primality test
sub-exponential time
(first definition)
SUBEXP O(2nε) for all ε > 0 O(2log nlog log n) Assuming complexity theoretic conjectures, BPP is contained in SUBEXP.
sub-exponential time
(second definition)
2o(n) 2n1/3 Best-known algorithm for integer factorization and graph isomorphism
زمن أسي E 2O(n) 1.1n, 10n Solving the traveling salesman problem using dynamic programming
زمن أسي EXPTIME 2poly(n) n!, nn, 2n2
زمن عاملي O(n!) n! Solving the traveling salesman problem via brute-force search
زمن أسي مزدوج 2-EXPTIME 22poly(n) 23n Deciding the truth of a given statement in Presburger arithmetic


مراجع

  1. ^ Mehlhorn, Kurt; Naher, Stefan (1990). "Bounded ordered dictionaries in O(log log N) time and O(n) space". Information Processing Letters.