Hello our valued visitor, We present you the best web solutions and high quality graphic designs with a lot of features. just login to your account and enjoy ...

<none>

Hello our valued visitor, We present you the best web solutions and high quality graphic designs with a lot of features. just login to your account and enjoy ...

CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
5 + 6 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.

أخبار تكنلوجيا

أنت هنا

رقم الخبر عنوان الخبر التفاصيل
65,392 التسريبات تشير لدعم هاتف سامسونج Galaxy S22 Ultra للقلم الذكي

ظهرت تسريبات جديدة حول سلسلة هواتف سامسونج Galaxy S22 الرائدة، تظهر التصميم الخاص بالهواتف وتؤكد دعم نسخة Ultra للقلم الذكي S Pen كما فعل سابقه.

وأشارت التسريبات إلى أن أسماء السلسلة ستأتي مع 3 هواتف تحمل تصميمات مشابهة إلى حد بعيد من سلسلة S21، فيما ستقوم الشركة بتغيير اسم النسخة الأوسط منها من بلس إلى برو وفقُا لبعض المصادر مع الإبقاء على النسخة العادية والقوية بنفس الأسماء.

ويتمحور الخلاف في التصميم مقارنة مع الجيل السابق حول قدوم نسخة Galaxy S22 Ultra مع تصميم كاميرا وهيكل يختلف قليلًا عن نسخ العام الماضي وكذلك عن هواتف باقي السلسلة، حيث سيكون أقرب لتصميم نوت 20 ربما مع تصميم كاميرات مختلف قليلًا. وهذه النسخة ستدعم القلم الذكي الذي ربما يساهم في التخلي عن سلسلة نوت مجددًا خلال العام المقبل.

يتوقع أن تظهر نسخة ألترا مع كاميرا 108 ميجباكسل وأحدث شاشات سامسونج بتقنية AMOLED بسرعة تحديث 120 هرتز، وبطارية كبيرة مع شحن سريع 65 واط وشحن لاسلكي وربما ميزة الشحن العكسي، فيما يمكن أن تصل نسخة بلس أو برو مع كاميرا رئيسية بدقة 50 ميجابكسل وشاشة 6.55 بوصة، بينما ستكون النسخة العادية مع شاشة شبيهة لكن مع كاميرا أقل وذاكرة أقل.

ومن المنتظر وصول سلسلة جالكسي S22 من سامسونج في الربع الأول من 2022 – وربما مع بداية السنة في شهر يناير.

المصدر:

OnLeaks

التدوينة التسريبات تشير لدعم هاتف سامسونج Galaxy S22 Ultra للقلم الذكي ظهرت أولاً على عالم التقنية.

65,378 لتجنب التفاعلات السلبية.. تويتر تضيف خيارات غير مسبوقة

تسعى تويتر لتطوير خياراتها للحد من أي تفاعلات سلبية على منصتها، فقد استعرضت مؤخراً بعض خيارات التحكم الجديدة التي يمكن أن تساعد المستخدمين على ذلك.

وطوّرت المنصة أولاً خيارات "تصفية" و"حد" جديدة، التي يتم تصميمها لمساعدة المستخدمين على استبعاد المحتوى الضار المحتمل والأشخاص الذين قاموا بإنشائه، من ردودهم.

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

إخفاء أي ردود غير مرغوبة

ويمكنك أيضاً حظر هذه الحسابات نفسها من الرد على تغريداتك في المستقبل.

كما، قد يعني خيار التصفية أن أي ردود تختار إخفاءها لن تكون مرئية لأي شخص آخر في التطبيق أيضاً، باستثناء الشخص الذي قام بتغريدها، وهو ما يشبه خيار "إخفاء التعليقات" في فيسبوك.

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

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

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

حظر بعض الكلمات

وتطور أيضاً ميزة "Word Filters" الجديدة، التي تعد امتداداً لأدوات حظر الكلمات الرئيسية الحالية. وتعتمد على أنظمة الكشف الآلي لتصفية التعليقات التي يحتمل أن تكون مسيئة.

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

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

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

65,307 كلوب هاوس تطلق ميزة Wave

أضافت منصة كلوب هاوس وظيفة جديدة لتسهيل اللقاءات الاجتماعية التلقائية واللقاءات بين الأصدقاء. ويسمح لك خيار Wave الجديد بإرسال إشارة إلى اتصالاتك عندما تكون نشطًا في التطبيق للدردشة.

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

وقالت المنصة: يتم هنا إنشاء أكثر من 700000 غرفة كل يوم. العديد من هذه اللحظات المشتركة التي تعرفها وتحبها. ولكن غالبًا ما تكون اللحظات الخاصة الأصغر بين الأصدقاء هي التي تضع الابتسامات على الوجوه.

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

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

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

كلوب هاوس تريد جذب الأصدقاء إلى المحادثات الصوتية

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

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

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

65,281 البنك المركزي الصيني يحظر أي تعامل بالعملات الرقمية المشفرة وعلى رأسها البتكوين

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

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

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

وتسبب هذا القرار القوي في الصين بتراجع قيمة البتكوين بقيمة تجاوزت 3 آلاف دولار، وكذلك تراجع غيرها من العملات الرقمية المشفرة.

المصدر:

Central Bank of China

التدوينة البنك المركزي الصيني يحظر أي تعامل بالعملات الرقمية المشفرة وعلى رأسها البتكوين ظهرت أولاً على عالم التقنية.

65,267 مجموعة من أفضل ألعاب بلاي ستيشن 4 لعام 2021

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

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

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

نشارككم في هذا المقال مجموعة من أفضل ألعاب بلاي ستيشن 4 لعام 2021. لكن هذا لا يعني أن هذه الألعاب قد تم إصدارها في عام 2021 حصرًا، بل أنها تستحق اللعب حتى في وقتنا الحالي.

1– لعبة Marvel’s Spider-Man

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

وتقدم اللعبة قصة مميزة وتجربة لعب رائعة إلى جانب أنها تعمل بشكل ممتاز على جهاز بلاي ستيشن 4 وتعتبر واحدة من أهم ألعابه وأحدثها. كما تقدم اللعبة مهام جانبية عديدة ورسوم مميزة. شاهد الفيديو.

2– لعبة Shadow of the Colossus

تم إطلاق هذه اللعب للمرة الأولى لجهاز بلاي ستيشن 2 من تطوير شركة Bluepoint Games. لكن إصدارها المحسن والموجه إلى جهاز بلاي ستيشن 5 يعتبر من أفضل الإصدارات على الإطلاق.

وتقدم اللعبة رسومات مميزة مع تجربة لعب حابسة للأنفاس والتي تتضمن الحروب والمنافسات مع العمالقة. كما تقدم اللعبة قصة مميزة ومهام جانبية أكثر من رائعة. شاهد الفيديو.

3– أبرز ألعاب بلاي ستيشن 4: لعبة God of War

تعتبر لعبة God of War واحدة من أهم الألعاب في تاريخ ألعاب الفيديو عمومًا. لكن الإصدار الأخير منها والذي أتى حصريًا إلى منصة بلاي ستيشن 4 هو الأفضل من حيث الرسومات، وتجربة اللعب، والقصة كذلك.

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

65,222 تويتر تفتح خاصية وعاء الهدايا لأي شخص فوق 18 سنة وتضيف بتكوين كطريقة دفع

 أعلنت منصة تويتر عن إطلاق خاصية تُسمي “وعاء الهدايا” في شهر مايو الماضي لتسمح للمستخدمين بقبول الدعم المالي من متابعيهم، لكنها كانت محدودة الإطلاق في ذلك الوقت.

قامت المنصة اليوم بتفعيل الخاصية لجميع الأشخاص فوق 18 سنة ليتسنى لهم قبول الدعم المالي من الآخرين على المنصة مقابل محتواهم أو الخدمات التي يقدمونها، بطريقة شبيهة بما تقوم به منصات كثيرة مؤخرًا مثل ريديت.

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

ستكون خاصية وعاء الهدايا متاحة لجميع المستخدمين على iOS في الوقت الحالي لمن هم فوق 18 سنة، وستصل في الأيام المقبلة لمستخدمي أندرويد.

فيما سيتمكن الأشخاص الراغبين بالدفع عن طريق بتكوين باستخدام محفظة وتطبيق Strike المبنية على تقنيات Bitcoin Lightning Network لإرسال واستقبال الأموال التي يرغبون بتداولها عبر تويتر.

يُشار أن جاك دورسي، مؤسس تويتر، قام قبل فترة قصيرة بشراء ما قيمته 50 مليون دولار أمريكي من عملة بتكوين، لتعزيز سعيه نحو تبني العملة الرقمية المشفرة.

المصدر:

The Hollywood Reporter

التدوينة تويتر تفتح خاصية وعاء الهدايا لأي شخص فوق 18 سنة وتضيف بتكوين كطريقة دفع ظهرت أولاً على عالم التقنية.

65,213 دراسة: العنف الجنسي يزيد احتمالية تعرض النساء للسكتات الدماغية والخرف تبعات العنف الجنسي ضد النساء لم تعد تقتصر على الاكتئاب والخوف وقلة النوم، إذ أظهرت دراسة أن العنف الجنسي يزيد من احتمالية التعرض للسكتات الدماغية والخرف بسبب تأثيره على سيولة الدم في المخ.
65,212 الخبيرة لمياء مساري لـDW: المناخ أولوية حكومة ألمانيا المقبلة وسياستها الخارجية يشدد الخبراء الألمان على أن الحكومة المقبلة ستكون "الأخيرة" القادرة على انقاذ الوضع البيئي، لكن ذلك يستلزم "تعاوناً دولياً" ودول شمال إفريقيا أفضل المرشحين رغم التحديات، تقول البروفسورة لمياء المساري بيكر في حوار مع DW.
65,200 تطبيقات تتبعك وتريد الإفلات منها؟.. اتبع هذه الطريقة

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

وتستخدم البيانات التي تجمعها التطبيقات لتقديم إعلانات مخصصة لك. فيما تقوم تطبيقات أخرى ببيع هذه البيانات.
ويتطلب هذا الأمر منك معرفة كيفية التحكم في استخدام التطبيقات لبيانات موقعك والحد منها أو إيقافها بشكل نهائي.

إيقاف التطبيقات من تتبعك في هاتف أندرويد

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

ومن أجل إيقاف خدمات الموقع بشكل نهائي وبصورة سريعة، اتبع الخطوات التالية:
• قم بإظهار لوحة التحكم السريعة من خلال سحب الشاشة الرئيسية للأسفل.
• إذا لم تجد أيقونة خدمات الموقع مباشرة فيجب عليك توسيع القائمة.
• ابحث عن خيار خدمات الموقع ومن ثم اضغط عليه إذا كان قيد التشغيل.

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

يمكنك بهذه الطريقة إعادة تعيين معرف الإعلان وإلغاء ربط أي ملفات تعريف إعلانية مستهدفة مرتبطة بهاتفك.
وهذا يعني عددًا أقل من الإعلانات الأكثر استهدافًا. التي توضح أن المعلنين يعرفون ما الذي تنوي فعله عبر الإنترنت وما هي تفضيلاتك.

65,184 تحليل الخوارزميات في جافا

ركّزنا في المقالات السابقة من هذه السلسلة على صحة البرامج، وإلى جانب ذلك، تُعَد مشكلة الكفاءة efficiency من المشاكل المهمة كذلك، فعندما نحلِّل كفاءة برنامجٍ ما، فعادةً ما تُطرح أسئلةٌ مثل كم من الوقت سيستغرقه البرنامج؟ وهل هناك طريقةٌ أخرى للحصول على نفس الإجابة ولكن بطريقةٍ أسرع؟ وعمومًا دائمًا ما ستكون كفاءة البرنامج أقلّ أهميةً من صحته؛ فإذا لم تهتم بصحة البرنامج، فيمكنك إذًا أن تشغّله بسرعةٍ، ولكن قلّما سيهتم به أحدٌ. كذلك لا توجد أي فائدةٍ من برنامجٍ يستغرق عشرات الآلاف من السنين ليعطيك إجابةً صحيحةً.

يشير مصطلح الكفاءة عمومًا إلى الاستخدام الأمثل لأي مورِد resource بما في ذلك الوقت وذاكرة الحاسوب ونطاق التردد الشبكي، وسنركّز في هذا المقال على الوقت، والسؤال الأهم الذي نريد الإجابة عليه هو ما الوقت الذي يستغرقه البرنامج ليُنجز المَهمّة الموكلة إليه؟

في الواقع، ليس هناك أي معنىً من تصنيف البرامج على أنها تعمل بكفاءةٍ أم لا، وإنما يكون من الأنسب أن نوازن بين برنامجين صحيحين ينفّذان نفس المهمة لنعرف أيًا منهما أكثر كفاءةً من الآخر، بمعنى أيهما ينجز مهمّته بصورةٍ أسرع، إلا أن تحديد ذلك ليس بالأمر السهل لأن زمن تشغيل البرنامج غير معرَّف؛ فقد يختلف حسب عدد معالجات الحاسوب وسرعتها، كما قد يعتمد على تصميم آلة جافا الافتراضية Java Virtual Machine (في حالة برامج جافا) المفسِّرة للبرنامج؛ وقد يعتمد كذلك على المصرّف المستخدَم لتصريف البرنامج إلى لغة الآلة، كما يعتمد زمن تشغيل أي برنامجٍ على حجم المشكلة التي ينبغي للبرنامج أن يحلّها، فمثلًا سيستغرق برنامج ترتيب sorting وقتًا أطول لترتيب 10000 عنصر مما سيستغرقه لترتيب 100 عنصر؛ وعندما نوازن بين زمنيْ تشغيل برنامجين، سنجد أن برنامج A يحلّ المشاكل الصغيرة أسرع بكثيرٍ من برنامج B بينما يحلّ البرنامج B المشاكل الكبيرة أسرع من البرنامج A، فلا يوجد برنامجٌ معينٌ هو الأسرع دائمًا في جميع الحالات.

عمومًا، هناك حقلٌ ضِمن علوم الحاسوب يُكرّس لتحليل كفاءة البرامج، ويعرف باسم تحليل الخوارزميات Analysis of Algorithms، حيث يركِّز على الخوارزميات نفسها لا البرامج؛ لتجنُّب التعامل مع التنفيذات implementations المختلفة لنفس الخوارزمية باستخدام لغاتٍ برمجيةٍ مختلفةٍ ومصرّفةٍ بأدواتٍ مختلفةٍ وتعمل على حواسيب مختلفةٍ؛ وعمومًا يُعَد مجال تحليل الخوارزميات مجالًا رياضيًا مجرّدًا عن كل تلك التفاصيل الصغيرة، فعلى الرغم من أنه حقلٌ نظريٌ في المقام الأول، إلا أنه يلزَم كلّ مبرمجٍ أن يطّلع على بعضٍ من تقنياته ومفاهيمه الأساسية، ولهذا سيَتناول هذا المقال مقدمةً مختصرةً جدًا عن بعضٍ من تلك الأساسيات والمفاهيم، ولأن هذه السلسلة ليست ذات اتجاه رياضي، فستكون المناقشة عامةً نوعًا ما.

يُعَد التحليل المُقارِب asymptotic analysis أحد أهم تقنيات ذلك المجال، ويُقصد بالمُقارِب asymptotic ما يميل إليه على المدى البعيد بازدياد حجم المشكلة، حيث يجيب التحليل المُقارِب لزمن تشغيل run time خوارزميةٍ عن أسئلةٍ مثل، كيف يؤثر حجم المشكلة problem size على زمن التشغيل؟ ويُعَد التحليل مُقارِبًا؛ لأنه يهتم بما سيحدث لزمن التشغيل عند زيادة حجم المشكلة بدون أي قيودٍ، أما ما سيحدث للأحجام الصغيرة من المشاكل فهي أمورٌ لا تعنيه؛ فإذا أظهر التحليل المُقارِب لخوارزمية A أنها أسرع من خوارزمية B، فلا يعني ذلك بالضرورة أن الخوارزمية A ستكون أسرع من B عندما يكون حجم المشكلة صغيرًا مثل 10 أو 1000 أو حتى 1000000، وإنما يعني أنه بزيادة حجم المشكلة، ستصل حتمًا إلى نقطةٍ تكون عندها خوارزمية A أسرع من خوارزمية B.

يرتبط مفهوم التحليل المُقارِب بـمصطلح ترميز O الكبير Big-Oh notation، حيث يمكّننا هذا الترميز من قوْل أن زمن تشغيل خوارزميةٍ معينةٍ هو O(n2)‎ أو O(n)‎ أو O(log(n))‎، وعمومًا يُشار إليه بـ O(f(n))‎، حيث f(n)‎ عِبارةٌ عن دالة تُسند عددًا حقيقيًا موجبًا لكلّ عددٍ صحيحٍ موجبٍ n، بينما يشير n ضِمن هذا الترميز إلى حجم المشكلة، ولذلك يلزَمك أن تحدّد حجم المشكلة قبل أن تبدأ في تحليلها، وهو ليس أمرًا معقدًا على أية حال؛ فمثلًا، إذا كانت المشكلة هي ترتيب قائمةٍ من العناصر، فإن حجم تلك المشكلة يمكنه أن يكون عدد العناصر ضِمن القائمة، وهذا مثالٌ آخرٌ، عندما يكون مُدخَل الخوارزمية عِبارةٌ عن عددٍ صحيحٍ (لفحْص إذا ما كان ذلك العدد عددًا أوليًا prime أم لا) يكون حجم المشكلة في تلك الحالة هو عدد البتات bits الموجودة ضِمن ذلك العدد المُدخَل لا العدد ذاته؛ وعمومًا يُعَد عدد البتات bits الموجودة في قيمة المُدخَل قياسًا جيدًا لحجم المشكلة.

إذا كان زمن تشغيل خوارزميةٍ معينةٍ هو O(f(n))‎، فذلك يعني أنه بالنسبة للقيم الكبيرة من حجم المشكلة، لن يتعدى الزمن حاصل ضرْب قيمةٍ ثابتةٍ معينةٍ في f(n)‎، أي أن هناك عدد C وعددٌ صحيحٌ آخرٌ موجبٌ M، وعندما تصبح n أكبر من M، فإن زمن تشغيل الخوارزمية يكون أقلّ من أو يساوي C×f(n)‎؛ حيث يأخذ الثابت C في حسبانه تفاصيلًا مثل سرعة الحاسوب المستخدَم في تشغيل الخوارزمية، وإذا كان ذلك الحاسوب أبطأ، فقد تستخدم قيمة أكبر للثابت، إلا أن تغييره لن يغيّر من حقيقة أن زمن تشغيل الخوارزمية هو O(f(n)‎؛ وبفضل ذلك الثابت، لن يكون من الضروري تحديد إذا ما كنا نقيس الزمن بالثواني أو السنوات أو أي وحدة قياسٍ أخرى؛ لأن التحويل من وحدةٍ معينةٍ إلى أخرى يتمثَّل بعملية ضربٍ في قيمة ثابتة، بالإضافة إلى ما سبق، لا تَعتمد O(f(n))‎ نهائيًا على ما يحدُث في الأحجام الأصغر من المشكلة، وإنما على ما يحدُث على المدى الطويل بينما يزيد حجم المشكلة دون أي قيودٍ.

سنفحص مثالًا بسيطًا عِبارةً عن حساب حاصل مجموع العناصر الموجودة ضِمن مصفوفةٍ، وفي هذه الحالة، يكون حجم المشكلة n هو طول تلك المصفوفة، فإذا كان A هو اسم المصفوفة، ستُكتب الخوارزمية بلغة جافا كالتالي:

total = 0; for (int i = 0; i < n; i++) total = total + A[i];

تنفِّذ الخوارزمية عملية total = total + A[‎i]‎ عدد n من المرات، أي أن الزمن الكلي المُستغرق أثناء تلك العملية يساوي a×n، حيث a هو زمن تنفيذ العملية مرةٍ واحدةٍ؛ إلى جانب ذلك، تزيد الخوارزمية قيمة المتغيّر i وتوازنه مع قيمة n في كلّ مرةٍ تنفِّذ فيها مَتْن الحلقة loop، الأمر الذي يؤدي إلى زيادة زمن التشغيل بمقدار يساوي b×n حيث b عِبارةٌ عن ثابتٍ، وبالإضافة إلى ما سبق، يُهيئ كلًا من i وtotal إلى الصفر مبدئيًا مما يزيد من زمن التشغيل بمقدار ثابتٍ معينٍ وليكن c، وبالتالي، يساوي زمن تشغيل الخوارزمية للقيمة ‎(a+b)×n+c، حيث a وb وc عِبارةٌ عن ثوابتٍ تعتمد على عوامل مثل كيفية تصريف compile الشيفرة ونوع الحاسوب المستخدَم، وبالاعتماد على حقيقة أن c دائمًا ما تكون أقلّ من أو تساوي c×n لأي عددٍ صحيحٍ موجبٍ n، يمكننا إذًا أن نقول أن زمن التشغيل أقلّ من أو يساوي ‎(a+b+c)×n، أي أنه أقلّ من أو يساوي حاصل ضرْب ثابتٍ في n، أي يكون زمن تشغيل الخوارزمية هو O(n)‎.

إذا استشكل عليك أن تفهم ما سبق، فإنه يعني أنه لأي قيم n كبيرة، فإن الثابت c في المعادلة ‎(a+b)×n+c غير مهمٍ إذا ووزِن مع ‎(a+b)×n، ونصيغ ذلك بأن نقول إن c تعبّر عن عنصرٍ ذات رتبةٍ أقل lower order، وعادةً ما نتجاهل تلك العناصر في سياق التحليل المُقارِب؛ ويمكن لتحليلٍ مُقارِب آخرٍ أكثر حدَّة أن يستنتج ما يلي: "يَستغرق كلّ تكرار iteration ضِمن حلقة for مقدارًا ثابتًا من الوقت، ولأن الخوارزمية تتضمّن عدد n من التكرارات، فإن زمن التشغيل الكلي هو حاصل ضرْب ثابتٍ في n مضافًا إليه عناصر ذات رتبة أقلّ للتهيئة المبدئية، وإذا تجاهلنا تلك العناصر، سنجد أن زمن التشغيل يساوي O(n)‎.

اقتباس

ملحوظةٌ: عندما نقول أن زمن تشغيل خوارزميةٍ معينةٍ هو O(f(n))‎، فذلك يعني أن زمن تشغيلها لا يتعدّى حاصل ضرْب قيمةٍ ثابتةٍ معينةٍ في f(n)‎، أي تضع O(f(n))‎ حدًا أقصىً upper limit لزمن التشغيل؛ في المقابل، يمكن لزمن التشغيل أن يقلّ عن ذلك بكثير، فمثلًا إذا كان زمن تشغيل خوارزميةٍ يساوي O(n)‎، فيصحّ كذلك أن نقول أن زمن تشغيلها يساوي O( n2)‎ أو O(n10)‎، أما إذا قلّ زمن التشغيل عن حاصل ضرْب ثابتٍ في n، فسيكون أقلّ من حاصل ضرْب نفس قيمة الثابت في n2 أو n10.

يفيد أحيانًا أن نخصِّص حدًا أدنىً lower limit لزمن التشغيل، حيث سيمكّننا ذلك من أن نقول أن زمن تشغيل خوارزميةٍ معينةٍ أكبر من أو يساوي حاصل ضرْب قيمةٍ ثابتةٍ في f(n)‎، وهو ما يعرّفه ترميزٌ آخرٌ هو Ω(f(n))‎، ويُقرأ أوميجا لدالة f أو ترميز أوميجا الكبير لدالة f (أوميجا Omega هو حرفٌ أبجديٌ يونانيٌ ويمثِّل الترميز Ω حالته الكبيرة)؛ وإذا شئنا الدقة، عندما نقول أن زمن تشغيل خوارزمية هو Ω(f(n))‎، فإن المقصود هو وجود عددٍ موجبٍ C وعددٍ صحيحٍ آخرٍ موجبٍ M، وعندما تكون قيمة n أكبر من M، فإن زمن تشغيل الخوارزمية يكون أكبر من أو يساوي حاصل ضرْب C في f(n)‎، ونستخلّص مما سبق أن O(f(n))‎ يوفّر معلومةً عن الحد الأقصى للزمن الذي قد تنتظره حتى تنتهي الخوارزمية من العمل، بينما يوفّر Ω(f(n))‎ معلومةً عن الحد الأدنى للزمن.

اقتباس

لاحظ أن زمن تشغيل خوارزمية حساب حاصل مجموع الأعداد ضِمن مصفوفةٍ هو نفسه أي Ω(n)‎ و O(n)‎، فعندما يتساوى زمن تشغيل خوارزميةٍ معينةٍ مع كلًا من Ω(f(n))‎ و O(f(n))‎، يُقال عندها أن زمن تشغيله هو Θ(f(n))‎، وتُقرأ ثيتا لدالة f أو ترميز ثيتا الكبير لدالة f (ثيتا هو حرفٌ أبجديٌ يونانيٌ آخرٌ)، وعندما نقول أن زمن تشغيل خوارزمية هو Θ(f(n))‎، فإن المقصود هو أن زمن التشغيل للقيم الكبيرة من n يتراوح بين a×f(n)‎ وb×f(n)‎ حيث a وb عبارةٌ عن ثوابتٍ قيمتها أكبر من صفرٍ بشرط أن تكبُر قيمة b عن a.

سنفْحص الآن خوارزميةً أخرى:

public static void simpleBubbleSort( int[] A, int n ) { for (int i = 0; i < n; i++) { // Do n passes through the array... for (int j = 0; j < n-1; j++) { if ( A[j] > A[j+1] ) { // A[j] و A[j+1] رتِّب int temp = A[j]; A[j] = A[j+1]; A[j+1] = temp; } } } }

يمثِّل المعامِل n في المثال السابق حجم المشكلة، حيث ينفِّذ الحاسوب حلقة for الخارجية عدد n من المرات، وفي كلّ مرة ينفِّذ فيها تلك الحلقة، فإنه ينفِّذ أيضًا حلقة for داخليةً عدد n-1 من المرات، إذًا سينفّذ الحاسوب تعليمة if عدد n×(n-1)‎ من المرات، أي يساوي n2-n، ولأن العناصر ذات الرتبة الأقل غير مهمّةٍ في التحليل المُقارِب، سنكتفي بأن نقول أن تعليمة if تنفَّذ عدد n2 مرةٍ؛ وعلى وجهٍ أكثر تحديدًا، ينفِّذ الحاسوب الاختبار A[j] > A[j+1] عدد n2 من المرات، ويكون زمن تشغيل الخوارزمية هو Ω( n2)‎، أي يساوي حاصل ضرْب قيمةٍ ثابتةٍ في n2 على الأقل، وإذا فحصنا العمليات الأخرى (تعليمات الإسناد assignment وزيادة i وj بمقدار الواحد..إلخ)، فإننا لن نجد أي عمليةً منها تنفَّذ أكثر من عدد n2 مرة؛ ونستنتج من ذلك أن زمن التشغيل هو O(n2)‎ أيضًا، أي أنه لن يتجاوز حاصل ضرْب قيمةٍ ثابتةٍ في n2، ونظرًا لأن زمن التشغيل يساوي كلًا من Ω( n2)‎ و O( n2)‎، فإنه أيضًا يساوي Θ( n2)‎.

اقتباس

ملحوظة: يَستخدم البعض الترميز O(f(n))‎ كما لو كان يعني Θ(f(n))‎ أي عندما يقولون أن زمن تشغيل خوارزمية هو O(f(n))‎، فإنهم يقصدون أن زمن تشغيلها يساوي حاصل ضرْب ثابتٍ في f(n)‎ تقريبًا، وعمومًا يُفترض استخدام Θ(f(n))‎ في تلك الحالة؛ لأن O(f(n))‎ تعني على وجه الدقة أن الزمن أقلّ من حاصل ضرْب ثابتٍ في f(n)‎.

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

لكي نأخذ تلك الاعتمادية في الحسبان، سنُجري تحليلًا لزمن التشغيل على كلًا من الحالة الأسوأ the worst case analysis والحالة الوسطى average case analysis، بالنسبة لتحليل زمن تشغيل الحالة الأسوأ، سنفحص جميع المشاكل المحتملة لحجم يساوي n وسنحدّد أطول زمن تشغيل من بينها جميعًا، بالمِثل بالنسبة للحالة الوسطى، سنفحص جميع المشاكل المحتملة لحجم يساوي n ونحسب قيمة متوسط زمن تشغيلها جميعًا، وعمومًا سيَفترض تحليل زمن التشغيل للحالة الوسطى أن جميع المشاكل بحجم n لها نفس احتمالية الحدوث على الرغم من عدم واقعية ذلك في بعض الأحيان، أو حتى إمكانية حدوثه وذلك في حالة وجود عددٍ لا نهائيٍ من المشاكل المختلفة لحجمٍ معينٍ.

عادةً ما يتساوى زمن تشغيل الحالة الأسوأ والوسطى ضِمن مُضاعفٍ ثابتٍ، وذلك يعني أنهما متساويان بقدر اهتمام التحليل المُقارِب، أي أن زمن تشغيل الحالة الوسطى والحالة الأسوأ هو O(f(n))‎ أو Θ(f(n))‎، إلا أن هنالك بعض الحالات القليلة التي يختلف فيها التحليل المُقارِب للحالة الأسوأ عن الحالة الوسطى كما سنرى لاحقًا.

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

حسنًا، ما الذي ينبغي أن تعرفه حقًا عن تحليل الخوارزميات لتستكمل قراءة ما هو متبقّيٍ من هذه السلسلة؟ في الواقع، لن نقدِم على أي تحليلٍ رياضيٍ حقيقيٍ، ولكن ينبغي أن تفهَم بعض المناقشات العامة عن حالاتٍ بسيطةٍ مثل الأمثلة التي رأيناها في هذا المقال، والأهم من ذلك هو أن تفهم ما يعنيه بالضبط قوْل أن وقت تشغيل خوارزميةٍ معينةٍ هو O(f(n))‎ أو Θ(f(n))‎ لبعض الدوال الشائعة f(n)‎، كما أن النقطة المُهمّة هي أن تلك الترميزات لا تُخبرك أي شيءٍ عن القيمة العددية الفعلية لزمن تشغيل الخوارزمية لأي حالةٍ معينةٍ كما أنها لا تخبرك بأي شيءٍ عن زمن تشغيل الخوارزمية للقيم الصغيرة من n، وإنما ستخبرك بمعدل زيادة زمن التشغيل بزيادة حجم المشكلة.

سنفترض أننا نوازن بين خوارزميتين لحل نفس المشكلة، وزمن تشغيل إحداها هو Θ( n2)‎ بينما زمن تشغيل الأخرى هو Θ(n3)‎، فما الذي يعنيه ذلك؟ إذا كنت تريد معرفة أي خوارزميةٍ منهما هي الأسرع لمشكلةٍ حجمها 100 مثلًا، فالأمر غير مؤكدٍ، فوِفقًا للتحليل المُقارِب يمكن أن تكون أي خوارزميةٍ منهما هي الأسرع في هذه الحالة؛ أما بالنسبة للمشاكل الأكبر حجمًا، سيصل حجم المشكلة n إلى نقطةٍ تكون معها خوارزمية Θ( n2)‎ أسرع بكثيرٍ من خوارزمية Θ(n3)‎؛ وعلاوةً على ذلك، يزداد تميز خوارزمية Θ( n2)‎ عن خوارزمية Θ(n3)‎ بزيادة حجم المشكلة أكثر فأكثر، وعمومًا ستكون هناك قيمٌ لحجم المشكلة n تكون معها خوارزمية Θ( n2)‎ أسرع ألف مرةٍ أو مليون مرةٍ أو حتى بليون مرةٍ وهكذا؛ وذلك لأن دالة a×n3 تنمو أسرع بكثيرٍ من دالة b×n2 لأي ثابتين موجبين a وb، وذلك يعني أنه بالنسبة للمشاكل الكبيرة، ستكون خوارزمية Θ( n2)‎ أسرع بكثيرٍ من خوارزمية Θ(n3)‎، ونحن لا نعرف بالضبط إلى أي درجةٍ بالضبط ينبغي أن تكون المشكلة كبيرةٌ، وعمليًا، يُحتمل لخوارزمية Θ( n2)‎ أن تكون أسرع حتى للقيم الصغيرة من حجم المشكلة n؛ وعمومًا تُفضّل خوارزمية Θ( n2)‎ عن خوارزمية Θ(n3)‎.

لكي تفهم وتطبّق التحليل المُقارِب، لابدّ أن يكون لديك فكرةً عن معدّل نمو بعض الدوال الشائعة، وبالنسبة للدوال الأسية ‎(power)‎ n, n2, n3, n4, …,، كلما كان الأس أكبر، ازداد معدّل نمو الدالة؛ أما بالنسبة للدوال الأسية exponential من النوع 2n و 10n حيث n هو الأس، يكون معدّل نموها أسرع بكثيرٍ من أي دالةٍ أسيةٍ عاديةٍ power، وعمومًا تنمو الدوال الأسية بسرعةٍ جدًا لدرجة تجعل الخوارزميات التي ينمو زمن تشغيلها بذلك المعدّل غير عمليةٍ عمومًا حتى للقيم الصغيرة من n لأن زمن التشغيل طويلٌ جدًا، وإلى جانب ذلك، تُستخدم دالة اللوغاريتم log(n)‎ بكثرةٍ في التحليل المُقارِب، فإذا كان هناك عددٌ كبيرٌ من دوال اللوغاريتم، ولكن تلك التي أساسها يساوي 2 هي الأكثر استخدامًا في علوم الحاسوب، وتُكتب عادة كالتالي log2(n)‎، حيث تنمو دالة اللوغاريتم ببطئٍ إلى درجةٍ أبطأ من معدّل نمو n، وينبغي أن يساعدك الجدول التالي على فهم الفروق بين معدّلات النمو للدوال المختلفة:

يرجع السبب وراء استخدام log(n) بكثرةٍ إلى ارتباطها بالضرب والقسمة على 2، سنفْترض أنك بدأت بعدد n ثم قسَمته على 2 ثم قسَمته على 2 مرةٍ أخرى، وهكذا إلى أن وصَلت إلى عددٍ أقل من أو يساوي 1، سيساوي عدد مرات القسمة (مقربًا لأقرب عدد صحيح) لقيمة log(n)‎.

فمثلًا انظر إلى خوارزمية البحث الثنائي binary search في مقال البحث والترتيب في المصفوفات Array في جافا، حيث تبحث تلك الخوارزمية عن عنصرٍ ضِمن مصفوفةٍ مرتّبةٍ، وسنستخدم طول المصفوفة مثل حجمٍ للمشكلة n، إذ يُقسَم عدد عناصر المصفوفة على 2 في كلّ خطوةٍ ضِمن خوارزمية البحث الثنائي، بحيث تتوقّف عندما يصبح عدد عناصرها أقلّ من أو يساوي 1، وذلك يعني أن عدد خطوات الخوارزمية لمصفوفة طولها n يساوي log(n)‎ للحدّ الأقصى؛ ونستنتج من ذلك أن زمن تشغيل الحالة الأسوأ لخوارزمية البحث الثنائي هو Θ(log(n))‎ كما أنه هو نفسه زمن تشغيل الحالة الوسطى، في المقابل، يساوي زمن تشغيل خوارزمية البحث الخطي الذي تعرّضنا له في مقال السابق ذكره أعلاه حول البحث والترتيب في المصفوفات Array في جافا لقيمة Θ(n)‎، حيث يمنحك ترميز Θ طريقةً كميّةً quantitative لتعبّر عن حقيقة كون البحث الثنائي أسرع بكثيرٍ من البحث الخطي linear search.

تَقسِم كلّ خطوةٍ في خوارزمية البحث الثنائي حجم المسألة على 2، وعمومًا يحدُث كثيرًا أن تُقسَم عمليةٌ معينةٌ ضِمن خوارزمية حجم المشكلة n على 2، وعندما يحدث ذلك ستظهر دالة اللوغاريتم في التحليل المُقارِب لزمن تشغيل الخوارزمية.

يُعَد موضوع تحليل الخوارزميات algorithms analysis حقلًا ضخمًا ورائعًا، ناقشنا هنا جزءًا صغيرًا فقط من مفاهيمه الأساسية التي تفيد لفهم واستيعاب الاختلافات بين الخوارزميات المختلفة.

ترجمة -بتصرّف- للقسم Section 5: Analysis of Algorithms من فصل Chapter 8: Correctness, Robustness, Efficiency من كتاب Introduction to Programming Using Java.

اقرأ أيضًا

الصفحات