我希望通过使用某些特定格式的事件来生成一个空间。让我在一个小例子中解释一下问题。
假设我有事件a、b、c、d、e、f。我将输入这些事件中的3个长度序列。从这些序列中,我想生成6个长度(事件数)的序列,并且序列中不会重复元素,即每个事件恰好使用一次。6个长度的序列需要满足一些规则。(在示例中解释)
例如:
假设我有事件a、b、c、d、e、f。我将输入这些事件中的3个长度序列。从这些序列中,我想生成6个长度(事件数)的序列,并且序列中不会重复元素,即每个事件恰好使用一次。6个长度的序列需要满足一些规则。(在示例中解释)
例如:
Input:
list1:['a','b','c']
list2:['c','d','e']
list3:['b','c','d']
list4:['a','c','g']
list5:['f','g','e']
List1描述了在长度为6的序列中b和c将在a之后出现,c将在b之后出现。同样,List2描述了在c之后d和e将出现,e将在d之后出现。所有的列表都会被收集并记录规则。从这些序列中提取所有的规则后,我需要生成一个符合规则的长度为6的序列。例如:
假设在我们的情况下(为简单起见),输入为List1、List2和List3。
Input:
list1:['a','b','c']
list2:['c','d','e']
list3:['b','c','d']
接下来是这些列表的一些结果:
['a','b','c','d','e']
: 它遵循从这3个列表中提取的所有规则,比如b和c在a之后,d和e在c之后,c和d在b之后。重要提示,请注意,如果c需要在a之后出现,它们不需要在输出序列(长度为6)中相邻。
并不能保证总会存在长度为6的序列。首先,需要检查是否至少有一个这样的序列。如果没有,则算法应返回false。例如,假设我们的输入是Lis1、Lis2、Lis3、Lis4和Lis5。
Input:
list1:['a','b','c']
list2:['c','d','e']
list3:['b','c','d']
list4:['a','c','g']
list5:['e','g','b']
a => b => c => g => b 不可能出现,因为b不能跟随自己。
我需要一个用Python生成这些序列的算法。目前我还没有任何代码,因为我尚未想到有效的算法。它需要非常高效地找到更长的序列。
如果问题不清楚,请让我知道。
谢谢