以下是以动态规划算法状态压缩法为基础进行。
![](https://img.haomeiwen.com/i3302072/8cebffaba57c6567.png)
以以上4个城市为例,形成一张二维矩阵表
![](https://img.haomeiwen.com/i3302072/2d0c7ae1b88de5be.png)
状态压缩法使用二进制记录经过城市节点的距离,以以上4个城市为例,下面是4*7的DP数组
![](https://img.haomeiwen.com/i3302072/d9cd60aa55ed32e7.png)
推而广之,n个城市下,城市距离二维矩阵表空间复杂度是n*n,计算过程DP表空间复杂度
![](https://img.haomeiwen.com/i3302072/5cc9be0661995058.png)
优化点
![](https://img.haomeiwen.com/i3302072/ae13dbb7b59eb5f4.png)
百度搜索结果:全北京超市总数:60218个,就近选择100个超市送货,DP表空间复杂度就是
![](https://img.haomeiwen.com/i3302072/64959457975614f3.png)
100个超市中很多都不是直接可达的,造成空间浪费
整型数组的大小受限于开发语言和操作系统
Java语言整型数组上限为225 * 225 ,即26个超市
所以使用HASH表来代替计算过程二维表
KEY=总坐标,横坐标
VALUE=DP表对应值
结果
![](https://img.haomeiwen.com/i3302072/1edb3d03f90f8c91.png)
可计算城市节点数不受语言和操作系统限制
节省了存储空间
单系统存取情况下,HASH比数组效率低
网友评论