資源簡介
算法中將一條線視為一個結點,采用廣度優先搜索,利用樹結構存儲搜索結果,算法效率高,在武漢地鐵11條線路190余個站點的線網圖中測試,任意兩點間的所有路徑平均耗時0.2秒。只要對算法中的費用矩陣做調整,即可適用于公交等其他網絡。

代碼片段和文件信息
package?com.bean;
import?java.util.ArrayList;
import?java.util.List;
public?class?Line?{
private?int?id;?//線路id
private?List?stationList?=?new?ArrayList();//本條線的車站列表
private?boolean?isCircle?;//是否為環線
public?int?getId()?{
return?id;
}
public?void?setId(int?id)?{
this.id?=?id;
}
public?List?getStationList()?{
return?stationList;
}
public?void?setStationList(List?stationList)?{
this.stationList?=?stationList;
}
public?boolean?isCircle()?{
return?isCircle;
}
public?void?setCircle(boolean?isCircle)?{
this.isCircle?=?isCircle;
}
public?Station?getStation(int?id)
{
for(Station?sta?:?stationList)
{
if(sta.getId()==id)
{
return?sta;
}
}
return?null;
}
public?List>?getPathInLine(int?startStaIdint?endStaId)
{
List?result1?=?new?ArrayList();
List?result2?=?new?ArrayList();
result1.add(startStaId);
result2.add(startStaId);
int?temp?=?startStaId;
while(temp!=endStaId?&&?getStation(temp).getNextSta()!=null)
{
Station?sta?=?getStation(temp);
temp?=?sta.getNextSta().getId();
result1.add(temp);
}
temp?=?startStaId;
while(temp!=endStaId?&?getStation(temp).getPrevSta()!=null)
{
Station?sta?=?getStation(temp);
temp?=?sta.getPrevSta().getId();
result2.add(temp);
}
List>?result?=?new?ArrayList>();
if(result1.get(result1.size()-1)?==?endStaId)
{
result.add(result1);
}
if(result2.get(result2.size()-1)?==?endStaId)
{
result.add(result2);
}
return?result;
}
public?Station?getStation(String?name)?{
//?TODO?Auto-generated?method?stub
for(Station?sta?:?stationList)
{
if(sta.getName().equals(name))
{
return?sta;
}
}
return?null;
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????422??2018-07-27?18:51??PathSearch\.classpath
?????文件????????386??2018-04-13?13:11??PathSearch\.project
?????文件????????598??2018-04-13?13:11??PathSearch\.settings\org.eclipse.jdt.core.prefs
?????文件???????2987??2018-07-28?11:20??PathSearch\bin\com\bean\Line.class
?????文件????????611??2018-07-28?11:20??PathSearch\bin\com\bean\SolutionTree.class
?????文件???????2073??2018-07-28?11:20??PathSearch\bin\com\bean\Station.class
?????文件???????5166??2018-07-28?11:18??PathSearch\bin\com\bean\TreeNode.class
?????文件???????1513??2018-07-28?11:15??PathSearch\bin\com\main\Enter.class
?????文件??????15449??2018-07-27?21:01??PathSearch\bin\com\main\PathSearch.class
?????文件???????4403??2018-07-27?18:51??PathSearch\bin\com\tools\MyDataba
?????文件?????724225??2018-04-13?01:33??PathSearch\mysql-connector-java-5.1.10-bin.jar
?????文件???????1926??2018-07-28?11:20??PathSearch\src\com\bean\Line.java
?????文件????????287??2018-07-28?11:20??PathSearch\src\com\bean\SolutionTree.java
?????文件???????1223??2018-07-28?11:20??PathSearch\src\com\bean\Station.java
?????文件???????5980??2018-07-28?11:18??PathSearch\src\com\bean\TreeNode.java
?????文件????????715??2018-07-28?11:15??PathSearch\src\com\main\Enter.java
?????文件??????18239??2018-07-27?21:01??PathSearch\src\com\main\PathSearch.java
?????文件???????2337??2018-04-13?01:30??PathSearch\src\com\tools\MyDataba
?????目錄??????????0??2018-07-28?11:11??PathSearch\bin\com\bean
?????目錄??????????0??2018-07-28?11:11??PathSearch\bin\com\main
?????目錄??????????0??2018-07-28?11:12??PathSearch\bin\com\tools
?????目錄??????????0??2018-07-28?11:11??PathSearch\src\com\bean
?????目錄??????????0??2018-07-28?11:11??PathSearch\src\com\main
?????目錄??????????0??2018-07-28?11:12??PathSearch\src\com\tools
?????目錄??????????0??2018-07-28?11:11??PathSearch\bin\com
?????目錄??????????0??2018-07-28?11:11??PathSearch\src\com
?????目錄??????????0??2018-04-13?13:11??PathSearch\.settings
?????目錄??????????0??2018-07-27?18:51??PathSearch\bin
?????目錄??????????0??2018-04-13?13:12??PathSearch\src
?????目錄??????????0??2018-07-27?15:52??PathSearch
............此處省略3個文件信息
評論
共有 條評論