0

我的数学很糟糕,真的很糟糕。太糟糕了,我什至都在努力表达这个问题,但是就这样吧。

这种情况是火车旅行,您有四个阵列可供使用。

离开_车站到达_车站

离开_日期返回_日期

因此,假设您只对单程路线感兴趣,您需要弄清楚有多少路线组合。那将是(我认为)

possible_routes = (leaving_stations x arriving_stations) x leaving_dates

但是,如果我想回程,我该如何计算有多少种组合呢?

更新::

或者这行得通吗?

可能的路线=((离开站×到达站)×离开日期)×(离开日期×返回日期)

4

3 回答 3

1

好吧,答案是您的数组名称并不完全清楚。

假设我们有 4 个数组:

  • 离开日期
  • 返回日期
  • 离开车站
  • 到达站

然后我们可以在这里做一点解释。让我们使用符号 |x| 表示数组 [x] 的基数(元素数),因此 |Leaving Dates| 是您可以保留的日期总数。

然后|离开日期| * |离开车站| * |到达站| 会翻译为,选择一个日期离开,然后选择一个车站离开,然后选择一个车站到达,并以所有可能的方式做到这一点。所以这似乎是你要求的单程旅行。

现在,实际上,我将假设这是一个现实世界的问题,所以假设我们选择在 6 月 20 日从南安普顿出发前往约克郡,在回程中,我们现在可以选择的应该是返回日期(意思是我假设你想回家)。

因此,我们可以计划往返旅行的方式总数将是首先如上所述计划单程旅行,然后选择返回日期,即|离开日期| * |离开车站| * |到达站| * |返回日期|。前 3 个学期如上所述选择单程旅行,最后一个学期从所有可能的日期中选择一个返回日期。当然,如果我们可以选择返回另一个车站而不是我们离开的那个车站,那么等式将是 (|Leaving Dates| * |Leaving Stations| * |Arriving Stations|) * (|Return Date| * |离开车站|),或者如果我们甚至可以从与我们第一次到达的到达车站不同的到达车站出发,它将变成(|离开日期| * |离开车站| * |到达车站|)*(|返回日期| * |到达站| * |离开站|)。

于 2009-06-08T04:41:06.143 回答
0

我不确定我是否理解正确,但这似乎是一个典型的图形路由理论问题。您可以查看最小路径A*算法。

于 2009-05-16T13:56:40.697 回答
0

首先,AA 路线是错误的,所以:

possible_routes = 
(
  leaving_stations x arriving_stations - 
  (leaving_stations [intersection] arrivig_stations) 
) x leaving_dates

交集运算是属于两个数组的元素

其次,当你想要 2 路路线时,组合是:

possible_2way_routes = 
(
    leaving_stations x arriving_stations - 
    (leaving_stations [intersection] arrivig_stations) 
) x 
leaving_dates x 
(return_dates that later than leaving dates+route time)

'leaving_dates x (return_dates that later than leave dates+route time)' 是奇怪的事情,所以它可能更容易计算高估计 - 数字,在任何情况下都不少于 possible_2way_routes。最高计数将是所有返回日期晚于离开日期时,因此:

possible_2way_routes <= 
(
    leaving_stations x arriving_stations - 
    (leaving_stations [intersection] arrivig_stations) 
) x leaving_dates x return_dates

哦,我记得如何计算'return_dates that later than leave dates+route time'。它的:

for each element of leaving_dates {
sum=sum+return_dates that later than ith leaving date+route time}

仍然存在“路线时间”的问题,但......

于 2009-05-16T14:40:54.273 回答