هل هناك أي الأدوات التي يمكن أن تحدد لتحليل رمز كبير-O التعقيد؟

StackOverflow https://stackoverflow.com/questions/635893

سؤال

وأنا لم أر أي شيء هناك، وأظن أن الصعوبة في تحديد "ن" منذ لعام لتحليل وظيفة معقدة سوف يكون هناك أكثر من متغير واحد أو اثنين فقط لتحديد.

وهناك أدوات التحليل لcyclomatic التعقيد ولكن هل هناك منها للمرة (و / أو الفضاء) التعقيد؟ إذا كان الأمر كذلك تلك التي، إن لم يكن، لماذا لا؟ هو غير ممكنة؟ غير ممكن؟ شخص فقط لم حصلت حول لذلك؟

ومن الناحية المثالية سيكون هناك شيء من هذا القبيل تعقيد العام للتطبيق (تحديد مختلف ممكن "ن" ليالي)، وكذلك لكل طريقة في تطبيق

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

وأيضا، ماذا عن تلك التي تحسب لمجموعة فرعية معينة من البرامج؟

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

المحلول

ومما يؤسف له أن هناك هذه المشكلة تسمى مشكلة وقف ...

نصائح أخرى

لا، هذا غير ممكن، نظرا لمشكلة وقف.

إذا كنت ترغب في القيام بذلك لتحسين التطبيقات الخاصة بك، هل يمكن أن تنظر التنميط بدلا من ذلك. فإنه يسمح لك لدبوس نقطة ما هو في الواقع أخذ معظم الوقت. بهذه الطريقة لم يكن لقضاء بعض الوقت الأمثل لO (ن ^ 3) الخوارزمية التي يعمل فقط على مجموعات البيانات الصغيرة.

وهناك عدد قليل من thoughs:

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

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

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

ولم يسبق له مثيل أداة للقيام بذلك ولكن علينا الاستفادة من أدوات التنميط للحصول على فكرة أفضل حيث هي الاختناقات. انها ليست دائما واضحة، ولقد فوجئ عدة مرات من قبل الأشياء التي اعتقدت استغرق وقتا طويلا بالفعل اخذ القليل جدا، والعكس بالعكس. في العالم .NET، لقد استعملت النمل و< وأ href = "http://www.jetbrains.com/profiler/" يختلط = "نوفولو noreferrer"> JetBrains الأدوات.

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