今天的算法挑战
Today's algorithmic challenge
我目前正在研究一种算法来安排 pub-crawling(虽然它可以更通用地应用)。
这是已知的:
- 有一定数量的队伍和酒吧,队伍数量
永远不会超过柱的数量
- 团队必须参观所有酒吧
- 队伍不能同时出现在同一个酒吧
- 整个过程是暂时的;团队在 pub-crawl 的开始和结束时间之间的相同离散时间间隔内到达酒吧。
我认为这是旅行推销员问题和一些花名册规划之间的混合体,但现在我尝试使用蛮力来实现它,因为我不知道如何实现上述混合体。我期望的结果可能是这样的:
蛮力正在起作用,但它太慢了。当所有的行和列都是唯一的时,就会找到一个解决方案——就像数独一样。然后可以将数字映射到特定柱的时间 intervals/arrival 和出发时间。
我正在寻找想法和建议,但也非常欢迎实现 (C#)。
目前我正在通过以下方式进行暴力破解:
- 正在初始化一个二维数组,其中的行数与团队一样多,列数与条数一样多。这些值也被初始化,从 1 列开始。
- 检查数组是否是解,如果不是:打乱数组并再次检查。
最后,我需要提到的是,当这可以足够快地完成时,将引入更多一层复杂性。为特定团队选择的路线必须是最优的,这意味着所有团队都必须采用关于旅行时间的最佳路线 - 为此,我将使用 Google 地图 API。我想如果算法的第一部分相对较快,则可以强制进行距离优化。
期待创造性的解决方案!
看来你应该先解决最优路径问题。如果这样做,那么您可以在解决方案的第一个栏开始第一个团队,在第二个栏开始第二个团队,等等,就像您在示例中所做的那样。
因此,如果您确定通过条形图的最佳(或几乎最佳)路径是 B4、B3、B1、B2、B6、B5,那么您只需重新排列 table 中条形图的顺序 header 来匹配。所以在第一个时间段内,团队 1 将访问 bar 4 等
我目前正在研究一种算法来安排 pub-crawling(虽然它可以更通用地应用)。 这是已知的:
- 有一定数量的队伍和酒吧,队伍数量 永远不会超过柱的数量
- 团队必须参观所有酒吧
- 队伍不能同时出现在同一个酒吧
- 整个过程是暂时的;团队在 pub-crawl 的开始和结束时间之间的相同离散时间间隔内到达酒吧。
我认为这是旅行推销员问题和一些花名册规划之间的混合体,但现在我尝试使用蛮力来实现它,因为我不知道如何实现上述混合体。我期望的结果可能是这样的:
蛮力正在起作用,但它太慢了。当所有的行和列都是唯一的时,就会找到一个解决方案——就像数独一样。然后可以将数字映射到特定柱的时间 intervals/arrival 和出发时间。 我正在寻找想法和建议,但也非常欢迎实现 (C#)。
目前我正在通过以下方式进行暴力破解:
- 正在初始化一个二维数组,其中的行数与团队一样多,列数与条数一样多。这些值也被初始化,从 1 列开始。
- 检查数组是否是解,如果不是:打乱数组并再次检查。
最后,我需要提到的是,当这可以足够快地完成时,将引入更多一层复杂性。为特定团队选择的路线必须是最优的,这意味着所有团队都必须采用关于旅行时间的最佳路线 - 为此,我将使用 Google 地图 API。我想如果算法的第一部分相对较快,则可以强制进行距离优化。
期待创造性的解决方案!
看来你应该先解决最优路径问题。如果这样做,那么您可以在解决方案的第一个栏开始第一个团队,在第二个栏开始第二个团队,等等,就像您在示例中所做的那样。
因此,如果您确定通过条形图的最佳(或几乎最佳)路径是 B4、B3、B1、B2、B6、B5,那么您只需重新排列 table 中条形图的顺序 header 来匹配。所以在第一个时间段内,团队 1 将访问 bar 4 等