एक सममित सकारात्मक निश्चित मैट्रिक्स का विकर्ण अद्यतन


19

एकn×n सममित सकारात्मक निश्चित (SPD) विरल मैट्रिक्स है। जी एक विरल विकर्ण मैट्रिक्स है। n बड़ा है (n > 10000) और में नॉनज़रोज़ की संख्याजीआमतौर पर 100 ~ 1000 है।

को चोल्स्की रूप में रूप में वर्णित किया गया हैएलडीएलटी

कैसे अद्यतन करने के लिए एल और डी कुशलता से जब हो जाता है +जी ?


क्या जी में केवल सकारात्मक तत्व हैं? यदि हां, तो यहां एक ऊपरी ऊपरी सीमा है: रैंक एक अपडेट के योग के रूप में विकर्ण अपडेट देखें। एक रैंक-वन अपडेट के एलडीएल ^ टी कारक की गणना करने के लिए ओ (एन ^ 2) तरीके मौजूद हैं (Google खोज उदाहरण प्रदान करता है)। तब आपका विकर्ण अद्यतन O (rn ^ 2) में चलेगा जहाँ r, G. के गैर-शून्य विकर्ण तत्वों की संख्या है, इन अद्यतनों की विशिष्ट प्रकृति को देखते हुए कुछ संगणनाओं को सहेजने के लिए शॉर्टकट हैं, लेकिन यह संभव नहीं है अगर यह संभव है O (rn ^ 2) के नीचे दिए गए आदेश को कम करें।

3
मैं मानता हूं- मुझे विश्वास नहीं है कि चोल्स्की फैक्टराइजेशन के लिए विकर्ण अद्यतन करने का कोई तरीका है जो केवल फैक्टराइजेशन को दोहरा रहा है, लेकिन रैंक वन अपडेट समय में किया जा सकता है , और आपको केवल प्रत्येक के लिए एक करना होगा G के विकर्ण पर nonzero । हे(2)जी
ब्रायन बोरचर्स

10
के लिए और एन एन जेड ( जी ) सैकड़ों में है, यह पुनर्रचना हरा करने के लिए कठिन हो जाएगा एक । यदि A का आकार बहुत बड़ा है और G बहुत विरल है, तो यह भुगतान कर सकता है। किसी भी स्थिति में, संभावित अपडेट और अनुमान गहराई से कवर किए जा सकते हैं क्या विकर्ण प्लस निश्चित सममित रैखिक प्रणालियों को पूर्व-समाप्ति के बाद द्विघात समय में हल किया जा सकता है? n~104nnz(जी)जी
जेड ब्राउन

5
जेड, मुझे लगता है कि आपको अपनी टिप्पणी को यहां एक उत्तर में बढ़ावा देना चाहिए।
माइकल ग्रांट

जवाबों:


3

CHOLMOD SuiteSparse पैकेज (बीटा 4.4.5) का नवीनतम संस्करण मैटलैब (और C) API का उपयोग करते हुए एलडीएलटी अपघटन के लिए एक सममित पंक्ति / स्तंभ (रैंक 2 अपडेट) को संशोधित करने का समर्थन करता है। मैंने इसे अपने एक प्रोजेक्ट में सफलतापूर्वक इस्तेमाल किया।

आप इसका उपयोग nnz(जी) के कारकीकरण में अद्यतन करने के लिए कर सकते हैं। यह इस पेपर पर आधारित है ।

इसलिए, जटिलता हो जाएगा हे(nnz(जी)*nnz(एल)) । जहाँ nnz(एल) को विरल A के लिए भरण कम करने वाले भरण का उपयोग करते समय काफी कम किया जा सकता है

पैकेज को यहां से डाउनलोड किया जा सकता है

पैकेज मालिक द्वारा दिए गए कुछ नोट नीचे दिए गए हैं (प्रो। टिम डेविस):

एपीआई:

LD = ldlrowmod (LD, k) A (:, k) और A (k, :) से kth row / col की पहचान को सेट करके पंक्ति / स्तंभ k को हटाता है।

LD = ldlrowmod (LD, k, C) स्पार कॉलम C के साथ A की kth row / col (जो kth row / पहचान का क्षेत्र होना चाहिए) की जगह लेती है।

जटिलता:

पंक्ति जोड़ना / हटाना ज्यादा से ज्यादा लेता है हे(nnz(एल)) समय है, इसलिए यदि nnz(एल) है हे(n) , तो समय ज्यादा से ज्यादा है हे(n)

भरण कम करने की अनुमति:

शायद ही यह किसी उपयोगकर्ता के मैट्रिक्स को फैक्टर करने के लिए एक अच्छा विचार है, जैसा कि एलडीएलटी = ए। बल्कि, हम एलडीएलटी = पीपीटी अनुमति देते हैं ताकि एल में काफी कम नॉनजर हो।

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