Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में करेंसी आर्बिट्रेज ज्ञात करने का प्रोग्राम


मान लीजिए हमारे पास करेंसी एक्सचेंज दरों का N x N टेबल है। हमें जांचना है कि क्या ट्रेड का कोई अनुक्रम मौजूद है जिससे किसी करेंसी की कुछ राशि A से शुरू करके उसी करेंसी की अधिक राशि प्राप्त की जा सके। कोई लेनदेन लागत नहीं है और हम आंशिक मात्राओं में भी ट्रेड कर सकते हैं।

उदाहरण के लिए, दिए गए मैट्रिक्स के लिए आउटपुट True होगा (आर्बिट्रेज मौजूद है)।

एल्गोरिदम (बेलमैन-फोर्ड / फ्लॉयड-वार्शल लॉग ट्रांसफॉर्म के साथ)

  • प्रत्येक विनिमय दर matrix[i][j] को -log2(matrix[i][j]) में बदलें
  • फ्लॉयड-वार्शल एल्गोरिदम चलाएं: matrix[i][j] = min(matrix[i][j], matrix[i][k]+matrix[k][j])
  • यदि विकर्ण पर कोई matrix[i][i] < 0 है, तो True वापस करें (नकारात्मक चक्र = आर्बिट्रेज)

उदाहरण

import math
class Solution:
    def solve(self, matrix):
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                matrix[i][j] = -math.log(matrix[i][j], 2)
        v = len(matrix)
        for k in range(v):
            for i in range(v):
                for j in range(v):
                    matrix[i][j] = min(matrix[i][j], matrix[i][k] + matrix[k][j])
        return any(matrix[i][i] < 0 for i in range(len(matrix)))

ob = Solution()
matrix = [[1, 1.28, 0.82], [0.78, 1, 0.65], [1.21, 1.55, 1]]
print(ob.solve(matrix))

इनपुट

[[1, 1.28, 0.82], [0.78, 1, 0.65], [1.21, 1.55, 1]]

आउटपुट

True
  1. पायथन में दिए गए ग्राफ में विशेष प्रकार के उपग्राफ ज्ञात करने का प्रोग्राम पायथन में दिए गए ग्राफ में विशेष प्रकार के उपग्राफ ज्ञात करने का प्रोग्राम

    मान लीजिए हमारे पास एक विशेष प्रकार का ग्राफ है जिसमें दो प्रकार के शीर्ष हैं जिन्हें हेड और फीट कहा जाता है। ग्राफ में केवल एक हेड होता है और k किनारे होते हैं जो हेड को प्रत्येक फीट से जोड़ते हैं। इसलिए, यदि हमें एक अनिर्देशित, अनभारित ग्राफ दिया जाता है; तो हमें ग्राफ के शीर्ष-असंयुक्त उपग्राफ म

  1. पायथन में प्रिम के एल्गोरिथम का उपयोग करके MST ज्ञात करने का प्रोग्राम पायथन में प्रिम के एल्गोरिथम का उपयोग करके MST ज्ञात करने का प्रोग्राम

    मान लीजिए हमें एक ग्राफ दिया गया है और हमें उस ग्राफ से न्यूनतम स्पैनिंग ट्री (MST) ढूंढना है। एक ग्राफ का MST एक भारित ग्राफ का उपसमुच्चय है जहां सभी शीर्ष मौजूद और जुड़े हुए हैं, और उपसमुच्चय में कोई चक्र मौजूद नहीं है। MST को न्यूनतम इसलिए कहा जाता है क्योंकि MST का कुल किनारा भार ग्राफ से न्यून

  1. पायथन में जांचें कि ग्राफ सभी द्वारा पारगम्य है या नहीं पायथन में जांचें कि ग्राफ सभी द्वारा पारगम्य है या नहीं

    मान लीजिए, हमें एक ग्राफ दिया गया है जिसमें n शीर्ष हैं जो 0 से n-1 तक क्रमांकित हैं। ग्राफ अनिर्देशित है और प्रत्येक किनारे का एक भार है। ग्राफ में तीन प्रकार के भार हो सकते हैं और प्रत्येक भार एक विशेष कार्य को दर्शाता है। दो लोग हैं जो ग्राफ को पार कर सकते हैं, अर्थात् जैक और केसी। जैक ग्राफ को