使用python中的小序列生成有序序列(NP hard)

时间:2013-10-20 12:57:07

标签: python python-2.7 sequences np

我有问题。我认为这是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的值可以确定为seq中所有3长度序列的总和。

来自seq的所有3长度序列都可以通过从seq获取任何3个事件而不改变其顺序来找到。它们的一些例子;

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上实现的算法或方法,我将不胜感激。

谢谢,

0 个答案:

没有答案