0

我有一个遍历问题,我尝试了一些方法来找到我的问题中的最佳遍历。

问题是,我有一些集合,每个元素都有它的权重。让我们在下面列出..

('f12', 'f10', 'f15')
('f07', 'f05', 'f01', 'f15')
('f08', 'f05', 'f21')
('f07', 'f19', 'f15')
('f21', 'f10', 'f15')
('f07', 'f04', 'f01')
('f06', 'f07', 'f01', 'f15')
('f05', 'f04', 'f10', 'f15')
('f05', 'f21', 'f19', 'f15')
('f07', 'f02', 'f15')
('f07', 'f21', 'f01')
('f07', 'f21', 'f15')
('f18', 'f05', 'f01', 'f15')
('f07', 'f05', 'f21')
('f07', 'f12', 'f15')
('f05', 'f01', 'f17', 'f15')
('f08', 'f12', 'f15')
('f04', 'f01', 'f12')
('f10', 'f16', 'f17')
('f04', 'f21', 'f15')
('f07', 'f18', 'f15')
('f07', 'f16', 'f15')
('f07', 'f03', 'f15')
('f21', 'f03', 'f15')
('f03', 'f12', 'f15')
('f06', 'f10', 'f16', 'f15')
.....

并且每个 fXX 都有相对的权重,称为 w1~w21 我想找到一个 f1~f21(或最短)的最佳遍历路径。如果我遍历了其中一组,那么我可以停下来。

例如..如果我遍历 f01->f02->f04->f07 然后停止,因为

('f07', 'f04', 'f01')

已被发现。

主意

  • 我一直在考虑FSM(有限状态机),但我不知道如何处理重量?

问题

如何将此类问题构建到某些 FSM 或某种获取遍历路径的方法中?它应该有一个输入元素?正确的?

笔记

每个 fxx 都有 True/False 结果,并且终止条件是组合之一的所有元素“True”。即,如果 fxx 的结果为 True,则收集,否则转到另一个 fxx。

并且如果所有 fxx 都已经遍历并且我无法收集满足其中一个组合,那么我可以返回“未找到”

4

0 回答 0