Требуется помощь с алгоритмом, чтобы найти максимальный путь в DAG

Предположим, у меня есть этот Направленный ациклический граф (DAG) , где есть направленное ребро от каждого узла (кроме узлов в нижней строке) к двум узлам под ним:

        7
      3   8
    8   1   0
  2   7   4   4
4   5   2   6   5

Мне нужно найти путь через этот DAG, где сумма весов узлов максимальна. Вы можете перемещаться только по диагонали вниз-влево или вниз-вправо от узла в этом дереве. Так, например, 7, 3, 8, 7, 5 дадут максимальный путь в этом дереве.

Входной файл содержит DAG, отформатированный таким образом

7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

У меня вопрос, какой алгоритм лучше всего будет найти максимальный путь, а также как это дерево будет представлено в C ++?

Веса узлов неотрицательны .

7
задан Aaron McDaid 6 February 2012 в 13:16
поделиться