ホームページ > バックエンド開発 > Python チュートリアル > Python ジェネレーターはどのようにして整数分割問題をエレガントに解決できるのでしょうか?

Python ジェネレーターはどのようにして整数分割問題をエレガントに解決できるのでしょうか?

DDD
リリース: 2024-11-08 00:22:02
オリジナル
427 人が閲覧しました

How Can Python Generators Solve the Integer Partitioning Problem Elegantly?

整数分割に対するエレガントな Python ソリューション

整数の分割とは、正の整数を一意の正の整数の合計に分割することを指します。 Python のエレガントなソリューションの 1 つは、ジェネレーター関数を利用して、指定された整数 n の可能なすべての分割を効率的に生成します。

Python の ActiveState から提供されるソリューションは、再帰を採用しています。

<code class="python">def partitions(n, I=1):
    yield (n,)
    for i in range(I, n//2 + 1):
        for p in partitions(n-i, i):
            yield (i,) + p</code>
ログイン後にコピー

このジェネレーターは、すべてのパーティションが最大部分の降順に並べられるため、パーティションが小さいほど高速になります。時間比較テストで実証されているように、そのランタイムは他のアプローチよりも優れています。

このソリューションは、accel_asc のようなより最適化されたアルゴリズムと比較して、より多くのメモリを必要とします。それにもかかわらず、そのシンプルさと読みやすさにより、整数分割の問題を解決するための貴重なツールとなっています。

以上がPython ジェネレーターはどのようにして整数分割問題をエレガントに解決できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート