長さ N の python のリストがあり、そこから K 個の要素のペアを選択したいのですが、ペア内の要素の繰り返しは許可されておらず、(x,y) == (y,x)
(順序は区別されません)。可能な N の選択 2 ペアがあり、K は常に N よりもかなり小さいです。リストから最も「多様な」代表的なペアのセットを選択するための適切な決定論的 (サンプリングなし) の方法は何ですか? (1) のセットリストからのアイテムの最大数が表されているペア (および特定の要素に偏りがない)、(2) ペアのリストがリストの最初または最後に偏っていない場所?
例:
l = [1,2,3,4,5]
5 選択 2 = 10 通りの組み合わせが可能です。2 つのペア (K = 2) を求める場合、ほぼすべての要素がリストに表示され、要素の繰り返しがないため、適切なペアのセットになります。K = 2 のペア[(1,2),(3,4)]
の悪い[(1,2),(1,3)]
セットは次のようになります: 1 要素を再利用しており、明らかにリストの先頭に偏っているためです。この場合、K が > 2 の場合、要素を繰り返す必要がありますが、これは避けられませんが、代表的/多様な wrt リストでこれを行う方法を見つけたいと考えています。
私は効率的でシンプルなヒューリスティックを探しているだけで、完璧である必要はありません。何か案は?
これには numpy/scipy を使用できます。