2013-08-28 98 views
0

我正在開發適合公司發佈部分網站,和我被困在下面的需要:ASP經典選擇更好的路線

該公司有幾個分支機構,每一個具有用於發送的帖子不同行程。

對於爲例我想如下:

1個單元發送剛單元2,發送剛單元3,...

所以,如果我想從單元1張貼內容到單元6,它有穿過該單元2,3,4和5。在此之前,我能夠與代碼做,我將但低於:

<% 
origem = int(request.querystring("origem")) 
destino = int(request.querystring("destino")) 
codcorrespondencia = int(request.querystring("codcorrespondencia")) 

set rs = server.CreateObject("ADODB.Recordset") 
set rs2 = server.CreateObject("ADODB.Recordset") 

base = destino 
caminho = base 

do while not base = origem 
rs.open "select * from ESCALAS where codunidade_post = " & base, conexao 

    if not rs.fields("codunidade") = origem then 
     do while not rs.eof 
     rs2.open "select * from ESCALAS where codunidade_post = " & rs.fields("codunidade"), conexao 
      if not rs2.eof then 
      escalacao = int(rs.fields("codunidade")) & " - " & base & "; " & escalacao 'novas linhas 
      base = int(rs.fields("codunidade")) 
      end if 
     rs2.close 

     rs.movenext 
     loop 
    else 
    escalacao = rs.fields("codunidade") & " - " & base & "; " & escalacao 'novas linhas 
    base = origem 
    end if 
rs.close 
caminho = base & "," & caminho 
loop 

response.Write(escalacao) 
%> 

但是,如果下面的情況發生:

單元1至2,2至3,4至5,4至6和5〜6

該代碼選擇從4 5發送到5,和到6,而不是直接從4至6

我的代碼如何變得聰明並選擇最短的方式?

爲了測試,我把var ESCALACAO。它向我展示了代碼選擇的方式。

回答

0

看起來您需要實施最短路徑算法,以便爲您的帖子找到最佳路線,因爲您有多條路線從4到6(直接4-> 6和間接4-> 5-> 6 )。

請參閱Shortest Path Problem基於維基百科。