un

guest
1 / ?
back to lessons

Hamming की भौगोलिक कल्पना

Hamming ने भौगोलिक कल्पना किसी भी जगह पर देखी

Hamming के चैप्टर 9 में एक चेतावनी के साथ शुरुआत होती है: भौगोलिक कल्पना उच्च-मापी स्थानों में ध्वस्त होती है। 3D में, एक गोला अपने घेरे वाले क्यूब का अधिकांश हिस्सा भरता है। 10D में, गोला क्यूब के आयतन का लगभग 0.2% हिस्सा घेरता है। 100D में, हिस्सा शून्य के करीब होता है। आयतन केंद्रित होता है surface के पास। बिन्दु कोनों के बजाय केंद्र के पास संघटित होते हैं।


उनके त्रुटि सुधार कोड ने इसे सीधे व्यावहारिक रूप से लिया। Hamming कोड n-मापी बाइनरी स्थान में codewords पैक करते हैं ताकि हर codeword को त्रुटि को सुधारने वाले त्रुटियों का गोला घेर ले। भौगोलिक आकार यह निर्धारित करता है कि आप कितनी त्रुटियों को सुधार सकते हैं। n-मापी स्थान में गोलाकार पैकिंग एक गणितीय समस्या है जिसे वास्तविक स्थानों पर हल किया जाना चाहिए: गोले को कितनी घनी तरह से पैक करें, कितनी त्रुटियों को सुधारें।


उच्च-मापी स्थानीयकरण की वही विफलता प्रक्रिया एल्गोरिदमिक जटिलता पर लागू होती है। छोटे N पर, O(N²) और O(N) एक ग्राफ पर लगभग समान दिखते हैं। उनके बीच का अंतर संभावित रूप से संभाल में लगता है। बड़े N पर, अंतर विस्फोट होता है - ठीक उसी तरह से जैसे कि गोले का आयतन उच्च-मापी स्थानों में ध्वस्त होता है। छोटे पैमाने पर संभव प्रतीत होने वाला काम बड़े पैमाने पर असंभव बन जाता है।

प्रत्येक जटिलता वर्ग का आकार

जटिलता को खींचना

प्रत्येक जटिलता वर्ग के लिए एक भौगोलिक आकार होता है:


- O(1): एक क्षैतिज रेखा। N के आधार पर समान लागत। कोई चाप नहीं।

- O(log N): एक हल्की ऊपर की ओर मोड़ जो सीधी हो जाती है। N के स्क्वायर हर समय Doubles। N के अंकगणित में अनुपात में बढ़ता है।

- O(N): मूल बिंदु से गुजरने वाली एक लंबी रेखा। लागत N के अनुपात में बढ़ती है।

- O(N log N): थोड़ा सीधा ऊर्ध्वाधर। एक रेखा जो बहुत हल्की सी ऊपर की ओर मोड़ जाती है।

- O(N²): एक परबोला। N=100 पर: 10,000 संचालन। N=1,000 पर: 1,000,000 संचालन।



महत्वपूर्ण अहसास: दो जटिलता वर्गों के बीच का अनुपात N के कार्य होता है। N=10 पर, O(N²) की लागत O(N) की तुलना में 10 गुना अधिक होती है। N=1,000 पर, O(N²) की लागत O(N) की तुलना में 1,000 गुना अधिक होती है। N=1,000,000 पर, यह 1,000,000 गुना अधिक होता है। अंतर सिर्फ बढ़ता है - यह N के अनुपात में बढ़ता है।


यह ज्यामितीय तर्क है कि MOAD-0001 पैच महत्वपूर्ण हैं। एक निर्भरता समाधान को O(N²) से O(N) में शिफ्ट करने से यह नहीं होता है कि इसकी गति स्थिर रूप से तेज होती है। N=50,000 पैकेज पर, यह 50,000× की तेजी है। N=100,000 पर, यह 100,000× की तेजी है। पैच का मूल्य समस्या के आकार के साथ बढ़ता है।

विस्तारित फासला

O(N²) और O(N) दोनों सही परिणाम देते हैं।

N=10 पर: O(N²) में 100 संचालन, O(N) में 10 संचालन। अनुपात: 10×।

N=1,000 पर: O(N²) में 1,000,000 संचालन, O(N) में 1,000 संचालन।

N=1,000 पर O(N²) को O(N) से कितनी गुणा अधिक धीमा होता है? N के बढ़ने के साथ इन दो वक्रों के बीच विस्तारित फासले की ज्यामितीय आकृति क्या है?

ज्यामितीय आकार के रूप में ग्राफ

निर्देशित अक्षर रहित ग्राफ

एक DAG (निर्देशित अक्षर रहित ग्राफ) एक ज्यामितीय संरचना है: नोड्स को निर्देशित किनारों द्वारा जोड़ा गया है जिसमें कोई चक्र नहीं। सॉफ्टवेयर निर्भरता ग्राफ, निर्माण पाइपलाइन और डेटा फ्लो आर्किटेक्चर सभी DAG बनाते हैं।


फैक्टरी मॉडल DAG के साथ वर्काहॉलिक और ग्लटन नोड्स


प्रत्येक नोड को गिनती करके ज्यामितीय गुणों को मापा जाता है:


- इन-डिग्री: नोड पर पहुंचने वाली किनारों की संख्या। उच्च इन-डिग्री का अर्थ है कि इस नोड को कई ऊपरी निर्भरता भोजन करते हैं।

- आउट-डिग्री: नोड से निकलने वाली किनारों की संख्या। उच्च आउट-डिग्री का अर्थ है कि इस नोड पर कई नीचे के उपभोक्ता निर्भरता करते हैं।

- बीचनेस: इन-डिग्री + आउट-डिग्री। इस नोड के माध्यम से कितने मार्ग गुजरते हैं। एक उच्च-बीचनेस नोड ग्राफ में एक क्रॉसरोड्स में बैठता है।

- सज्जन स्कोर: तेजी × इन-डिग्री। इस बोतलनेक क्लियर होने पर नीचे काम की मात्रा को मापता है।


फैक्ट्री मॉडल इन ज्यामितीय गुणों को भौतिक अर्थ देता है:

- उच्च बीचनेस + उच्च सर्ज स्कोर = काम के शौकीन नोड। इस बोतलनेक को बिना डाउनस्ट्रीम स्टेजिंग के हटा दें। संकरा।

- उच्च आउट-डिग्री + निम्न सर्ज स्कोर = भूखंड नोड। उपस्थिति बिना उत्पन्न करता है। मशीन जो रुकना भूल जाती है।

सर्ज और बीचनेस की प्रैक्टिस

एक DAG पढ़ें,

एक 5-नोड चेन पर विचार करें: A → B → C → D → E, इसके साथ एक अतिरिक्त किन्हां B → D।


- A: इन-डिग्री 0, आउट-डिग्री 1, बीचनेस 1। स्रोत नोड। इसे कुछ नहीं खिलाता है। एक उपभोक्ता।

- B: इन-डिग्री 1 (ए से), आउट-डिग्री 2 (सी और डी को फ़ीड करता है), बीचनेस 3। दो डाउनस्ट्रीम नोड को खिलाता है - एक फैन-आउट पॉइंट।

- C: इन-डिग्री 1 (B से), आउट-डिग्री 1 (D को), बीचनेस 2। एक पास-थ्रू नोड।

- D: इन-डिग्री 2 (B और C से), आउट-डिग्री 1 (E को), बीचनेस 3। दो पथ से प्राप्त करता है।

- E: इन-डिग्री 1 (D से), आउट-डिग्री 0, बीचनेस 1। सिंक नोड।


B और D सबसे अधिक बीचनेस (3) साझा करते हैं। B फैन-आउट है: यह दो नोड को खिलाता है। D संकरा बिंदु है: यह दो पथ से प्राप्त करता है। C के MOAD-0001 पैच के बाद D दोनों B→D पथ और C→D पथ से सर्ज प्राप्त करता है।

नोड मेट्रिक्स की गणना करें

निर्भरता ग्राफ: A → B → C → D → E (एक श्रृंखला), इसके साथ एक अतिरिक्त किन्हां B → D।

नोड C को MOAD-0001 पैच के बाद मापा स्पीडअप 50x हो गया है।

C के इन-डिग्री, आउट-डिग्री, बीचनेस और सर्ज स्कोर को निकालें। पैच के बाद किस नोड को MOAD-0005 का सबसे अधिक जोखिम है, और क्यों?

फ्लैटलैंड का विकृति

MOAD-0007: स्थानीयता के रूप में स्थानीयता का प्रश्न

MOAD-0007 (फ्लैटलैंड की विकृति): स्थानीयता के रूप में प्रश्न पूछने से डेटा की भौगोलिक संरचना का अनादर होता है। हर प्रश्न सभी N वस्तुओं को जाँचता है। O(N) प्रति प्रश्न। N वस्तुओं के साथ M प्रश्न: O(M × N)। विस्तार पर: महामारी।


BVH vs फ्लैट लिस्ट स्थानीयता का प्रश्न


एक वास्तविक समय रे कास्टर प्रत्येक वस्तु को प्रत्येक रे के खिलाफ जाँच करता है। 60 फ्रेम प्रति सेकंड के साथ, 100 रे प्रति फ्रेम और 10,000 सीन वस्तु: 60,000,000 विभाजन परीक्षण प्रति सेकंड। सभी को बचाया जा सकता है।


भौगोलिक अहसास: स्थान का संरचना होती है। वस्तुएँ समूह बना लेती हैं। एक रे जो मध्य बाएं सीन को चूकता है, वह बाएं आधे में स्थित हर वस्तु को चूकता है। एक फ्लैट लिस्ट इसे नहीं ले सकता - यह हर वस्तु को स्थानीय स्थान के आधार पर जाँच करता है। एक स्थानीय डेटा संरचना कर सकती है।

BVH: 3D में बाइनरी खोज

BVH का काम कैसे करता है

BVH (बाउंडिंग वॉल्यूम हायरार्की) 3D स्थान को नेस्टेड बाउंडिंग बॉक्स की एक स्ट्रेक्ट के रूप में विभाजित करता है। प्रत्येक आंतरिक नोड में बच्चों की ज्यामिति के सभी के बाउंडिंग बॉक्स को रखता है।


एक रे कास्ट क्वेरी:

1. मूल बाउंडिंग बॉक्स को परीक्षण करें। यदि रे चूक जाता है, तो तुरंत निकल जाएँ - पूरी सीन को प्रून किया जाता है।

2. यदि रे हिट करता है, तो बच्चों में विचार करें। प्रत्येक बच्चे का बाउंडिंग बॉक्स को परीक्षण करें।

3. प्रत्येक बच्चे को चूका: उस शाखा को प्रून करें। प्रत्येक बच्चे को हिट: गहराई में विचार करें।

4. पत्ती नोड पर: वास्तविक भूगोल को परीक्षण करें।


प्रूनिंग की ज्यामिति: प्रत्येक स्तर पर, जो शाखाएँ नहीं मिलती हैं, वे निकल जाती हैं। एक संतुलित BVH के साथ गहराई d: 2^d पत्ती नोड्स मौजूद होते हैं, लेकिन एक ही रे को प्रून की गई मार्ग के लिए केवल O(log N) तुलनाओं की आवश्यकता होती है।


यही भौगोलिक तर्क है जो बाइनरी सर्च के साथ है: प्रत्येक तुलना शेष खोज को आधा करती है। बाइनरी सर्च एक सॉर्ट किए गए मассив को आधा करता है। एक BVH 3D स्थान को आधा करता है। संरचना समान है - एक संतुलित बाइनरी ट्री के साथ प्रूनिंग प्रत्येक नोड पर।


एक MOAD-0007 फिक्स: फ्लैट लिस्ट को BVH से बदलें। O(N) प्रति प्रश्न से O(log N) प्रति प्रश्न में चलते हैं। N=1,024 वस्तुओं के साथ, O(log₂ 1,024) = 10 तुलनाएँ बजाय 1,024।

BVH की तेजी की गणना करें

एक गेम सीन में 1,024 वस्ताएँ हैं।

बिना BVH के: एक रे कास्ट सभी 1,024 वस्ताओं को जाँचता है।

10 की गहराई वाले संतुलित BVH के साथ (2^10 = 1,024 पत्ते): एक रे कास्ट अधिकतम 10 स्तरों को पार करती है, प्रत्येक स्तर पर 2 बच्चों की तुलनाें।

BVH के लिए एक रे कास्ट के लिए अधिकतम बाउंडिंग बॉक्स जाँच की संख्या का अनुमान लगाएं और फ्लैट स्कैन की तुलना में तेजी की गणना करें।