অন্যান্য সমস্ত উত্তর সঠিক, আমি কেবল নিম্নলিখিতগুলি সংশোধন করতে চাই। আমি দেখতে চেয়েছিলাম, নীচের প্রকৃত জটিলতা হ্রাস করার জন্য যদি অভ্যন্তরীণ কে-লুপের মৃত্যুদণ্ড কার্যকর করা যথেষ্ট ছিল O(n⁴).
তাই আমি নিম্নলিখিতগুলি লিখেছি:
for (int n = 1; n < 363; ++n) {
int sum = 0;
for(int i = 1; i < n; ++i) {
for(int j = 1; j < i * i; ++j) {
if(j % i == 0) {
for(int k = 0; k < j; ++k) {
sum++;
}
}
}
}
long cubic = (long) Math.pow(n, 3);
long hypCubic = (long) Math.pow(n, 4);
double relative = (double) (sum / (double) hypCubic);
System.out.println("n = " + n + ": iterations = " + sum +
", n³ = " + cubic + ", n⁴ = " + hypCubic + ", rel = " + relative);
}
এটি কার্যকর করার পরে, এটি স্পষ্ট হয়ে ওঠে, জটিলতাটি আসলে n⁴
। আউটপুট এর শেষ লাইনগুলি এর মতো দেখায়:
n = 356: iterations = 1989000035, n³ = 45118016, n⁴ = 16062013696, rel = 0.12383254507467704
n = 357: iterations = 2011495675, n³ = 45499293, n⁴ = 16243247601, rel = 0.12383580700180696
n = 358: iterations = 2034181597, n³ = 45882712, n⁴ = 16426010896, rel = 0.12383905075183874
n = 359: iterations = 2057058871, n³ = 46268279, n⁴ = 16610312161, rel = 0.12384227647628734
n = 360: iterations = 2080128570, n³ = 46656000, n⁴ = 16796160000, rel = 0.12384548432498857
n = 361: iterations = 2103391770, n³ = 47045881, n⁴ = 16983563041, rel = 0.12384867444612208
n = 362: iterations = 2126849550, n³ = 47437928, n⁴ = 17172529936, rel = 0.1238518469862343
এটি যা দেখায় তা হ'ল প্রকৃত n⁴
এবং এই কোড বিভাগের জটিলতার মধ্যে প্রকৃত আপেক্ষিক পার্থক্য হ'ল কাছাকাছি মানের 0.124...
(প্রকৃতপক্ষে 0.125) প্রতি অ্যাসিম্পটিক । যদিও এটি আমাদের সঠিক মূল্য দেয় না, আমরা নিম্নলিখিতটি অনুমান করতে পারি:
সময় জটিলতা হ'ল n⁴/8 ~ f(n)
যেখানে f
আপনার কার্য / পদ্ধতি।
- বিগ ও স্বরলিপিটির উইকিপিডিয়া পৃষ্ঠাতে 'ফ্যামিলি অফ বাচম্যান – ল্যান্ডাউ স্বরলিপি' এর সারণিতে উল্লেখ করা হয়েছে যে
~
দুটি অপারেন্ড পক্ষের সীমাটি সমান নির্ধারণ করে। বা:
f asmptotically g এর সমান
(আমি উপরের আবদ্ধ বাদে 363 বেছে নিয়েছি, কারণ n = 362
এটিই সর্বশেষ মান যার জন্য আমরা একটি বোধগম্য ফলাফল পাই After এর পরে, আমরা দীর্ঘ-স্থানকে অতিক্রম করি এবং আপেক্ষিক মানটি নেতিবাচক হয়ে যায়))
ব্যবহারকারী কেয়া 3 নিম্নলিখিত চিত্রগুলি আবিষ্কার করেছেন:
অ্যাসিম্পটোটিক ধ্রুবকটি ঠিক 1/8 = 0.125, উপায় দ্বারা; ওল্ফ্রাম আলফার মাধ্যমে এখানে সঠিক সূত্র ।
for (j = i; j < i *i; j += i)
তারপরে আপনার মডিউলাস পরীক্ষার দরকার নেই (কারণj
এটি দ্বারা বিভাজনীয় হওয়ার নিশ্চয়তা রয়েছেi
)।