用于rideshare预留的数据库/算法

时间:2015-08-25 17:31:27

标签: algorithm google-maps recursion logic combinations

我正在开发一个小型的共享网站,人们可以使用谷歌地图API(纬度和经度)创建中途停留路线。

我可以在给定路线上创建所有可能的组合(包括中途停留),如下面的答案:

(Java) Find all possible pairs in an array

示例:如果从A到D的旅程有2次中途停留(B和C),那么将有6次可能的“旅程”:

  1. 城市A - 城市D(最长旅程)
  2. 城市A - 城市C(全程1站)
  3. 城市B - 城市D(全程一站式旅行)
  4. 城市A - 城市B(没有中途停留)
  5. 城市B - 城市C(没有中途停留)
  6. 城市C - 城市D(没有中途停留)
  7. 当一名乘客在某段旅程中预订座位时,根据他们在“金字塔”中的位置,其他一些旅程也会预订座位。

    在任何特定行程中预订座位时,我都没有找到一种方法来以编程方式确定哪些行程会受到影响。

    我发现的最接近的想法是来自phpjabbers的公共汽车预订脚本和这个SO答案: Database design for bus reservation 但是,这两个解决方案已经存储在数据库中的城市/停靠点,而在“我的”解决方案中,停靠点始终是动态的(使用谷歌地图API)。

    到目前为止,我已经尝试过:

    • 在旅程和“主人”之旅中创造一种EAV关系。
    • 根据中途停留的数量创建“级别”(级别1是最长的行程,级别2是n-1次中途停留等等。
    • 尝试根据起点/终点使用矩阵。

    我不是以正确的方式解决问题(当然)但我不确定这个问题是否与数学,算法或其他任何问题有关。请原谅我。

    我想了解如何解决这个问题:公式,算法,一些基本代码或其他。

    编辑:

    为了更好地解释问题,这将是一个典型的情况:

    1. 驾驶员可以从A到D创建三个座位。该驱动程序在B和C中增加了两次中途停留。它产生了6次旅程(见上文)。
    2. 从谷歌地图api中选择四个点或城市(A,B,C,D),因此它们不会存储在本地。每个点的纬度和经度都“附着”在游乐设施上。

      1. 乘客Z预订最长的座位(#1)。现在所有的游乐设施都只有两个座位。很容易。

      2. 乘客Y预定乘坐#6(从C到D)的座位。现在,#1,#3和#6游乐设施减少了一个座位(2个占用,1个可用)。

      3. 乘客X预定乘坐#2(从A到C)的座位。 这就是它变得复杂的地方。现在游乐设施#2,#4和#5有一个座位少(1个占用,2个可用),同样适用于#3(2个占用,1个可用)。

      4. 此时即使有3名乘客预订了“次乘车”座位,乘坐#1仍有1个座位(见上文第3点)。这是我的问题,我不知道如何确定乘客X(第4点)的预订不能修改#1号车。

0 个答案:

没有答案