【问题标题】:subproblem graph for matrix multiplication using dynamic programming使用动态规划的矩阵乘法子问题图
【发布时间】:2015-09-15 10:43:04
【问题描述】:

我正在阅读有关 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 的矩阵链乘法子问题图。

感谢您的时间和帮助

【问题讨论】:

  • 能否举个具体问题的例子?

标签: algorithm dynamic-programming


【解决方案1】:

我不确定我是否理解您的问题,但您是否正在寻找类似的东西?

我使用这个简单的 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多