ホームページ  >  記事  >  バックエンド開発  >  ハッシュ化不可能なオブジェクトの順序なしリストを効率的に比較するにはどうすればよいですか?

ハッシュ化不可能なオブジェクトの順序なしリストを効率的に比較するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-15 02:38:02957ブラウズ

How to Efficiently Compare Unordered Lists of Non-Hashable Objects?

非ハッシュ化オブジェクトの順序なしリストの効率的な比較

順序なしリスト (セットではない) は、それらが等しいかどうかを比較するときに課題を引き起こします。要素は任意の順序で指定できます。この困難は、ユーザー定義クラスのインスタンスなど、ハッシュ不可能なオブジェクトを扱う場合にさらに顕著になります。

このような比較を容易にするために、時間計算量を変えたさまざまなアプローチが存在します。

O(n)

ハッシュ可能なオブジェクトの場合、カウンター

def compare(s, t):
    return Counter(s) == Counter(t)

O(n log n)

オブジェクトが順序付け可能な場合、sorted は適切な代替案を提供します。

def compare(s, t):
    return sorted(s) == sorted(t)

O(n * n)

ハッシュ可能性も順序付け可能性も利用できない場合は、等価性を使用した単純なアプローチを採用できます。

def compare(s, t):
    t = list(t)   # make a mutable copy
    try:
        for elem in s:
            t.remove(elem)
    except ValueError:
        return False
    return not t

オブジェクトの性質に基づいて適切なソリューションを選択することで、要素がハッシュ可能または順序付け可能でない場合でも、順序なしリストを効率的に比較できます。

以上がハッシュ化不可能なオブジェクトの順序なしリストを効率的に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。