1

我有个问题。我认为这是一个 NP 难题,但我不确定。首先,让我描述一下空间;

假设我有这些事件a,b,c,d,e,f,请考虑从这些事件生成的 3 长度有序序列的所有可能性。喜欢,

list1: ['a','b','c']
list2: ['a','b','d']
list3: ['a','b','e']
....
....
list120: ....

顺序对序列很重要,因此总共将有 120 个 3 长度序列(6 个事件的排列)。此外,所有这些 3 长度的序列都将是 0 到 1 之间的值。

现在考虑一个 6 长度的序列。

seq = ['a','b','c','d','e','f']

的值seq可以确定为对 中的所有 3 长度序列求和seq

seq可以通过从任意 3 个事件中找到所有 3 长度序列,seq而无需更改其顺序。其中的一些例子;

seq1: ['a','b','c']
seq2: ['a','b','d']
seq3: ['a','b','e']
seq4: ['a','b','f']
....
....
seq20: ['d','e','f']

问题是;

我需要在所有可能的 6 长度序列中找到一个具有最小(或最大)值的 6 长度序列。您可以猜到,这只是一个简单的示例。我需要在有 20-100 个事件的最大空间上工作。因此,生成所有 6 长度序列空间不是解决方案。

我知道很难找到最小(或最大),因此找到一个值接近最小(或最大)的序列也是可以接受的。如果您能建议我可以在 Python 上实现的算法或方法,我将不胜感激。

谢谢,

4

0 回答 0