我正在阅读关于cormen中的动态编程。
相关的背景可以在以下链接中找到
http://staff.ustc.edu.cn/~csli/graduate/algorithms/book6/chap16.htm
通常,子问题图提供了另一种执行动态编程运行时分析的方法。 每个顶点对应一个子问题,子问题的选择是从该子问题入射的边。回想一下,在棒切割中,子问题图有n个顶点,每个顶点最多有n个边,产生一个 O(n ^ 2)运行时间。对于矩阵链乘法,如果我们绘制子问题图,它将具有O(n ^ 2)个顶点,并且每个顶点将具有最多n-1度,给出总共O(n ^ 3)个顶点和边缘
我正在寻找矩阵链乘法子问题图,例如n = 4。
感谢您的时间和帮助
答案 0 :(得分:3)
我不确定我是否理解你的问题,但是你在找这样的东西吗?
我使用这个简单的Python脚本创建它:
n = 4
print 'digraph {'
for i in range(n):
for j in range(i, n):
print 'p{}{} [label="M[{},{}]"];'.format(i,j,i+1,j+1)
for i in range(n):
for j in range(n):
for k in range(i, j):
print 'p{}{} -> p{}{}'.format(i,j,i,k)
print 'p{}{} -> p{}{}'.format(i,j,k+1,j)
print '}'
像这样运行(需要安装graphviz和imagemagick):
python test.py | dot -Tpng | display