अनुक्रम की एन्ट्रॉपी की गणना करने के लिए नीचे का उपयोग किया जाता है। क्या फ़ंक्शन को समानांतर करना संभव है?

def get_lempel_ziv_entropy(message: str) -> float:
         i, lib = 1, [message[0]]
        while i < len(message):
           for j in range(i, len(message)):
             message_ = message[i:j + 1]
             if message_ not in lib:
                lib.append(message_)
                break
        i = j + 1
     return len(lib) / len(message)
0
Harkishan Singh 12 अप्रैल 2020, 10:16

1 उत्तर

सबसे बढ़िया उत्तर

मुझे नहीं लगता कि इस फ़ंक्शन को समानांतर करना व्यावहारिक है।

बाहरी लूप को समानांतर नहीं किया जा सकता क्योंकि प्रत्येक पुनरावृत्ति पिछले पुनरावृत्ति द्वारा तैयार किए गए lib के मान पर निर्भर करती है।

इनर लूप समानांतर किया जा सकता है, लेकिन ओवरहेड्स संभावित स्पीडअप से अधिक होने की संभावना है। (थ्रेड शुरू करना और जुड़ना मुफ्त में नहीं आता है, और सभी थ्रेड्स एक म्यूटेबल डिक्शनरी तक पहुंच के लिए संघर्ष कर रहे हैं।)

0
Stephen C 12 अप्रैल 2020, 10:48