দুটি 12x12 ম্যাট্রিকের ক্ষেত্রে একই নির্ধারক রয়েছে কিনা তা পরীক্ষা করা হচ্ছে


11

আমি একটি প্রদত্ত করছি ম্যাট্রিক্স যে প্রতিসম, বিপরীত ইতিবাচক নির্দিষ্ট এবং ঘন হয়। আমার যদি যেখানে জে সমস্ত ম্যাট্রিক্স।12×12Qজে

det(Q)=det(12IQJ)(1)
J

আমি বর্তমানে আর্মাদিলো গ্রন্থাগারটি দিয়ে এটি করছি তবে এটি খুব ধীর হয়ে গেছে। জিনিসটি হ'ল আমার এক ট্রিলিয়ন ম্যাট্রিকের জন্য এটি করা দরকার এবং এটি প্রমাণিত হয়েছে যে দুটি নির্ধারককে গণনা করা আমার প্রোগ্রামের বাধা। অতএব আমার দুটি প্রশ্ন আছে

  1. আমি নির্ধারকগুলির দ্রুত আকার নির্ধারণের জন্য আমি কি কৌশল ব্যবহার করতে পারি যে আমি তাদের আকারটি জানি? এই ক্ষেত্রে কাজ করতে পারে যে 12×12 ম্যাট্রিকের জন্য সম্ভবত একটি অগোছালো সম্প্রসারণ ?

  2. সাম্য পরীক্ষা করার জন্য অন্য কোনও কার্যকর উপায় আছে (1)

সম্পাদনা করুন। মন্তব্যের উত্তর দিতে। আমি সব সংযুক্ত অ স্ব-পরিপূরক গ্রাফ গনা প্রয়োজন G আদেশের 13 যেমন যে G এবং G¯ spanning গাছ একই সংখ্যক আছে। এর জন্য প্রেরণাটি এই ম্যাথওভারফ্লো পোস্টে পাওয়া যাবে । মেশিনের জন্য আমি সমান্তরালভাবে এটি একটি 8 কোর 3.4GHh মেশিনে চালাচ্ছি।

সম্পাদনা করুন। আমি 12×12 ম্যাট্রিক্সের নির্দিষ্ট করে নির্ধারণের জন্য একটি সি প্রোগ্রাম তৈরি করে প্রত্যাশিত চলমান সময়টিকে 50% কমাতে সক্ষম করেছিলাম । পরামর্শগুলি এখনও স্বাগত।


6
খুব ধীর কত ধীর? কোন হার্ডওয়্যারটিতে এটি কতক্ষণ সময় নেয়? এই এর ট্রিলিয়নগুলি কি স্বতন্ত্র হয় যাতে আপনি এই নির্ধারকগুলির মধ্যে অনেকগুলি সমান্তরালে গণনা করতে পারেন? যদি তা হয় তবে আপনি কত বড় একটি মেশিন চালাতে পারবেন? কী কারণে এই সমস্যার সৃষ্টি হয়েছিল? আপনি কি নির্ধারকগুলি গণনা করার বিষয়ে নিশ্চিত? Q
বিল বার্থ

3
কত ঘন ঘন (কেসের ভগ্নাংশের জন্য) নির্ধারকরা একই / পৃথক হয়? যদি তারা বেশিরভাগ সময় ভিন্ন হয় তবে তাদের চেয়ে আলাদা হতে পারে তা নির্ধারণ করার জন্য একটি সস্তা পরীক্ষা হতে পারে এবং আপনি যদি প্রথম পরীক্ষা ব্যর্থ হন তবেই তারা যাচাই করতে পারবেন। অন্য সময় যদি তারা বেশিরভাগ সময় একই থাকে।
ওল্ফগ্যাং ব্যাঙ্গার্থ

1
ইতিমধ্যে জিজ্ঞাসা করা হয়েছে: কোথা থেকে এসেছে সে সম্পর্কে আপনি কিছু বিশদ সরবরাহ করতে পারেন ? অন্ধভাবে কম্পিউটার নির্ধারণকারীগুলির চেয়ে আরও ভাল পন্থা থাকতে পারে। Q
জেএম

4
এই শর্তটি "এক ট্রিলিয়ন ম্যাট্রিকের জন্য" পরীক্ষা করাতে হবে এমন ধারণাটি 1) পরামর্শ দেয় যে অ্যাপ্ররিওরির কিছু বিশেষ কাঠামো হিসাবে পরিচিত (অন্যথায় শর্তটি এলোমেলোভাবে রাখা আশা সামান্য), এবং ২) আরও ভাল পদ্ধতির জন্য এই সম্পত্তি (দক্ষতার সাথে চেকযোগ্য ফর্মুলেশন সহ) সহ সমস্ত ম্যাট্রিকের বৈশিষ্ট্যযুক্ত হতে পারে । QQ
হার্ডম্যাথ

1
@ হরদমথ হ্যাঁ, একটি পূর্ণসংখ্যা ম্যাট্রিক্স যা থেকে এবং তির্যক উপাদানগুলির সমকক্ষ প্রবেশদ্বার রয়েছে1 12 - 1Q1121
জের্নেজ

উত্তর:


8

যেহেতু আপনি ইতিমধ্যে সি ++ ব্যবহার করছেন এবং আপনার ম্যাট্রিকগুলি প্রতিসম ধনাত্মক ধনাত্মক সুনিশ্চিত, তাই আমি এবং কিউজে একটি অপরিবর্তিত ফ্যাক্টেরাইজেশন করব । এখানে আমি ধরে নিচ্ছি যে ইতিবাচক সুনিশ্চিত, অন্যথায় সংখ্যার স্থায়িত্বের জন্য পাইভোটিংয়ের প্রয়োজন হবে (এটিও সম্ভব যে এটি ইতিবাচক সুনির্দিষ্ট না হলেও, পিভোটিংয়ের প্রয়োজন নেই, তবে আপনাকে এটি চেষ্টা করতে হবে)। Q 12 I - Q - J 12 I - Q - J L D L TLDLTQ12IQJ12IQJLDLT

এটি এলইউ ফ্যাক্টরীকরণের চেয়ে দ্রুত এবং কোলেস্কির চেয়েও দ্রুত কারণ বর্গমূলগুলি এড়ানো যায়। নির্ধারকটি কেবল তির্যক ম্যাট্রিক্সের উপাদানগুলির পণ্য । একটি এলডিএল ফ্যাক্টেরাইজেশন সম্পাদনের কোডটি এত সহজ যে আপনি এটি সি এর 50 টিরও কম লাইনে লিখতে পারেন এটির উইকিপিডিয়া পৃষ্ঠাটি অ্যালগরিদম বর্ণনা করে, এবং আমার কাছে চোলস্কি করার জন্য এখানে কিছু সাধারণ টেম্প্লেটেড কোড রয়েছে । আপনি ফ্যাক্টেরাইজেশন বাস্তবায়নের জন্য এড়াতে এটি ব্যাপকভাবে সরল করতে এবং এটিকে সংশোধন করতে পারেন ।এল ডি এল টিDLDLT

যেহেতু আপনি স্টোরেজ ফর্ম্যাটটিও নিয়ন্ত্রণ করতে পারেন, আপনি কেবলমাত্র অর্ধেক ম্যাট্রিক্স সঞ্চয় করে রুটিনটিকে আরও অনুকূল করতে পারেন এবং মেমরির স্থানীয়তা সর্বাধিকতর করতে একটি লিনিয়ার অ্যারে এটি প্যাক করতে পারেন। সমস্যার আকারগুলি যেহেতু খুব ছোট তাই আমি সাধারণ কাস্টম ডট পণ্য এবং র‌্যাঙ্ক 1 আপডেটের রুটিনগুলিও লিখতে পারি, আপনার প্রয়োজন হবে সংকলককে কল ওভারহেড হ্রাস করতে রুটিনগুলিকে ইনলাইন করতে দিন। যেহেতু এটি একটি স্থির আকারের লুপ, তাই সংযোজনকারী যথাযথভাবে স্বয়ংক্রিয়ভাবে ইনলাইন এবং আনলোল করতে সক্ষম হওয়া উচিত।

আমি খেলতে ঠাট বের করার চেষ্টা যে সুবিধা গ্রহণ করতে এড়াতে হবে রয়েছে অভিব্যক্তি ভিতরে। সম্ভবত এমন ছোট সমস্যা আকারের জন্য, এই কৌশলগুলি দুটি পৃথক নির্ধারক গণনা সম্পাদন করার চেয়ে ধীর হয়ে যায়। অবশ্যই, এই দাবিগুলি যাচাই করার একমাত্র উপায় হ'ল চেষ্টা করা।কিউ12IQJQ


1
আমি - বাস্তবায়ন করার সুপারিশকে দ্বিতীয় স্থানে রেখেছি , যার ফলে রুটমুক্ত চোলস্কি নেই, যেহেতু আর্মাদিলোর কাছে ইতিবাচক-সুনির্দিষ্টতা / তির্যক আধিপত্যের সুবিধা নেওয়ার কোনও উপায় নেই বলে মনে হয়। LDLT
হার্ডম্যাথ

5

এই ইতিবাচক সুনির্দিষ্ট বাস্তব প্রতিসাম্য ম্যাট্রিকগুলির নির্মাণ সম্পর্কে কোনও তথ্য ছাড়াই , দেওয়া পরামর্শগুলি প্রয়োজনীয়তার যথেষ্ট পরিমাণে সীমিত।12×12

আমি সোর্সফোজের কাছ থেকে আর্মাদিলো প্যাকেজটি ডাউনলোড করেছি এবং ডকুমেন্টেশনটি একবার দেখেছি। আলাদাভাবে কম্পিউটিং কর্মক্ষমতা উন্নত করার চেষ্টা করুন এবং , যেখানে সব বেশী পদে এক ম্যাট্রিক্স হয়, যেমন সেট করে । ডকুমেন্টেশন নোট করে যে এটি মাপ মাপের ম্যাট্রিক্সের জন্য ডিফল্ট , সুতরাং বাদ দিয়ে আমি ধরে নিই যে বিকল্পটি ক্ষেত্রে ডিফল্ট ।det ( 12 I - Q - J ) J 4 × 4 12 × 12det(Q)det(12IQJ)Jdet(Q,slow=false)4×4slow=true12×12

কি slow=true সম্ভবতঃ করে একটি সারিতে পর্যায় ফর্ম, যা থেকে নির্ধারক সহজে পাওয়া যায় পেয়ে আংশিক বা পূর্ণ অন্য pivoting হয়। তবে আপনি আগেই জানেন যে ম্যাট্রিক্স ইতিবাচক সুনির্দিষ্ট, সুতরাং স্থিরতার জন্য পাইভটিং অপ্রয়োজনীয় (কমপক্ষে আপনার গণনার বেশিরভাগ ক্ষেত্রে অনুমানযোগ্য) আর্মাদিলো প্যাকেজটি যদি পিভটগুলি অল্প বয়স্ক হয়ে যায় তবে এটি ব্যতিক্রম ছুঁড়ে ফেলেছে তা স্পষ্ট নয় তবে এটি হওয়া উচিত । বীজগণিত প্যাকেজ রৈখিক একটি যুক্তিসঙ্গত সংখ্যাসূচক বৈশিষ্ট্য সম্পাদনা করুন: আমি আরমাডিলো কোডটি কার্যকরী পাওয়া হেডার ফাইলে , সারগর্ভ কার্যকারিতার জন্য ব্যবহার সি ++ টেমপ্লেট সেটিং। প্রভাবিত বলে মনে হচ্ছে না কিভাবে12 × 12Qdetinclude\armadillo_bits\auxlib_meat.hppslow=false12×12নির্ধারকটি করা হবে কারণ গণনাটি "প্রাচীরের উপরে নিক্ষিপ্ত" হয়ে LAPACK (বা এটিএসএলএস) এর কাছে সেই সময়ে পাইভোটিংয়ের প্রয়োজন নেই এমন কোনও ইঙ্গিত ছাড়াই; det_lapackফাইলটিতে এর অনুরোধগুলি দেখুন এবং দেখুন ।

অন্য বিষয়টি হ'ল বিএমএলএস এবং ল্যাপ্যাকের উচ্চ গতির প্রতিস্থাপনের সাথে আর্মাদিলো প্যাকেজ যুক্ত করার তাদের পরামর্শের অনুসরণ করা, যদি আপনি সত্যিই সেগুলি ব্যবহার করেন; সেকেন্ড দেখুন। বিশদ বিবরণের জন্য আর্মাদিলো README.TXT ফাইলের 5 টি। [বর্তমান 64৪-বিট মেশিনগুলির গতির জন্য বিএলএলএস বা ল্যাপাকের উত্সর্গীকৃত -৪-বিট সংস্করণ ব্যবহারেরও সুপারিশ করা হয়েছে]]

একেলোন ফর্মের সারি হ্রাস মূলত গাউসিয়ান নির্মূল, এবং গাণিতিক জটিলতা রয়েছে । উভয় ম্যাট্রিকের জন্য এটি তখন কাজের দ্বিগুণ, বা । এই ক্রিয়াকলাপগুলি আপনার প্রসেসিংয়ে ভাল "বাধা" হতে পারে, তবে বিশেষ কাঠামো না থাকলে আশা করা যায় না423n3+O(n2)প্রশ্ন43n3+O(n2)Q (অথবা ট্রিলিয়ন পরীক্ষার বিষয় ক্রমশোধ যার ফলে মধ্যে কিছু পরিচিত সম্পর্ক) কাজ কমে যেতে পারে O(n2)

তুলনা, একটি জেনারেলের cofactors দ্বারা সম্প্রসারণ ম্যাট্রিক্স জড়িত এন ! গুণন ক্রিয়াকলাপ (এবং প্রায় সংখ্যার যোগ / বিয়োগ), সুতরাং এন = 12 এর জন্য তুলনা ( 12 ! = 479001600 বনাম 2)n×nn!n=1212!=479001600) পরিষ্কারভাবে কোফ্যাক্টরগুলিকে অপসারণের পক্ষে।23n3=1152

অন্য পদ্ধতির জন্য 4 প্রয়োজনকাজ হ্রাস হবেপ্রশ্নঃগৃহকর্তাকে রূপান্তরের, যা রাখে সঙ্গে tridiagonal ফর্মে12আমি-প্রশ্নঃtridiagonal ফর্ম মধ্যে। গণনাডিট(কিউ)এবংডিট(12আই-কিউ-) এরপরে(এন)অপারেশনগুলিতে করা যেতে পারে। [র‌্যাঙ্ক ওয়ান আপডেটের প্রভাব-জে43n3+O(n2)Q12IQdet(Q)det(12IQJ)O(n)J দ্বিতীয় নির্ধারকটিতে একটি ত্রিভুজাকৃতির সিস্টেম সমাধান করে প্রদত্ত একটি স্কেলার ফ্যাক্টর হিসাবে প্রকাশ করা যেতে পারে]]

এরকম একটি স্বাধীন গণনা কার্যকর করা কার্যকর হতে পারে হিসাবে সফল (বা ব্যর্থ) আর্মাদিলোর ফাংশনটিতে কল করার ফলাফলগুলি পরীক্ষা করা det

বিশেষ কেস: জের্নেজের একটি মন্তব্যের পরামর্শ অনুসারে, ধরুন যে যেখানে আগের মত জে , সকলের (রেঙ্ক 1) ম্যাট্রিক্স এবং ডি = ডায়াগ ( ডি 1 , , ডি এন ) একটি সংবেদনশীল (ধনাত্মক) ) তির্যক ম্যাট্রিক্স। প্রকৃতপক্ষে গ্রাফ তত্ত্বের প্রস্তাবিত প্রয়োগের জন্য এগুলি পূর্ণসংখ্যার ম্যাট্রিক হবে। তাহলে ডিট ( কিউ ) এর একটি সুস্পষ্ট সূত্রটি হ'ল:Q=DJJD=diag(d1,,dn)det(Q)

det(Q)=(i=1ndi)(1i=1ndi1)

এর প্রুফের স্কেচটি আরও প্রশস্ত প্রয়োগের চিত্রিত করার সুযোগ দেয়, অর্থাত্ যখনই একটি পরিচিত নির্ধারক থাকে এবং সিস্টেম ডি ভি = ( 1 1 ) টি দ্রুত সমাধান হয়ে যায়। ফ্যাক্টরিং দিয়ে শুরু করুন:DDv=(11)T

det(DJ)=det(D)det(ID1J)

এখন আবার র‌্যাঙ্ক 1, যথা ( ডি - 1 1ডি - 1 এন ) টি ( 1 1 ) । মনে রাখবেন যে দ্বিতীয় নির্ধারকটি হ'ল:D1J(d11dn1)T(11)

f(1)=det(ID1J)

f(x)D1Jf(x)n1xdi1

D1J(d11dn1)T=(di1)(d11dn1)T

f(x)=xn1(xdi1)f(1)det(ID1J)1di1

Q=DJ12IQJ=12ID+JJ=12ID


QDAAGG

QLDLT23n313n312IQJQ

@ জার্নেজ: যদি আপনি বিশ্বাস করেন যে আমি বলেছি কিছু ভুল, আমি এই প্রশ্নের উপর ভিত্তি করে একটি চ্যাট রুম তৈরি করেছি যেখানে এখানে অযথা মন্তব্য না করেই আলোচনার সূত্রপাত করা যেতে পারে।
হার্ডম্যাথ

1

আপনি যদি গ্রাফগুলি নির্ধারণের জন্য গণনা করতে চান তার একটি কাঠামোগত উপায় থাকলে সম্ভবত আপনি নিম্ন-স্তরের আপডেটগুলি খুঁজে পেতে পারেন যা আপনাকে একটি গ্রাফ থেকে অন্য গ্রাফে স্থানান্তর করে।

যদি তা হয় তবে আপনি বর্তমান গ্রাফের নির্ধারকটি সম্পর্কে আপনার জ্ঞানটি ব্যবহার করে পরবর্তী গ্রাফের নির্ধারককে স্বল্পতার সাথে গণনা করতে ম্যাট্রিক্স নির্ধারক লেমা ব্যবহার করতে পারেন ।

Au,v

det(A+uvT)=(1+vTA1u)det(A)
n×mAn×n
det(A+UVT)=det(Im+VTA1U)det(A)

(A+uvT)1=A1A1uvTA11+vTA1u

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.