3

如何編寫Python代碼來檢查Cayley表定義的集合{0,1,...,n-1}上的操作*是否是關聯的。羣論和Python

我嘗試代碼:

def is_associative_cayley_table(table): 
    if not is_cayley_table(table): 
     return False 

    for i in range (0,len(table)): 
     for j in range (0,len(table)): 
      for k in range (0,len(table)): 
       if (table[table[i][j])][k])==(table[i][(table[j][k])]): 
        print("Okay") 
       else 
        return False 

回答

1

,而不是打印"Okay"n^3時代,你可能只是想要回bool

def is_associative_cayley_table(table): 
    if not is_cayley_table(table): 
     return False 

    for i in range (0,len(table)): 
     for j in range (0,len(table)): 
      for k in range (0,len(table)): 
       if (table[table[i][j])][k])!=(table[i][(table[j][k])]): 
        return False 
    return true 

此外,還沒有算法來檢查集的關聯性。
你必須使用蠻力。

您可以做的最好的方法是使用Light's Associativity Test,這不會改善O(n^3)的最壞情況運行時間。它在某些情況下簡化了任務。