双拼显然:
| 编号 | 序列顺序 | 累计次数 |
|---|---|---|
| 1 | 4 | |
| 2 | 6 | |
| 3 | 9 | |
| 4 | 10 |
三拼的判断方式是:回溯法生成所有可能的序列,在每一步选择新操作(某人上车或下车)时,判断车上是否还有人。
| 编号 | 序列顺序 | 累计次数 |
|---|---|---|
| 1 | 6 | |
| 2 | 8 | |
| 3 | 10 | |
| 4 | 11 | |
| 5 | 12 | |
| 6 | 12 | |
| 7 | 14 | |
| 8 | 14 | |
| 9 | 16 | |
| 10 | 16 | |
| 11 | 18 | |
| 12 | 18 | |
| 13 | 19 | |
| 14 | 20 | |
| 15 | 21 | |
| 16 | 21 | |
| 17 | 21 | |
| 18 | 21 | |
| 19 | 21 | |
| 20 | 21 | |
| 21 | 24 | |
| 22 | 25 | |
| 23 | 26 | |
| 24 | 27 | |
| 25 | 28 | |
| 26 | 28 | |
| 27 | 28 | |
| 28 | 28 | |
| 29 | 28 | |
| 30 | 28 | |
| 31 | 29 | |
| 32 | 29 | |
| 33 | 29 | |
| 34 | 29 | |
| 35 | 29 | |
| 36 | 29 | |
| 37 | 29 | |
| 38 | 29 | |
| 39 | 29 | |
| 40 | 29 | |
| 41 | 30 | |
| 42 | 30 | |
| 43 | 30 | |
| 44 | 30 | |
| 45 | 30 | |
| 46 | 30 | |
| 47 | 30 | |
| 48 | 30 | |
| 49 | 30 | |
| 50 | 30 | |
| 51 | 30 | |
| 52 | 30 | |
| 53 | 30 | |
| 54 | 30 | |
| 55 | 30 | |
| 56 | 30 | |
| 57 | 30 | |
| 58 | 30 | |
| 59 | 30 | |
| 60 | 30 |
| 编号 | 场景 | 序列顺序 |
|
计算次数 |
|---|---|---|---|---|
| 1 | 双拼 | 16238.69 | 10 | |
| 2 | 双拼 | 22143.40 | 10 | |
| 3 | 双拼 | 23042.19 | 10 | |
| 4 | 双拼 | 10417.09 | 10 | |
| 5 | 双拼 | 16918.74 | 10 | |
| 6 | 三拼 | 13903.36 | 30 | |
| 7 | 三拼 | 13350.40 | 30 | |
| 8 | 三拼 | 19324.21 | 29 | |
| 9 | 三拼 | 15757.84 | 30 | |
| 10 | 三拼 | 33871.15 | 23 |
根据球面方向角计算候选路径的所有三点间夹角,然后分别计算其最小值和平均值,加起来作为指标。对所有候选路径的指标做排序,取前k大的再做枚举。
| 编号 | 场景 | 序列顺序 |
|
计算次数 | 与$S^*$比值 |
|---|---|---|---|---|---|
| 1 | 双拼 | 16238.69 | 4 | 100.00% | |
| 2 | 双拼 | 22143.40 | 4 | 100.00% | |
| 3 | 双拼 | 23042.19 | 4 | 100.00% | |
| 4 | 双拼 | 10417.09 | 4 | 100.00% | |
| 5 | 双拼 | 16918.74 | 4 | 100.00% | |
| 6 | 三拼 | 13903.36 | 21 | 100.00% | |
| 7 | 三拼 | 13350.40 | 16 | 100.00% | |
| 8 | 三拼 | 19324.21 | 11 | 100.00% | |
| 9 | 三拼 | 16046.75 | 18 | 101.83% | |
| 10 | 三拼 | 33871.15 | 15 | 100.00% | |
| :----: | :----: | :---------: | :--------: | :--------: | :--------: |
| 1 | 双拼 | 16238.69 | 4 | 100.00% | |
| 2 | 双拼 | 22143.40 | 4 | 100.00% | |
| 3 | 双拼 | 23042.19 | 4 | 100.00% | |
| 4 | 双拼 | 10417.09 | 4 | 100.00% | |
| 5 | 双拼 | 16918.74 | 4 | 100.00% | |
| 6 | 三拼 | 13903.36 | 6 | 100.00% | |
| 7 | 三拼 | 14264.10 | 6 | 106.84% | |
| 8 | 三拼 | 19324.21 | 5 | 100.00% | |
| 9 | 三拼 | 16301.20 | 6 | 103.45% | |
| 10 | 三拼 | 34100.83 | 6 | 100.68% |
根据球面距离计算候选路径的所有两点间距离,然后加起来作为指标。对所有候选路径的指标做排序,取前k小的再做枚举。
| 编号 | 场景 | 序列顺序 |
|
计算次数 | 与$S^*$比值 |
|---|---|---|---|---|---|
| 1 | 双拼 | 16238.69 | 4 | 100.00% | |
| 2 | 双拼 | 22143.40 | 4 | 100.00% | |
| 3 | 双拼 | 23042.19 | 4 | 100.00% | |
| 4 | 双拼 | 10417.09 | 4 | 100.00% | |
| 5 | 双拼 | 16918.74 | 4 | 100.00% | |
| 6 | 三拼 | 13903.36 | 12 | 100.00% | |
| 7 | 三拼 | 13350.40 | 11 | 100.00% | |
| 8 | 三拼 | 19324.21 | 10 | 100.00% | |
| 9 | 三拼 | 16046.75 | 13 | 101.83% | |
| 10 | 三拼 | 33871.15 | 9 | 100.00% | |
| :----: | :----: | :---------: | :--------: | :--------: | :--------: |
| 1 | 双拼 | 16238.69 | 4 | 100.00% | |
| 2 | 双拼 | 22143.40 | 4 | 100.00% | |
| 3 | 双拼 | 23042.19 | 4 | 100.00% | |
| 4 | 双拼 | 10417.09 | 4 | 100.00% | |
| 5 | 双拼 | 16918.74 | 4 | 100.00% | |
| 6 | 三拼 | 13903.36 | 6 | 100.00% | |
| 7 | 三拼 | 14264.10 | 6 | 106.84% | |
| 8 | 三拼 | 19324.21 | 5 | 100.00% | |
| 9 | 三拼 | 16301.20 | 6 | 103.45% | |
| 10 | 三拼 | 34100.83 | 6 | 100.68% |
- Step 1: 枚举所有情况 对于每种序列,DFS计算所有候选点的选择,三拼中总共大约有60x7^6种情况。
case1: 13506.873184310927 查表190次 运行时间300ms case6: 11977.745265270445 查表548次 运行时间3min
- Step 2: 剪枝 由于计算量太大,不采用直接枚举+剪枝的思路。
采用多个策略组合的方式:
-
先确定序列,再考虑上车点 如果保留前N小的序列,这样只有Nx7^6种情况。
-
根据其所在马路到邻近节点的距离对候选点进行排序剪枝 d = 马路起点到上一节点的距离 + 马路终点到下一节点的距离 保留前k小的候选点,还剩Nxk^6种情况。
从task2的结果分析,case1/6可以用N=1做第一步剪枝,然后k取(4,2)全对,取(1,1)结果:
case1: 13892.215120194916 查表4次 比例1.0285293221181337 case6: 12195.516433070448 查表6次 比例1.018181315679791