天之鸟关于观星的python算法,大家自取
天之鸟关于观星的python算法,大家自取如下:
import copy
def solve_puzzle(graph, init_state):
n = len(init_state)
# 构建增广矩阵(布尔方程组)
matrix = []
for j in range(n):
row = graph[j].copy() # 系数矩阵
row.append(1 ^ init_state[j]) # 常数项:1 - 初始状态
matrix.append(row)
# 高斯消元解布尔方程组
click = [0] * n
for col in range(n):
# 寻找主元行
pivot = -1
for row in range(col, n):
if matrix[row][col] == 1:
pivot = row
break
if pivot == -1:
continue # 自由变量,可设为0
# 交换主元行到当前列
matrix[col], matrix[pivot] = matrix[pivot], matrix[col]
# 消去其他行的当前列
for row in range(n):
if row != col and matrix[row][col] == 1:
for c in range(col, n + 1):
matrix[row][c] ^= matrix[col][c]
# 回代求解
for i in range(n):
if matrix[i][i] == 1:
click[i] = matrix[i][n]
return click
graph = [
[1,1,0,0,0,0,0,1,1],#节点1
[1,1,1,0,0,0,0,0,0],#节点2
[0,1,1,1,0,0,1,0,0],#节点3
[0,0,1,1,1,0,0,0,1],#节点4
[0,0,0,1,1,1,1,0,0],#节点5
[0,0,0,0,1,1,1,1,1],#节点6
[0,0,1,0,1,1,1,1,0],#节点7
[1,0,0,0,0,1,1,1,1],#节点8
[1,0,0,1,0,1,0,1,1],#节点9
]
init_state = [0,0,1,0,0,0,0,1,0]#各节点亮灭
print(solve_puzzle(graph,init_state))
#输出结果中0不点击1点击
以上就是天之鸟关于观星的python算法,大家自取相关内容。