की बिग-ओ जटिलता को सरल बनाना मेरे पास एक गिनती एल्गोरिदम है जिसके लिए मैं एक सामान्य बड़ा विवरण प्राप्त करने की कोशिश कर रहा हूं। यह बहुत घोंसला और भयंकर घातीय है। संदेश यह है:इस घातीय एल्गोरिदम
1. For each T_i in T
2. For k = 1 to max_k
3. For each of 2^k*(n choose k) items
4. For each t in T_i
5. check if the item is in t...etc.
यहाँ प्रत्येक चलने का समय
- यह एक सरल विभाजन है और मैं सिर्फ यह एक निरंतर c1 देने के लिए जा रहा हूँ की एक पंक्ति-दर-पंक्ति विचार है।
- max_k एक छोटी संख्या है, हमेशा एन से कम, शायद 4 या 5 के आसपास। मैं नीचे के का उपयोग करूंगा।
- यह लूप हमेशा 2^के * (एन का चयन करें) समय
- लाइन 1 स्थिरता पर विचार करके, हम इस लाइन को सामान्यीकृत कर सकते हैं और जानते हैं कि यह सबसे खराब मामले में कुल 2^n बार कभी भी आग नहीं लगाएगा, लेकिन आम तौर पर 2^एन बार का एक अंश चलाएगा, इसलिए हम इसे एक (2^एन)/सी 2
- कॉल करेंगे, यह इन सभी लूपों के अंदर सरल if-statement ऑपरेशन है, इसलिए c3।
गुणा इन सभी को एक साथ देता है:
c1 * k * 2^k * (n choose k) * (2^n)/c2 * c3
जब से मैं एक बड़ा-ओ प्रतिनिधित्व चाहते हैं, स्थिरांक अनदेखी देता है:
k * 2^k * (n choose k) * (2^n)
यह ज्ञात है कि (एन कश्मीर चुनें) घिरा है उपरोक्त (एन * ई/के)^के, तो:
O(k * 2^k * (n * e/k)^k * (2^n))
मेरी तलाश पर, मैं यहां क्या अनदेखा कर सकता हूं ... 2^n निश्चित रूप से हावी शब्द है क्योंकि एन हमेशा के मुकाबले बड़ा होता है, और आमतौर पर बहुत अधिक होता है। क्या इसे ओ (2^एन) के लिए सरल बनाया जा सकता है? या ओ (2^भयानक)? या मुझे 2^के में छोड़ना चाहिए, जैसे ओ (2^के * 2^एन) में? (या सभी शर्तों को छोड़ दें?)
मेरी समझ यह है कि यदि k या max_k प्रतिस्पर्धा या एन को पार कर सकता है, तो वे महत्वपूर्ण हैं। लेकिन चूंकि वे हमेशा प्रभुत्व रखते हैं, क्या उन्हें बहुपद चलने वाले समय के निचले क्रम की शर्तों को छोड़ दिया जा सकता है? मुझे लगता है कि सभी घातीय चलने का समय गड़बड़ मुझे भ्रमित कर रहा है। किसी भी सलाह की काफी सराहना की जाती है। जिसका अर्थ है - -
+1 मजबूत उत्तर ... – MoonKnight
यदि यह सच है कि n हमेशा के से अधिक है, तो क्या यह बाध्य करने के लिए पर्याप्त है और इस प्रकार इसे हटा रहा है? मुझे लगता है कि आप यही कह रहे हैं लेकिन मैं निश्चित होना चाहता हूं। आपका एन * एलजी (के) उदाहरण काफी स्पष्ट है - इसके लिए धन्यवाद। –
@Chucktown: 'यदि यह सच है कि एन हमेशा के मुकाबले बड़ा होता है, तो क्या वह के लिए बाध्य करने के लिए पर्याप्त है और इस प्रकार इसे हटा रहा है?' नहीं। जब हम कहते हैं कि 'के बाध्य है' तो हमारा मतलब है कि एक * कॉन्स्टेंट * 'सी' है जैसे कि 'के <सी'। मैं इसे स्पष्ट करने के लिए संपादित कर दूंगा। – amit