मेरे पास मैट्रिक्स गुणन समस्या का निम्न समाधान है।
matMul ([X] ओएस (0, एक्स))। मैटुल (एल, ओ (ए, एम (ए, डी (डी 1, डी 2))): - संलग्न ([एल 1 | एल 1 एस], [एल 2 | एल 2 एस], एल), मैटूल ([एल 1 | एल 1 एस], ओएस ए 1, एम (_, डी (डी 1, सी 1))), मैटूल ([एल 2 | एल 2 एस], ओएस (ए 2, एम (_, डी (डी, डी 2))), ए ए 1 + ए 2 + (डी 1 * सी 1 * डी 2)
यह प्रोग्राम मुझे सभी संभावित समाधान देता है
? - मैटूल ([एम (ए, डी (5,4)), एम (ए, डी (4,6)), एम (ए, डी (6,2)) , एम (ए, डी (2,7)), ए)। ए = ओएस (392, मी (ए, डी (5, 7))); ए = ओएस (244, मी (ए, डी (5, 7))); ए = ओएस (414, मी (ए, डी (5, 7))); ** ए = ओएस (158, मी (ए, डी (5, 7)); ** ए = ओएस (250, एम (ए, डी (5, 7))); असत्य।
जैसा कि हम देख सकते हैं, उनमें से एक इष्टतम है मैं क्या करना चाहूंगा, यह एक ही इष्टतम समाधान को पाने के लिए एक को संशोधित करता है।
अगर कोई इसे प्राप्त करने के लिए कोई भी संकेतक / सुझाव दे सकता है, तो यह वास्तव में मददगार होगा।
धन्यवाद।
ऐसा करने का त्वरित तरीका फिर इसे क्वेरी करें : setof / 3 क्योंकि यह आरोही क्रम में है:
इष्टतम_सोल्यूशन (मैट्रिक्स, ए): - सेटफ (ओएस (एक्स, एम), मैटूल (मैट्रिक्स, ओएस (एक्स, एम)), एस) , एस = [ए | _] % पहला तत्व चुनें, जिसमें सबसे कम एक्स
setof / 3
का उपयोग करते समय किया जाएगा। | ? - इष्टतम_सोल्यूशन ([एम (ए, डी (5,4)), एम (ए, डी (4,6)), एम (ए, डी (6,2)), एम (ए, डी (2,7 ))], ए)। ए = ओएस (158, मी (ए, डी (5,7))) हाँ
No comments:
Post a Comment