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

पायथन में मुद्रा आर्बिट्रेज का पता लगाने का कार्यक्रम

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

पायथन में मुद्रा आर्बिट्रेज का पता लगाने का कार्यक्रम

इस मैट्रिक्स में प्रविष्टि [I, j] का मान मुद्रा की मात्रा का प्रतिनिधित्व करता है जिसे हम मुद्रा की एक इकाई i के साथ खरीद सकते हैं। अब मान लें कि मुद्रा 0 USD है, 1 CAD है और 2 EUR है। हम निम्नलिखित के साथ मध्यस्थता कर सकते हैं -

  • 1 CAD को 0.65 EUR में बेचें

  • 0.7865 USD (0.65 * 1.21)

    . के लिए 0.65 EUR बेचें
  • 1.00672 CAD (0.65 * 1.21 * 1.28) पर 0.7865 USD बेचें

तो, अगर इनपुट पसंद है

1 1.28 0.82
0.78 1 0.65
1.21 1.55 1

तो आउटपुट ट्रू होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • मैं के लिए 0 से लेकर आव्यूह के आकार तक के लिए, करें

    • j के लिए 0 से लेकर मैट्रिक्स के आकार तक[0], करें

      • मैट्रिक्स [आई, जे]:=- (मैट्रिक्स [आई, जे]) का आधार 2 मान लॉग करें

  • v :=मैट्रिक्स की पंक्ति गणना

  • k के लिए 0 से v की सीमा में, करें

    • मैं के लिए 0 से वी की सीमा में, करते हैं

      • j के लिए 0 से v की सीमा में, करें

        • मैट्रिक्स [आई, जे]:=न्यूनतम मैट्रिक्स [आई, जे] और (मैट्रिक्स [आई, के] + मैट्रिक्स [के, जे])

  • यदि मैट्रिक्स के विकर्ण में कोई भी आइटम गैर-शून्य है, तो सही है।

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

पायथन

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(0, v):
      for i in range(0, v):
         for j in range(0, 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))

इनपुट

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

आउटपुट

True

  1. पायथन में दिए गए ग्राफ में विशेष प्रकार के सबग्राफ खोजने का कार्यक्रम

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

  1. पायथन में प्राइम एल्गोरिथ्म का उपयोग करके एमएसटी का पता लगाने का कार्यक्रम

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

  1. यह पता लगाने के लिए कार्यक्रम कि क्या पायथन में सभी के द्वारा ग्राफ़ को ट्रैवर्स किया जा सकता है

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