从nestedList中,我必须将此列表分组到尽可能少的组中,组中的所有列表彼此之间没有交叉。然后组也不应该有交集,这意味着嵌套列表中的每个列表在所有组中只出现一次。 e、 g
[[1,2,3],[4,5,7],[52,12,1],[91239,21,1],[3,5,6],[6,8,10]]
[1,2,3],[4,5,7],[6,8,10]
[52,12,1],[3,5,6]
[91239,21,1]
此外,应使用字典为组标记数字。使用1-10,我必须使用尽可能少的数字,所以如果我调用groupings键的值在大多数时候应该相等{[1,2,3]:'1',[4,5,7]:'1',[6,8,10]:'1', [52,12,1]:'2',[3,5,6]:'2', [91239,21,1]:'3'}
我现在正在做一个更大的列表,到目前为止,我已经得出了以下结论:
def disjoint(a, b):
for i in a:
if i in b:
return False
return True
numberassignments = ['1','2','3','4','5','6','7','8','9','10']
groupings = {}
for i in numberassignments:
for j in range(len(list)):
if list[j] not in groupings:
groupings[list[j]] = i
for k in range(list):
if disjoint(list[j], list[k]) and list[k] not in groupings:
grouped = [l for l in groupings if groupings[l] == i]
if all(disjoint(m, list[k]) for m in grouped):
groupings[list[k]] = i
到目前为止,我的代码能够在没有交集的情况下对列表进行分组,我的问题是,我不知道是否对列表进行了尽可能少的分组,甚至不知道如何编码以优化组的数量。我问过的人告诉我这应该和图论有关,我完全不知道(我确实理解顶点是列表,边是它们的交点,但是我用这些知识怎么办?)。 禁忌:没有图书馆
目前没有回答
相关问题 更多 >
编程相关推荐