คำนวณค่าลักษณะเฉพาะทั้งหมดของเมทริกซ์ adjacency ที่ใหญ่และเบาบางมาก


13

ฉันมีสองกราฟที่มีเกือบ n ~ 100,000 โหนดแต่ละ ในกราฟทั้งสองแต่ละโหนดเชื่อมต่อกับ 3 โหนดอื่น ๆ ดังนั้นเมทริกซ์ adjacency จึงสมมาตรและเบาบางมาก

ส่วนที่ยากคือฉันต้องการทั้งหมดค่าลักษณะเฉพาะของเมทริกซ์ adjacency แต่ไม่ใช่ค่าลักษณะเฉพาะ เพื่อความถูกต้องนี่จะเป็นครั้งหนึ่งในชีวิตของฉัน (เท่าที่ฉันสามารถเห็นได้อย่างน้อย!) ดังนั้นฉันต้องการได้รับค่าลักษณะเฉพาะทั้งหมดและไม่รังเกียจที่จะรอพวกเขาสักสองสามวัน

ฉันลองscipyล้อมรอบARPACKแต่มันใช้เวลานานเกินไป ฉันพบห้องสมุดหลายแห่ง แต่พวกเขาก็ทำงานได้ดีที่สุดในการหาค่าย่อยที่มีค่ามากที่สุด / เล็กที่สุด มีห้องสมุดใดบ้างที่ใช้ได้กับเมทริกซ์กระจัดกระจายแบบสมมาตรที่มีการนำไปใช้แบบขนานเพื่อให้ได้ค่าลักษณะเฉพาะทั้งหมดหรือไม่


6
ทำไมคุณจึงต้องการค่าลักษณะเฉพาะทั้งหมด ปัญหาส่วนใหญ่ของขนาดนี้เป็นการประมาณของปัญหาที่ใหญ่กว่า (หรือแม้แต่มิติที่ไม่มีที่สิ้นสุด) และค่าลักษณะเฉพาะของปัญหาเล็ก ๆ เพียงประมาณว่าปัญหานั้นต้องการแก้ปัญหาจริงๆ ส่วนใหญ่แล้วคุณภาพของการประมาณจะดีต่อค่าลักษณะเฉพาะที่เล็กที่สุดหรือใหญ่ที่สุดเท่านั้นและอื่น ๆ ทั้งหมดนั้นมีค่าประมาณต่ำและทำให้ไม่น่าสนใจมากนัก
Wolfgang Bangerth


@ WolfgangBangerth: (ยกโทษให้ฉันถ้าสิ่งเหล่านี้ชัดเจนสำหรับคุณ) ปัญหามาจากฟิสิกส์ของวัสดุ มันเกี่ยวข้องกับการประมาณความผูกพันที่แน่นหนาของวัสดุเพื่อให้ได้โครงสร้างแถบคุณสมบัติการสั่นสะเทือนและคุณสมบัติทางไฟฟ้า เพื่อให้ได้สิ่งเหล่านี้ฉันต้องการค่าลักษณะเฉพาะที่ครบถ้วน BTW มันไม่มีอะไรใหม่และมันกลับไปเป็นยุค 70 และยุค 80 แต่เนื่องจากระบบของฉันไม่แน่นอนฉันต้องมีระบบที่ใหญ่มากเพื่อให้ได้ผลลัพธ์ที่ดี แม้ว่าคนส่วนใหญ่สนใจคริสตัลเท่านั้นซึ่งเป็นเรื่องง่ายมากเมื่อเทียบกับกรณีของฉัน
มาห์ดี

2
@ มาห์ดี: สิ่งที่ฉันหมายถึงคือคุณสมบัติทางกายภาพนั้นพิจารณาจากสเปกตรัมของโอเปอเรเตอร์บางส่วน ฉันสงสัย (แต่แน่นอนไม่ทราบเพราะคุณไม่ได้อธิบายว่าปัญหามาจากไหน) ว่าปัญหาค่าไอคิวเมทริกซ์ขนาดใหญ่ที่คุณมีอยู่นั้นเป็นเพียงการประมาณของปัญหา PDE ดังนั้นค่าลักษณะเฉพาะของคุณจะยังเป็นเพียงการประมาณ
Wolfgang Bangerth

คำตอบ:


8

คุณสามารถใช้การแปลงสเปกตรัมแบบกะ - อินเวิร์ส [1] และคำนวณแถบคลื่นความถี่ตามวงดนตรี

เทคนิคได้อธิบายไว้ในบทความของฉันด้วย [2] นอกเหนือจากการนำไปใช้ใน [1] มีการนำไปใช้ใน C ++ ในซอฟต์แวร์ Graphite ของฉัน [3] ( อัปเดตเมื่อวันที่ 17 มกราคม : ตอนนี้ทุกอย่างถูกส่งไปยัง geogram / graphite version 3 ) ที่ฉันใช้คำนวณ eigenfunctions ตาข่ายที่มีจุดยอดสูงถึง 1 ล้านจุด (ปัญหาที่คล้ายคลึงกับของคุณ)

มันทำงานอย่างไร:

A(V,λ)A(V,1/λ)A1AA1ALLtAx=bAσIdσ(AσId)1σ

[1] http://www.mcs.anl.gov/uploads/cels/papers/P1263.pdf

[2] http://alice.loria.fr/index.php/publications.html?redirect=0&Paper=ManifoldHarmonics@2008

[3] http://alice.loria.fr/software/graphite/doc/html/


ขอบคุณบรูโน่! ดูมีแนวโน้มมากฉันจะตรวจดูพวกมัน!
มาห์ดี

1

ตัวเลือกอื่นจะใช้การหมุน Jacobi เนื่องจากเมทริกซ์ของคุณเกือบจะเป็นแนวทแยงจึงไม่ควรใช้เวลามากในการรวมตัว โดยทั่วไปแล้วจะมาบรรจบกันในอัตราเชิงเส้น แต่หลังจากการวนซ้ำมากพออัตราการลู่เข้าจะเป็นกำลังสอง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.