ইরোটোথিনিস অ্যালগোরিদমের সিভির সময় জটিলতা


96

উইকিপিডিয়া থেকে :

অ্যালগরিদমের জটিলতা O(n(logn)(loglogn))বিট অপারেশন।

আপনি কিভাবে এটি পৌঁছে?

জটিলতাটি এই loglognশব্দটির সাথে অন্তর্ভুক্ত তা আমাকে বলে যে sqrt(n)কোথাও আছে।


ধরুন আমি প্রথম 100 টি সংখ্যা ( n = 100) চালনা চালাচ্ছি, ধরে নিলাম যে সংখ্যাকে সংমিশ্রণ হিসাবে চিহ্নিত করাতে ধ্রুব সময় লাগে (অ্যারে বাস্তবায়ন), আমরা যে বার ব্যবহার করি তার সংখ্যার mark_composite()মতো হবে

n/2 + n/3 + n/5 + n/7 + ... + n/97        =      O(n^2)                         

এবং পরবর্তী মূল সংখ্যাটি খুঁজে পেতে (উদাহরণস্বরূপ 7যে সমস্ত সংখ্যাটি বহুগুণে বেরিয়ে যাওয়ার পরে ঝাঁপিয়ে পড়ে 5), অপারেশন সংখ্যাটি হবে O(n)

সুতরাং, জটিলতা হবে O(n^3)তুমি কি একমত?


5
আমি বিশ্রাম সম্পর্কে জানি না (এই মুহুর্তে আমার খুব নিদ্রালু মস্তিষ্কের জন্য খুব ম্যাথি) তবে বর্গক্ষেত্রটি মূল কারণটি থেকে জানা যায় যে যদি কোনও সংখ্যার বর্গমূলের চেয়ে কম বিভাজক না থাকে তবে এটি প্রধান is এছাড়াও, আমি সবেমাত্র শিখেছি লগলগ (এন) এর অর্থ একটি বর্গমূল রয়েছে। ভাল লাগল
আর মার্টিনহো ফার্নান্দেস

13
লগলগ (এন) থাকার অর্থ কীভাবে কোথাও স্কয়ার্ট (এন) রয়েছে? (@ মার্টিনহো: কেন আপনি বলছেন যে আপনি "সবেমাত্র এটি শিখেছেন"?) আসল বিশ্লেষণে কোনও বর্গাকার শিকড় জড়িত না!
শ্রীভাতসার আর

উত্তর:


121
  1. আপনার এন / 2 + এন / 3 + এন / 5 +… এন / 97 টি ও (এন) নয়, কারণ পদগুলির সংখ্যা স্থির নয়। [আপনার সম্পাদনার পরে সম্পাদনা করুন: ও (এন 2 ) খুব উপরের বাউন্ডে looseিলা]] একটি আলগা উপরের-বদ্ধটি এন (1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/6 +… 1 / এন) (এন পর্যন্ত সমস্ত সংখ্যার পারস্পরিক ক্রমের যোগফল ), যা হে (এন লগ এন): হারমনিক সংখ্যাটি দেখুন । আরও সঠিক উপরের দিকে আবদ্ধ হ'ল এন (1/2 + 1/3 + 1/5 + 1/7 +…), এটি এন পর্যন্ত প্রাইমগুলির পারস্পরিক ক্রিয়াকলাপের যোগফল, যা হে (এন লগ লগ এন)। ( এখানে বা এখানে দেখুন ।)

  2. "পরবর্তী মৌলিক সংখ্যা খুঁজে" বিট শুধুমাত্র হে (ঢ) হয় সামগ্রিকভাবে, amortized - আপনি এগিয়ে সরানো হবে পরবর্তী সংখ্যা খুঁজে বের করার একমাত্র n মধ্যে বার মোট , ধাপ প্রতি নয়। সুতরাং অ্যালগোরিদমের পুরো অংশটি কেবল ও (এন) লাগে।

সুতরাং এই দুটি ব্যবহার করে আপনি O (n লগ লগ এন) + ও (এন) = হে (এন লগ লগ এন) গাণিতিক ক্রিয়াকলাপগুলির উপরের সীমাটি পেতে পারেন। আপনি যদি বিট ক্রিয়াকলাপ গণনা করেন, যেহেতু আপনি এন পর্যন্ত সংখ্যাগুলি নিয়ে কাজ করছেন, তাদের লগ এন বিটগুলি রয়েছে, যেখানে লগ এন এর ফ্যাক্টর আসে, ও (এন লগ এন লগ লগ এন) বিট ক্রিয়াকলাপ দেয়।


সমস্যার একটি অংশের জন্য, আপনি অ্যাসিপটোটিক জটিলতা বিবেচনা করছেন। অন্য অংশের জন্য, আপনি amorised সংযোগ বিবেচনা করা হয়। আমি বিভ্রান্ত
ক্রসন

4
@ ক্রিস্রন সমস্যা কি? এটি এমন নয় যে "অ্যাসিপটোটিক জটিলতা" এবং "অ্যামোরিটাইজড জটিলতা" একই জিনিস দুটি ভিন্ন ধরণের। আরও বেশি সতর্কতার সাথে কিছু গণনা করার জন্য এমোরটাইজেশন হ'ল একটি কৌশল, যা অ্যাসিপটোটিক জটিলতা হতে পারে।
শ্রীভাতসারআর 9:56

এই সমস্ত সময় আমি তাদের আলাদা মনে করতাম। এটি পরিষ্কার করার জন্য ধন্যবাদ।
ক্রিস্রন

4
@ শ্রীভত্সআরআর কেন আমরা এন পদগুলিতে সুরেলা সিরিজের যোগফল গণনা করব? আমরা কি কেবল স্কয়ার্ট (এন) পদগুলিতে গণনা করব না? N (loglogsqrt (n)) পাটিগণিত ক্রিয়াকলাপ হিসাবে উত্তর দিচ্ছেন? এছাড়াও, উইকিপিডিয়া বলেছে যে স্থান জটিলতা হ'ল ও (এন)। এটি এন এর থাটা হওয়া উচিত নয় কারণ আমাদের কোনও ক্ষেত্রে এন উপাদানগুলির একটি অ্যারের প্রয়োজন?
a_123

@ s_123 হ্যাঁ আপনি কেবলমাত্র দুটি পদ অবধি গণনা করতে পারেন, তবে এটি অ্যাসিপটোটিক বিশ্লেষণে (বা চলমান সময়ের মধ্যে একটি গুরুত্বপূর্ণ ব্যবহারিক পার্থক্য) কোনও পার্থক্য করে না, কারণ লগ ()x) = (1/2) যে কোনও এক্সের জন্য লগ এক্স। সুতরাং Θ (n লগ লগ √n) = Θ (এন লগ লগ এন)। আপনার অন্য প্রশ্নের জন্য, হ্যাঁ স্পেস জটিলতা হ'ল O (n), যা ও (এন )ও রয়েছে: এটি নির্দেশ করার জন্য (() বলার পরিবর্তে আপনি উপরের সীমানা নির্দিষ্ট করে দিচ্ছেন তা বোঝাতে ও () ব্যবহার করা প্রচলিত is যে এটি নিম্ন সীমাটিও রয়েছে (বিশেষত যখন নিম্ন সীমাটি স্পষ্ট থাকে, যেমন এটি এখানে রয়েছে)।
শ্রীভাতসারআর

7

যে জটিলতায় লগলগন শব্দটি অন্তর্ভুক্ত তা আমাকে বলে যে কোথাও স্কয়ার্ট (এন) রয়েছে।

মনে রাখবেন যে যখন আপনি Pচালাবার সময় একটি প্রধান সংখ্যা খুঁজে পান , আপনি আপনার বর্তমান অবস্থানে + সংখ্যাগুলি অতিক্রম করতে শুরু করবেন না P; আপনি আসলে সংখ্যাগুলি ছাড়াই শুরু করবেন P^2। এর Pচেয়ে কম P^2গুণমানের সমস্তগুলি পূর্ববর্তী মৌলিক সংখ্যাগুলি অতিক্রম করেছে।


10
এই বিবৃতিটি নিজেই সত্য, তবে উদ্ধৃত বিবৃতিটির কোনও ফল নেই যা নিজেই কোনও যোগ্যতা নেই। আমরা শুরু করি pবা করি না কেন p^2, জটিলতা একই (সরাসরি অ্যাক্সেস অ্যারে সহ)। SUM (1/p) {p<N} ~ log (log N)কারণ হয়।
নেস

6
  1. অভ্যন্তরীণ লুপটি n/iপদক্ষেপগুলি করে, যেখানে iপ্রাইম => সম্পূর্ণ জটিলতা sum(n/i) = n * sum(1/i)। প্রাইম সুরেলা সিরিজ অনুযায়ী, sum (1/i)যেখানে iপ্রধান হয় log (log n)। মোট O(n*log(log n)),।
  2. আমি মনে করি ওপরের লুপটি সামগ্রিক সময়ের জটিলতার nসাথে প্রতিস্থাপন করে অনুকূলিত করা যেতে পারে :sqrt(n)O(sqrt(n)loglog(n))
void isPrime(int n){
    int prime[n],i,j,count1=0;
    for(i=0; i < n; i++){
        prime[i] = 1;
    }
    prime[0] = prime[1] = 0;
    for(i=2; i <= n; i++){
        if(prime[i] == 1){
            printf("%d ",i);
            for(j=2; (i*j) <= n; j++)
                prime[i*j] = 0;
        }
    }    
}

4
না, এনকে sqrt (n) দিয়ে প্রতিস্থাপন করা এটিকে log n লগ লগ (sqrt n) করে তোলে যা এখনও লগ লগ n। এবং isprimeসেখানে ব্যবহার করার জন্য একেবারে ভুল নাম।
নেস

-1

উপরের ব্যাখ্যাটি দেখুন দেখুন অভ্যন্তরীণ লুপটি স্কয়ারটি (এন) পর্যন্ত সমস্ত মৌলিক সংখ্যার সমন্বিত যোগফল। সুতরাং, এর আসল জটিলতা হ'ল ও (স্কয়ার্ট (এন) * লগ (লগ (স্কয়ার্ট (এন)))


4
ভুল আমরা এন এর সমস্ত পথ চিহ্নিত করি: এন / 2 + এন / 3 + এন / 5 + এন / 7 + এন / 11 + ... এন (1/2 + 1/3 + 1/5 + 1/7 + 1/11 + ...) ~ N লগ লগ (স্কয়ার্ট এন) ~ এন লগ লগ এন।
নেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.