O (log * N) क्या है?


80

O (log * N) क्या है और यह O (log N) से कैसे भिन्न है?


इसी तरह के सवाल: stackoverflow.com/questions/2307283/…O(log* N) दुर्भाग्य से कोई जवाब नहीं ।
15us

1
क्या यह प्रश्न लॉग के बाद * या O () के बारे में सामान्य रूप से नोटेशन के बारे में है?
बार्ट वैन ह्युकेलोम

1
यह कुछ उन्नत डेटा संरचनाओं में है, हालांकि मैं यह याद करने के लिए बहुत लंबे समय तक स्कूल से बाहर हूं कि यह कहां से आता है!
लैरी

1
मुझे लगता है कि इतना उन्नत नहीं है, बस याद है - संघ पता पथ संपीड़न की प्रारंभिक निचली सीमा ओ (एन लॉग * एन) पर सेट की गई थी जब तक कि इसे ओ (ए एन) से कम नहीं किया गया था, जहां ए उलटा एकरमन फ़ंक्शन है ..
लैरी

1
हे। व्यवहार में, मुझे लगता है कि मैं इसके लिए ओ (एन) के एक अनुमान से संतुष्ट होगा। :-)
RBarryYoung

जवाबों:


84

O( log* N )" पुनरावृत्त लघुगणक है " है:

कंप्यूटर विज्ञान में, n, लिखित लॉग * n (आमतौर पर "लॉग स्टार") का पुनरावृत्त लघुगणक, परिणाम की संख्या 1 से कम या उसके बराबर होने से पहले लघुगणक फ़ंक्शन को पुनरावृत्त होना चाहिए।


9
यह वास्तव में दिलचस्प बात है जिसके बारे में मैंने नहीं सुना। क्यू + ए 1 प्रत्येक। मुझे लगता है कि O (log * N) सभी-इरादों और उद्देश्यों के लिए O (1) है। ठंडा।
ग्रेग

1
@ समूह, कोई लॉग (n) का अर्थ यह नहीं है कि तत्वों की संख्या समय के साथ धीरे-धीरे बढ़ती है। जैसे। 10x के रूप में कई तत्व केवल फ़ंक्शन को 2x के रूप में लंबे समय तक ले जाते हैं
मार्टिन बेकेट

2
मुझे लगता है कि मैं पहली बार यूनियन-फाइंड अल्गोरिद्म के विश्लेषण में आया था, जब इसमें O( N log* N )सुधार करने से पहले O( A N ), जहां A उलटा एकरमन फ़ंक्शन है। मुझे अभी भी बाद के प्रमाण की समझ नहीं है, लेकिन O( N log* N )एल्गोरिथ्म अपेक्षाकृत अच्छा पढ़ा जाता है।
लैरी

13
@ मर्टिन, लेकिन यह लॉग * (n) है जो धीरे-धीरे ऊपर जाता है, जैसे कि लॉग * (2 ^ 65536 -1) = 5. आप उस स्थिरांक को भी कॉल कर सकते हैं।
ग्रेग

4
क्षमा करें लॉग-स्टार अंतर की सराहना नहीं की गई, धन्यवाद - कुछ नया सीखना!
मार्टिन बेकेट

25

log* Nबिट एक पुनरावृत्त एल्गोरिथ्म जो बहुत धीरे धीरे बढ़ता है, बहुत धीमी बस से है log N। आप मूल रूप से केवल पुनरावृति रखते हैं जब तक कि इसका उत्तर एक के नीचे नहीं मिलता (उदाहरण:) log(log(log(...log(N))), और जितनी बार आपके पास थाlog() उत्तर होगा।

वैसे भी, Stackoverflow पर यह पांच साल पुराना सवाल है, लेकिन कोई कोड नहीं है? (!) चलो इसे ठीक करते हैं - यहाँ पुनरावर्ती और पुनरावृत्ति कार्यों के लिए कार्यान्वयन (वे दोनों एक ही परिणाम देते हैं):

public double iteratedLogRecursive(double n, double b)
{
    if (n > 1.0) {
        return 1.0 + iteratedLogRecursive( Math.Log(n, b),b );
    }
    else return 0;
}

public int iteratedLogIterative(double n, double b)
{
    int count=0;
    while (n >= 1) {
        n = Math.Log(n,b);
        count++;
    }
    return count;
}

2
यह प्रश्न का उत्तर कैसे देता है?
Maroun

3
@MarounMaroun: मैंने अधिक संदर्भ देने के लिए उत्तर की शुरुआत को संपादित किया है। कोड वह विवरण / परिभाषा है जो वह पूछ रहा था।
डैन डब्लू

9

log * (n) - "लॉग स्टार n" के रूप में जाना जाता है "इटरेटेड लॉगरिथम" के

सरल शब्द में आप लॉग इन कर सकते हैं * (n) = लॉग (लॉग (लॉग (..... (लॉग * *))))

log * (n) बहुत शक्तिशाली है।

उदाहरण:

1) लॉग * (n) = 5 जहां n = ब्रह्मांड में परमाणु की संख्या

2) ट्री कलर का उपयोग करते हुए 3 रंगों को लॉग * (n) में किया जा सकता है जबकि ट्री को कलर करते हुए 2 रंग पर्याप्त हैं लेकिन जटिलता तब O (n) होगी।

3) यूक्लिडियन न्यूनतम फैले हुए वृक्ष को जानने वाले बिंदुओं के एक समूह के डेलुनाय त्रिभुज का पता लगाना: यादृच्छिक ओ (एन लॉग * एन) समय।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.