मैट्रिक्स मानक पुनरावृत्ति दृष्टिकोण का उपयोग कर गुणन हे है (एन), तुम पर एन पंक्तियों और एन कॉलम पुनरावृति करना होगा, और प्रत्येक तत्व के लिए पंक्तियों में से एक और स्तंभों में से एक का एक वेक्टर गुणा करते हैं, क्योंकि , जो एन गुणा और एन -1 जोड़ों लेता है। समस्या के रूप में विनिर्दिष्ट
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
int sum = 0;
for(m = 0; m < n; m++)
{
sum += a[i][m] * b[m][j];
}
c[i][j] = sum;
}
}
एक बूलियन मैट्रिक्स के लिए, और गुणा के जगह में और या के स्थान पर प्रयोग किया जाता है:
छद्म कोड मैट्रिक्स ग में मैट्रिक्स ख और दुकान से मैट्रिक्स एक गुणा करने के लिए इसके अलावा, तो यह हो जाता है इस:
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
boolean value = false;
for(m = 0; m < n; m++)
{
value ||= a[i][m] && b[m][j];
if(value)
break; // early out
}
c[i][j] = value;
}
}
यहाँ सूचना के लिए बात यह है कि एक बार हमारे बूलियन "राशि" सच है, हम गणना और जल्दी अंतरतम लूप से बाहर बंद कर सकते हैं, क्योंकि ट्रू साथ बाद में किसी भी मूल्यों oring है ई सच साबित करने जा रहा है, इसलिए हम तुरंत जान सकते हैं कि अंतिम परिणाम सच होगा।
किसी भी स्थिर k
के लिए, हम इसे जल्दी से करने से पहले संचालन की संख्या (मूल्यों को यादृच्छिक मानते हैं) के पर निर्भर होने जा रहा है और एन के साथ नहीं बढ़ेगा। प्रत्येक पुनरावृत्ति पर एक (1/के) मौका होगा कि लूप समाप्त हो जाएगा, क्योंकि इसके लिए हमें दो 1s की आवश्यकता है और प्रत्येक प्रविष्टि 1 का 1 होने का मौका है। समाप्ति से पहले पुनरावृत्तियों की संख्या Geometric distribution का पालन करेगी जहां पी है (1/के) , और "सफलता" (लूप से बाहर तोड़ने से पहले) "परीक्षण" (पुनरावृत्तियों) की अपेक्षित संख्या एन पर निर्भर नहीं है (परीक्षणों की संख्या के लिए ऊपरी बाउंड को छोड़कर) ताकि आंतरिकतम लूप एक दिए गए के लिए स्थिर समय (औसत पर) में चलता है, समग्र एल्गोरिदम ओ (एन) बनाते हैं। ज्यामितीय वितरण सूत्र आपको कुछ अंतर्दृष्टि देना चाहिए कि क्या होता है यदि k = n। ध्यान दें कि विकिपीडिया के सूत्र में दिए गए सूत्र में परीक्षणों की संख्या है।
जब के बड़ा होता है, तो आप लगभग कभी भी बाहर नहीं निकलेंगे और आपका एल्गोरिदम ओ (एन^3) होगा। –
@ अज्ञात बिग ओ नोटेशन * सीमित * कार्य के व्यवहार को परिभाषित करता है। इससे कोई फर्क नहीं पड़ता कि कितना बड़ा के है, क्योंकि एन अनंतता की तरफ जाता है क्योंकि निष्पादन समय किसी दिए गए के लिए ओ (एन^2) की ओर जाता है। – samgak
आप सही हैं ... प्रश्न उलझन में है क्योंकि यह लगातार के बारे में बात करता है और के = एन। –