在TSP问题中,通过二进制位运算的方式,
判断某个访问点是否被访问过,
或者判断此时是否已经完成了所有访问点的访问。
class Node{
int id; // 编号
long mark; // 标识号
int x; // x坐标
int y; // y坐标
}
Node nodes[] = new Node(6);
其中 mark 属性即为,二进制属性,用于访问标识符。
(1)假设一共有六个点,id属性 和 mark属性 如下所示
id | mark | 二进制 mark |
0 | 0 | 0000 0000 0000 |
1 | 1 | 0000 0000 0001 |
2 | 2 | 0000 0000 0010 |
3 | 4 | 0000 0000 0100 |
4 | 8 | 0000 0000 1000 |
5 | 16 | 0000 0001 0000 |
(2)访问完 点1 后访问 点2
node[2].mark = nodes[1].mark | node[2].mark
此时 node[2] 的mark属性为,0000 0000 0011
(3)当访问完某点后,此点的 mark 属性变为 0000 0001 1111
说明此点是TSP路径中的最后一个访问点,此时已经访问完了所有的点。