使用二进制作为类对象的唯一标识符

在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路径中的最后一个访问点,此时已经访问完了所有的点。

上一篇:$\mathscr{F}$类


下一篇:使用java实现持续移动的小球