我需要在python中生成地图着色问题的随机实例来实现最小冲突求解器。我应该遵循这个策略:在单位正方形上散布n个点;随机选择一个点X,用线段将X连接到最近的点Y,使得X尚未连接到Y,并且该段不与其他段交叉(例如,参见这里如何测试段 - 段交叉);重复上一步,直到无法再进行连接。这些点代表地图上的区域,线条连接邻居。 我甚至不知道如何开始。
答案 0 :(得分:0)
有些东西要你开始,拿这个课:
class Node:
def __init__(self, x, y):
self.x = x
self.y = y
self.neighbours = set()
def is_neighbour(node: Node):
return node in self.neighbours
def connect(node: Node):
self.neighbours.add(node)
node.neighbours.add(self)
def distance(node: Node):
return ((self.x - node.x)**2 + (self.y - node.y)**2)**0.5
最困难的部分是检测您尝试制作的点之间的连接是否与另一个连接交叉,但我会留给您。