サブセットのいくつかの選択については、いくつかの(潜在的に高価な)事前計算を行うことを気にしないのであれば、計算を高速化する方法がありますが、すべてではありません。たとえば、サブセットが{1,2}、{2,3}、{3,4}、{4,5}、...、{n-1、n}、{n、1}であるとします。その場合、単純なアプローチではサブセットごとに1つの算術演算が使用され、明らかにそれ以上のことはできません。一方、サブセットが{1}、{1,2}、{1,2,3}、{1,2,3,4}、...、{1,2、...、 n}の場合、n-1の算術演算でうまくいくことができますが、単純なアプローチははるかに悪いです。
事前計算を行う1つの方法があります。常に最適な結果が得られるとは限りません。サブセットの各ペアについて、遷移コストを最小(対称差のサイズ、Y-1のサイズ)と定義します。(XとYの対称差は、XまたはYにあるもののセットですが、両方にはありません。)したがって、遷移コストは、Yの要素の合計を計算するために必要な算術演算の数です。 Xの。空のセットをサブセットのリストに追加し、Edmondsのアルゴリズム(http://en.wikipedia.org/wiki/Edmonds%27_algorithm)またはより高速でより複雑なバリエーションの1つを使用して、最小コストの有向スパニングツリーを計算します。そのテーマ。ここで、スパニングツリーのエッジがX-> Yの場合、Yの前にXを計算するようにしてください(これは「トポロジカルソート」であり、効率的に実行できます。
これにより、たとえば{1,2}、{3,4}、{1,2,3,4}、{5,6}、{7,8}、{5,6の場合、明らかに次善の結果が得られます。 、7,8}。上記の手順を使用して操作の順序を決定した後、最適化パスを実行して、すでに計算された合計を前提として各セットの合計を評価する安価な方法を見つけることができます。これにより、実際にはかなり適切な結果が得られる可能性があります。
サブセットの特定のセットに対して最適な手順を見つけることは、NP困難またはそれよりも悪いことだと思いますが、証明しようとはしていません。(確かに計算可能です。実行できる計算のセットは有限です。しかし、一見すると、非常にコストがかかる可能性があります。潜在的に、約2 ^ nの部分和を追跡し、いずれか1つを追加する可能性があります。 (2 ^ 2n)^(n ^ 2)= 2 ^(2n ^ 3)の操作であらゆる可能性を試すという非常に単純なコストで、各ステップでそれらを他のステップに追加し、最大で約n^2ステップにします。 )。