首页IT科技量子计算机退相干问题(量子退火算法入门(4):旅行商问题的QUBO建模「上篇」)

量子计算机退相干问题(量子退火算法入门(4):旅行商问题的QUBO建模「上篇」)

时间2025-05-03 15:58:50分类IT科技浏览5013
导读:一、旅行商问题(Traveling Saleman Problem,TSP) 1.旅行商问题的定义...

一            、旅行商问题(Traveling Saleman Problem            ,TSP)

1.旅行商问题的定义

旅行商问题                  ,是一个经典的组合优化问题      ,而且是著名NP问题之一            。如下图所示

         ,可以想象                  ,有A         ,B      ,C                  ,D            ,E 五个地点   ,我们想找到一条路径                  ,从地点A出发               ,经过剩余四个地点,然后回到地点A               ,从所有可能路径中找到距离最短的一条路径                  。本章借用了文献[*1]的图表      。

2.旅行商问题求解的计算量

最简单的求解方式就是                  ,如下图所示把所有的求解路径全部计算一遍   ,然后算出每条路径的长度            ,求出最短路径         。

如下图所示                  ,所有的枚举路径总共有24条      ,我们可以很快找到最短路径                  。

如果下面A~Z的情况         ,这个计算量                  ,日本的第一超级计算机富岳         ,每秒的计算速度约为44.2京次(京是10的16次方      ,即万兆)         。一年的秒数是3600×24×365=3153.6万秒      。有兴趣的可以计算一下要算多少年                  。

二                  、TSP问题的建模

1.总体Hamilton量

H

H

H

该问题输入有两个                  ,这里借用了文章[*2]的图表:

地点数目:

N

N

N
地点之间的距离:

l

i

,

j

(

i

=

1

,

・・・

,

N

)

l_{i,j}(i = 1,・・・, N)

li,j(i=1,・・・,N)

约束条件:

每个时间步只能访问一个地点            。 每个地点都访问过一次   。

整体的Hamilton量

H

H

H如下:

目标变量

x

i

,

j

x_{i,j}

xi,j的两个下标的意思如下图👇所示            ,绿色的圆圈代表在某个时间步访问了某个第地点   ,所以我们的目标变量就可以用0或1表示了                  ,0代表未访问               ,1代表访问                  。

2.约束条件

约束条件比较简单,先从约束条件解释               ,这里有2个约束可以解释如下:

每个时间步只能访问一个地点               。

=> 上图矩阵里的每列元素之和必须为1。也就是每列

中只有一个元素为1               。 每个地点都访问过一次                  。

=> 上图矩阵里的每行元素之和必须为1   。也就是每行中只有一个元素为1            。

具体表达式如下:

3.目标函数

解析:

x

i

,

t

x

j

,

t

+

1

x_{i,t}x_{j,t+1}

xi,txj,t+1

这里的目标函数                  ,最难理解的是

x

i

,

t

x

j

,

t

+

1

x_{i,t}x_{j,t+1}

xi,txj,t+1
                  。可以理解为【

t

t

t
时间步访问地点

i

i

i
   ,

t

+

1

t+1

t+1
时间步访问地点

j

j

j
时            ,

x

i

,

t

x

j

,

t

+

1

x_{i,t}x_{j,t+1}

xi,txj,t+1
=1;其他的情况                  ,

x

i

,

t

x

j

,

t

+

1

x_{i,t}x_{j,t+1}

xi,txj,t+1
=0】      。

i

=

1

N

j

=

1

N

t

=

1

N

\sum_{i=1}^N \sum_{j=1}^N \sum_{t=1}^N

i=1Nj=1Nt=1N

该表达式代表了      ,【

t

t

t
时间步访问地点

i

i

i
         ,

t

+

1

t+1

t+1
时间步访问地点

j

j

j
时                  ,地点

i

i

i

j

j

j
之间的距离

i

,

j

\ell_{i, j}

i,j
之和】         。所以         ,这个目标函数就代表了      ,从初始地点                  ,经过所有地点后            ,回到初始地点的距离总和                  。

总结

旅行商问题   ,是比较有实际意义的应用问题                  ,大家能体会到怎么把现实问题抽象出binary变量               ,然后怎么把制约条件表达出来         。因为,上面的建模有两种编程实现方式               ,为了控制篇幅                  ,下一篇献上Python代码      。

在阅读参考文献时   ,经常会发现资料里的一些小错误            ,大家以后阅读资料时也要小心啊                  。

参考文献:

[*1] : https://www.nttdata.com/jp/ja/-/media/nttdatajapan/files/news/services_info/2021/012800/012800-01.pdf

[*2] : https://qiita.com/yufuji25/items/0425567b800443a679f7
声明:本站所有文章                  ,如无特殊说明或标注      ,均为本站原创发布            。任何个人或组织         ,在未征得本站同意时                  ,禁止复制      、盗用         、采集                  、发布本站内容到任何网站         、书籍等各类媒体平台   。如若本站内容侵犯了原著者的合法权益         ,可联系我们进行处理                  。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
bios常用英文翻译(BIOS常见词语小结) typescript和java区别(TypeScript中type和interface的区别及注意事项)