1
可能なすべてのNを生成する必要があります.Kビットが設定されているK個のNビットの番号を選択します。私が思い付くことができた 最良かつ最も簡潔なオプションが非常に遅いです:Python 3.xでビット並べ替えを生成する最速の方法
def kbits(n, k):
result = set()
for bits in itertools.combinations(range(n), k):
s = 0
for bit in bits:
s |= 1 << bit
result.add(s)
return result
kbits(25, 12)
私のマシン上で8.3sを取りました。
どうすれば速くすることができますか?たとえば、すべてのビットを一括して設定する方法がありますが、すべてをループすることはできません。
:
はここに速く私のマシンで3倍程度もあるずっと短いソリューション、ですか?どのようなパフォーマンス要件がありますか? – jonrsharpe
よく、それはDPを使って旅行セールスマンの問題を解決するのです。私はすべての2 **(n-1)個の都市のサブセットを生成し、それらをループします。実際には、できるだけ速くすることとは別に、私に課せられたパフォーマンス要件はありません:) –