ठीक है, इसलिए ग्राफ आपके पेड़ में n
तत्वों को डालने की लागत का एक माप प्रदर्शित करता है, जहां एक्स अक्ष यह है कि हमने कितने तत्व डाले हैं, और वाई धुरी कुल समय है।
चलो उस फ़ंक्शन को कॉल करें जो पेड़ f(n)
में एन तत्वों को सम्मिलित करने के लिए जितना समय लगता है।
फिर हम क्या f
दिखाई देती हैं इसका मोटा अनुमान लगा सकते हैं:
f(1) < k*log(1) for some constant k.
f(2) < k*log(1) + k*log(2) for some constant k
...
f(n) < k * [log(1) + log(2) + ... + log(n)] for some constant k.
कारण कैसे लॉग काम करने के लिए, हम log(1) + ... + log(n)
संक्षिप्त कर सकते हैं:
f(n) < k * [log(1*2*3*...*n)] for some constant k
f(n) < k * log(n!) for some constant k
हम विकिपीडिया पर एक नज़र ले जा सकते हैं log(n!)
की तरह graph देखने के लिए। लेख में आलेख पर एक नज़र डालें। आपको बहुत परिचित दिखना चाहिए।:)
है यही कारण है, मुझे लगता है कि यदि आपने गलती से ऐसा करने के बाद:
for n in (5000, 50000, 500000):
startTime = ...
## .. make a fresh tree
## insert n elements into the tree
stopTime = ...
## record the tuple (n, stopTime - startTime) for plotting
और कुल समय नहीं बल्कि एक पेड़ से एक तत्व डालने के अलग-अलग मूल्य, आकार n के पेड़ के निर्माण के लिए साजिश रची आकार n का:
for n in range(50000):
startTime = ...
## insert an element into the tree
stopTime = ...
## record the tuple (n, stopTime - startTime) for plotting
क्रिस टेलर टिप्पणी में कहा गया है कि अगर आप f(n)/n
साजिश, आप एक लॉग ग्राफ़ दिखाई देगा। ऐसा इसलिए है क्योंकि log(n!)
पर काफी सख्त अनुमान n*log(n)
है (विकिपीडिया पृष्ठ देखें)। इसलिए हम अपने बाध्य करने के लिए वापस जा सकते हैं:
f(n) < k * log(n!) for some constant k
और मिलती है:
f(n) < k * n * log(n) for some constant k
और अब यह देखने के लिए कि अगर आप n
द्वारा f(n)
विभाजित करते हैं, अपने ग्राफ से ऊपर घिरा हो जाएगा आसान होना चाहिए है एक लॉगरिदम का आकार।
कृपया अपना कोड पोस्ट करें। –
http://paste.pocoo.org/show/559501/ – Zack