freeCodeCamp/guide/arabic/computer-science/notation/big-o-notation/index.md

6.4 KiB

title localeTitle
Big O Notation Big O Notation

Big O Notation

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

يُستخدم التدوين الكبير O في علم الكمبيوتر لوصف أداء خوارزمية أو تعقيدها. في الواقع Big O Notation هو رمز خاص يخبرك بمدى سرعة الخوارزمية. بالطبع ستستخدم خوارزميات محددة مسبقًا - وعندما تفعل ذلك ، من الضروري أن تفهم مدى السرعة أو البطء.

ما هو شكل O الكبير

يخبرك هذا عن عدد العمليات التي ستقوم بها خوارزمية. يطلق عليه تدوين Big O لأنك وضعت "Big O" أمام عدد العمليات.

يضع Big O وقت تشغيل أسوأ حالة

لنفترض أنك طبيب يعالج هاري أبيت ، قد تنظر في السجلات الإلكترونية المتعلقة بالتاريخ الطبي لهاري أبيت (فهو أول شخص في قائمة). دعونا نعتبر الوضع عندما تعتمد حياته على جميع البيانات الطبية المتاحة. لنفترض أنك تستخدم بحثًا بسيطًا للبحث عن شخص في السجلات الإلكترونية. أنت تعلم أن البحث البسيط يأخذ O (n) وقتًا للتشغيل ، لذلك سيكون عليك البحث في كل إدخال فردي لـ Abbit. بالطبع ، لقد لاحظت أن Abbit هو الإدخال الأول ، لذلك لم يكن عليك النظر إلى كل إدخال - وجدته في المحاولة الأولى.

هل أخذت هذه الخوارزمية وقت O (n)؟ أو هل استغرق ذلك وقت (1) لأنك وجدت الشخص في المحاولة الأولى؟

في هذه الحالة ، هذا هو السيناريو الأفضل. لكن تدوين Big O هو حول سيناريو الحالة الأسوأ. هذا هو O (n) الوقت (لا يزال البحث البسيط). إنه تأكيد على أن البحث البسيط لن يكون أبطأ أبداً من زمن O (n).

تنمو أوقات تشغيل الخوارزمية بمعدلات مختلفة

لنفترض أنه يستغرق 1 ميلي ثانية للتحقق من إدخال واحد. مع البحث البسيط ، يجب على الطبيب التحقق من 10 إدخالات ، بحيث يستغرق البحث 10 مللي ثانية للتشغيل. من ناحية أخرى ، عليه فقط التحقق من 3 عناصر باستخدام خوارزمية البحث الثنائي (log10 هو 3 تقريبًا) ، بحيث يستغرق البحث 3 مللي ثانية للتشغيل.

لكن من الناحية الواقعية ، سيكون لدى القائمة أكثر من مائة عنصر.

إذا حدث ذلك ، فكم من الوقت سيستغرق البحث البسيط؟ ما المدة التي يستغرقها البحث الثنائي؟

سيكون وقت التشغيل للبحث البسيط مع 1 مليار عنصر 1 مليار مللي ثانية ، وهو 11 يومًا. المشكلة هي أن أوقات التشغيل للبحث الثنائي والبحث البسيط لا تنمو بنفس المعدل .

ومع ازدياد قائمة الأرقام ، يصبح البحث الثنائي أسرع بكثير من البحث البسيط. أي أنه مع زيادة عدد العناصر ، يستغرق البحث الثنائي وقتًا أطول للتشغيل. لكن البحث البسيط يتطلب الكثير من الوقت للتشغيل. ومع ازدياد قائمة الأرقام ، يصبح البحث الثنائي أسرع بكثير من البحث البسيط.

ولهذا السبب لا يكفي معرفة المدة التي تستغرقها الخوارزمية للتشغيل - تحتاج إلى معرفة كيفية زيادة وقت التشغيل مع زيادة حجم القائمة. هذا هو المكان الذي تدخل فيه Big O.

يتيح لك التدوين الكبير O مقارنة عدد العمليات

على سبيل المثال ، افترض أن لديك قائمة بالحجم n. يحتاج البحث البسيط للتحقق من كل عنصر ، لذلك سوف يستغرق عمليات n. وقت التشغيل في تدوين Big O هو O (n).

أين الثواني؟

لا يوجد شيء - لا يخبرك Big O بالسرعة في ثوان. يتيح لك التدوين الكبير O مقارنة عدد العمليات. يخبرك مدى سرعة نمو الخوارزمية.

</ P

أوقات التشغيل الأكثر شيوعًا للخوارزميات

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

  1. O (log n) ، تُعرف أيضًا باسم وقت التسجيل . مثال: بحث ثنائي.
  2. O (n) ، والمعروف أيضًا بالوقت الخطي . مثال: بحث بسيط.
  3. O (n * log n) مثال: خوارزمية الفرز السريع ، مثل الخوارزمية السريعة (الواردة في الفصل 4).
  4. على 2) مثال: خوارزمية الفرز البطيئة ، مثل فرز الفرز (الوارد في الفصل 2).
  5. على!) مثال: خوارزمية بطيئة حقاً ، مثل مندوب مبيعات السفر (القادم في المرة القادمة!).

تتناول هذه المقالة فقط أساسيات Big O. للحصول على شرح أكثر تفصيلاً ، ألقِ نظرة على دلائل FreeCodeCamp المعنية بالخوارزميات.

معلومات اكثر