Algorithm 这个图形编码练习是什么算法?

Algorithm 这个图形编码练习是什么算法?,algorithm,graph-theory,dijkstra,Algorithm,Graph Theory,Dijkstra,我有一个图形编码练习,我不知道使用哪种算法。我会尽量解释清楚 该算法采用两种输入:二维矩阵矩阵和正整数t矩阵[A][B]=C表示从A到B的边具有权重C。C可以为负。这个图中没有循环。让第一行作为起点,最后一行作为终点。起点和终点之间的其他行被命名为顶点0、1、2…正整数t表示时间。每次在两个顶点之间移动时,t都会被该边的权重扣除。例如,从A旅行到B会将剩余时间更新为t=t-C。当t为负值时,门关闭,您无法退出。在负权重边之间移动会增加t(因为t=t-(-C)=t+C)。当t为0和/或正数时,门将

我有一个图形编码练习,我不知道使用哪种算法。我会尽量解释清楚

该算法采用两种输入:二维矩阵
矩阵
和正整数
t
矩阵[A][B]=C
表示从A到B的边具有权重C。C可以为负。这个图中没有循环。让第一行作为起点,最后一行作为终点。起点和终点之间的其他行被命名为顶点0、1、2…正整数
t
表示时间。每次在两个顶点之间移动时,t都会被该边的权重扣除。例如,从A旅行到B会将剩余时间更新为
t=t-C
。当t为负值时,门关闭,您无法退出。在负权重边之间移动会增加t(因为t=t-(-C)=t+C)。当t为0和/或正数时,门将重新打开,然后您才能退出。以数组的形式返回结果,该数组指示已移动的顶点最多以及它们是什么。尝试最大化可以移动的顶点数。如果有多个相同大小的答案,则返回由其名称指示的最低顶点集(如果有两个答案:
answer=[0,1]
answer=[1,2]
,仅返回
[0,1]
)。对于每个测试用例,总是至少有一个解决方案

我已经学习了BFS、DFS、Djikstra、Ford Fulkerson、一些最小生成树算法,如Prim、Kruskal,但我认为它们中的任何一个都不能应用于这个问题。感谢您的帮助

编辑:根据光子评论的要求,我将澄清其他几点:

  • 给定3x3矩阵,顶点的命名如下:
矩阵=
[
[0,1,1],#起点
[1,0,1],#顶点0
[1,1,0]#终点
]
  • 时间
    t
    将不超过999
  • 最大矩阵大小为7x7。没有时间限制,但越复杂越好
  • 再次通过边缘需要你再次“支付”时间
  • 您必须到达终点(此时必须打开门才能退出)
  • 第一次到达终点时不需要立即退出
  • 任何编程语言都是可以接受的
样品溶液:

矩阵=
[
[0,2,2,2,-1],#0=开始
[9,0,2,2,-1],#1=顶点0
[9,3,0,2,-1],#2=顶点1
[9,3,2,0,-1],#3=顶点2
[9,3,2,2,0],#4=结束
]
路径是:
Start->End->Vertex 1->End->Vertex 2->End
,因此答案是
[1,2]

所以你移动了5次。每次移动后的时间变化为:

首字母:1(门打开),第一个:2,第二个:0,第三个:1,第四个:-1(门关闭),第五个:0(门重新打开,您退出)。

这看起来像是错误反馈,也许?你能进一步澄清一下吗:你提到的是什么?矩阵大小和时间的限制是什么?在到达边缘后,如果我们再次前往该边缘,是否需要再次付款?我们需要到达出口吗,还是可以在某个节点上结束?理想情况下,一些简单的例子将有助于理解您的问题。@Pierre我认为这与机器学习无关。也许我能想到福特·富尔克森,但我不确定。听起来你想要的是最长的路径,其权重之和小于或等于t。如果是这种情况,那么这个问题可能是NP难问题,可能没有比检查每条路径并记住您遇到的最长可行路径更好的解决方案了。看见它看起来像是最长路径,因为您的问题实例可以选择太大的路径,任何路径都是允许的,因此您的问题至少和一般情况下的最长路径一样困难。@StefanHaustein您似乎误解了图中的循环和循环。循环意味着节点与自身连接。它看起来像一个错误反馈,也许?你能进一步澄清一下吗:你提到的是什么?矩阵大小和时间的限制是什么?在到达边缘后,如果我们再次前往该边缘,是否需要再次付款?我们需要到达出口吗,还是可以在某个节点上结束?理想情况下,一些简单的例子将有助于理解您的问题。@Pierre我认为这与机器学习无关。也许我能想到福特·富尔克森,但我不确定。听起来你想要的是最长的路径,其权重之和小于或等于t。如果是这种情况,那么这个问题可能是NP难问题,可能没有比检查每条路径并记住您遇到的最长可行路径更好的解决方案了。看见它看起来像是最长路径,因为您的问题实例可以选择太大的路径,任何路径都是允许的,因此您的问题至少和一般情况下的最长路径一样困难。@StefanHaustein您似乎误解了图中的循环和循环。循环表示节点与其自身连接。