主权项 |
1、一种考虑交叉口转向的最短路径标号算法,其特征在于包括如下步骤:对于有向网络G(V,E):(1)初始化创建链表S,将路径起点r加入链表S中,初始化标号如下:<maths num="0001"><![CDATA[<math><mrow><msub><mi>λ</mi><mrow><mi>i</mi><mo>,</mo><msub><mi>m</mi><mi>j</mi></msub></mrow></msub><mo>=</mo><mo>∞</mo><mo>,</mo><msub><mi>p</mi><mrow><mi>i</mi><mo>,</mo><msub><mi>m</mi><mi>j</mi></msub></mrow></msub><mo>=</mo><mrow><mo>(</mo><mn>0,0</mn><mo>)</mo></mrow><mo>,</mo><mo>∀</mo><mi>i</mi><mo>∈</mo><mi>V</mi></mrow></math>]]></maths><maths num="0002"><![CDATA[<math><mrow><msub><mi>λ</mi><mrow><mi>r</mi><mo>,</mo><msub><mi>m</mi><mi>k</mi></msub></mrow></msub><mo>=</mo><mn>0</mn><mo>,</mo><mo>∀</mo><mi>k</mi><mo>∈</mo><mi>Γ</mi><mrow><mo>(</mo><mi>r</mi><mo>)</mo></mrow></mrow></math>]]></maths>(2)取链表S中第一个结点为以下步骤中的上游结点iA.检测该上游结点i下游的结点j,并通过步骤B检查每个结点j的标号;B.如果所有的结点j都被检查过,返回步骤(1),否则,选择一个没有被检查过的结点j,作如下步骤:a.对每个结点j的动作m<sub>k</sub>作如下运算:<maths num="0003"><![CDATA[<math><mrow><msub><mi>λ</mi><mrow><mi>j</mi><mo>,</mo><msub><mi>m</mi><mi>k</mi></msub></mrow></msub><mo>=</mo><mi>min</mi><mo>{</mo><msub><mi>λ</mi><mrow><mi>j</mi><mo>,</mo><msub><mi>m</mi><mi>k</mi></msub></mrow></msub><mo>,</mo><mi>ξ</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><msub><mi>m</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>+</mo><mi>τ</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>+</mo><msub><mi>λ</mi><mrow><mi>i</mi><mo>,</mo><msub><mi>m</mi><mi>j</mi></msub></mrow></msub><mo>}</mo><mo>,</mo><mo>∀</mo><mi>j</mi><mo>∈</mo><mi>Γ</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow></math>]]></maths>如果<img file="A2009100330900002C4.GIF" wi="80" he="55" />的值被改变,记录上游结点i为结点j的紧前结点i<sub>j</sub>以及紧前结点处的转向动作m<sub>k</sub>,即令<maths num="0004"><![CDATA[<math><mrow><msub><mi>p</mi><mrow><mi>j</mi><mo>,</mo><msub><mi>m</mi><mi>k</mi></msub></mrow></msub><mo>=</mo><mrow><mo>(</mo><msub><mi>i</mi><mi>j</mi></msub><mo>,</mo><msub><mi>m</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>否则,不做任何修改,完成后,继续下一个动作m<sub>k</sub>′;b.对于结点j的最后一个动作|Γ(j)|+1作如下运算:<maths num="0005"><![CDATA[<math><mrow><msub><mi>λ</mi><mrow><mi>j</mi><mo>,</mo><mo>|</mo><mi>Γ</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>|</mo><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mi>min</mi><mo>{</mo><msub><mi>λ</mi><mrow><mi>j</mi><mo>,</mo><mo>|</mo><mi>Γ</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>|</mo><mo>+</mo><mn>1</mn></mrow></msub><mo>,</mo><mi>ξ</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mo>|</mo><mi>Γ</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>|</mo><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>+</mo><mi>τ</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>+</mo><msub><mi>λ</mi><mrow><mi>i</mi><mo>,</mo><msub><mi>m</mi><mi>j</mi></msub></mrow></msub><mo>}</mo><mo>,</mo><mo>∀</mo><mi>j</mi><mo>∈</mo><mi>Γ</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow></math>]]></maths>通常情况ξ(i,j,|Γ(j)|+1)=0如果λ<sub>j,|Γ(j)|+1</sub>的值被改变,记录上游结点i为结点j的紧前结点i<sub>j</sub>以及紧前结点处的转向动作m<sub>k</sub>,即令p<sub>j,|Γ(j)|+1</sub>=(i<sub>j</sub>,m<sub>k</sub>),否则,不做任何修改;c.如果结点j的任意一个标号被改进,就将结点j插入到链表S的尾部,重复步骤(2),直到链表S为空;(3)结束算法到达终点s的最短路径费用被记录在标号λ<sub>s,|Γ(s)|+1</sub>中,并通过紧前结点标号p<sub>s,|Γ(s)|+1</sub>逐个结点反向追踪得到由起点r到达终点s最短路径;其中:i-结点j的上游结点,j-结点i的下游结点,k-结点j的下游结点,j∈Γ(i),k∈Γ(j),i、j、k均是自然数;V-所有结点集合;E-路段的集合;Γ(i)-结点i的下游结点集合;Γ(j)-结点j的下游结点集合;Γ(r)-起点r的所有下游结点集合;Γ(s)-终点s的所有下游结点集合;<img file="A2009100330900002C7.GIF" wi="66" he="54" />-结点i处第m<sub>j</sub>个转向动作对应的最短路径长度标号;<img file="A2009100330900002C8.GIF" wi="71" he="49" />-结点i处第m<sub>j</sub>个转向动作对应的最短路径紧前结点标号;<img file="A2009100330900002C9.GIF" wi="72" he="51" />-起点r处第m<sub>k</sub>个转向动作对应的最短路径长度标号;m<sub>k</sub>-结点j的转向动作,m<sub>k</sub>=1,2,...,|Γ(j)|,|Γ(j)|+1;|Γ(j)|表示Γ(j)中元素的个数;<img file="A2009100330900002C10.GIF" wi="73" he="52" />-结点j处第m<sub>k</sub>个转向动作对应的最短路径长度标号;ξ(i,j,m<sub>k</sub>)-车辆从结点i行驶到结点j作转向动作m<sub>k</sub>产生的费用;τ(i,j)-通过路段(i,j)所需的行驶费用;<img file="A2009100330900002C11.GIF" wi="78" he="40" />-结点j处第m<sub>k</sub>个转向动作对应的最短路径紧前结点标号;|Γ(j)|+1-终点s的最后-个转向动作,即路径在终点s处终止;λ<sub>j,|Γ(j)|+1</sub>-以结点j为路径终点对应的最短路径长度标号;λ<sub>s,|Γ(s)|+1</sub>-终点s对应的最短路径长度标号;ξ(i,j,|Γ(j)|+1)-车辆从结点i行驶到结点j并以结点j为路径终点产生的费用;p<sub>j,|Γ(j)|+1</sub>-以结点j为路径终点对应的最短路径紧前结点标号;p<sub>s,|Γ(s)|+1</sub>-终点s对应的最短路径紧前结点标号。 |