回程旅行路线的可能组合数量

时间:2009-05-16 13:51:45

标签: math combinations

我的数学很糟糕,真的很糟糕。这么糟糕,我甚至都在努力甚至说出这个问题。

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

Leaving_Stations Arriving_Stations

Leaving_Dates Returning_Dates

所以,假设你只对单向路线感兴趣,你需要弄清楚有多少路线组合。那就是(我认为)

possible_routes = (leaving_stations x arriving_stations) x leaving_dates

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

UPDATE ::

或者这会起作用吗?

possible_routes =((leaving_stations x arrival_stations)x leaving_dates)x(leaving_dates x returning_dates)

3 个答案:

答案 0 :(得分:1)

嗯,答案是你的阵列名称并不完全清楚。

假设我们有4个数组:

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

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

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

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

因此,我们可以计划往返的总方式是首先计划如上所述的单程旅行,然后选择返回日期,这将是| Leaving Dates | * |离开车站| * |到达站| * |退货日期|。前3个学期选择上述单程旅行,最后一个学期从所有可能的日期中选择返回日期。当然,如果我们可以选择返回我们离开的那个站以外的另一个站,那么等式将是(|离开日期| * |离开站| * |到达站|)*(|返回日期| * |离开车站|),或者如果我们甚至可以从不同的到达站离开,而不是我们最初到达的那个到达(|离开日期| * |离开车站| * |到达车站|)*(|返回日期| * |到达车站| * |离开车站|)。

答案 1 :(得分:0)

我不确定我是否理解正确,但这似乎是一个典型的graph-routing理论问题。您可以查看Minimum PathA*算法。

答案 2 :(得分:0)

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

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

交叉操作是属于两个数组的元素

第二,当你想要双向路线时,组合是:

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晚于离开日期+路线时间)'是奇怪的事情,因此可能更容易计算高估计数 - 在任何情况下都不低于possible_2way_routes。所有的return_dates都晚于leaving_dates,所以:

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

哦,我记得如何计算'return_dates晚于离开日期+路线时间'。它是:

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

虽然......仍然存在'路线时间'的问题。