本文目錄一覽:
- 1、java 最小生成樹
- 2、一個簡單的算法演示程序(JAVA語言實現)
- 3、如何用動態規劃法解決最小生成樹問題
- 4、圖的最小生成樹算法?
- 5、JAVA問題求解求速度 http://zhidao.baidu.com/question/206204688.html
- 6、用Java實現生成樹協議
java 最小生成樹
public class AbstractGraphV
{
public AbstractGraph(List?extends Edge edges, ListVvertices)
{
}
public static class Edge
{
}
}
public class WeightedGraph extends AbstractGraphFloat
{
public WeightedGraph(ListWeightedEdge edges, ListFloat vertices)
{
super(edges, vertices);
}
public static class WeightedEdge extends Edge
{
}
}
試試這種?
一個簡單的算法演示程序(JAVA語言實現)
還真敢要,別說5分了,5塊錢也沒人幫你做,自己想辦法吧,懶鬼
如何用動態規劃法解決最小生成樹問題
標題: 最小生成樹
時 限: 1000 ms
內存限制: 10000 K
總時限: 3000 ms
描述:
有一張城市地圖,圖中的頂點為城市,無向邊代表兩個城市間的連通關係,邊上的權為在這兩個城市之間修建高速公路的造價,研究後發現,這個地圖有一個特點,即任一對城市都是連通的。現在的問題是,要修建若干高速公路把所有城市聯繫起來,問如何設計可使得工程的總造價最少。假定所有輸入的根節點或者源為第一個城市或第一組數據。
請使用prim算法求解。
輸入:
n(城市數,1=n=100);
e(邊數);
以下e行,每行3個數i,j,wij,表示在城市i,j之間修建高速公路的造價。
輸出:
n-1行,每行為兩個城市的序號,表明這兩個城市間建一條高速公路。
輸入樣例:
5
8
1 2 2
1 3 12
1 4 10
2 3 8
2 5 9
3 4 6
3 5 3
4 5 7
輸出樣例:
1 2
2 3
3 5
3 4
提示:
import java.util.Scanner;
public class Main {
public static void prim(int n,float [][]c)
{
float []lowcost = new float [n+1];
int [] closest = new int [n+1];
boolean [] s = new boolean [n+1];
s[1] = true;
for(int i=2;i=n;i++)
{
lowcost[i] = c[1][i];
closest[i] = 1;
s[i] = false ;
}
for(int i=1;in;i++)
{
float min = Float.MAX_VALUE;
int j =1;
for(int k =2;k=n;k++)
if((lowcost[k]min)(!s[k]))
{
min = lowcost[k];
j =k;
}
System.out.println(closest[j]+” “+j);
s[j] = true;
for(int k =2; k=n;k++)
if((c[j][k]lowcost[k])(!s[k]))
{
lowcost[k] = c[j][k];
closest[k] = j;
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n =sc.nextInt();
int m = sc.nextInt();
float [][]c = new float [n+1][n+1];
for(int i = 0;im ;i++)
{
int x =sc.nextInt();
int y = sc.nextInt();
float z = sc.nextFloat();
c[x][y] = z;
}
for(int i =0;i=n;i++)
for(int j =0;j=n;j++)
if(c[i][j]==0)
c[i][j] =Float.MAX_VALUE;
圖的最小生成樹算法?
圖的生成樹和最小生成樹生成樹(SpanningTree):如果一個圖的子圖是一個包含圖所有節點的樹,那這個子圖就稱為生成樹.
JAVA問題求解求速度 http://zhidao.baidu.com/question/206204688.html
功能要求:
1. 選擇一個算法(提供選擇見下),利用各種方法(圖形、動畫等)演示算法的演示過程。
2. 可以進行手動演示,也可以自動步進式演示。
3. 允許用戶設置算法的各個輸入參數,以及自動步進式演示中的時間間隔。
4. 不同的算法輸入要求見下。
界面要求:
1. 盡量使用圖形界面實現,要符合日常軟件使用規範來設計菜單和界面。
2. 如果無法實現圖形界面,則在命令行方式下也需要提供菜單,方便用戶操作。
其他要求:
1. 標識符命名遵循Windows命名規範。
2. 能夠注意各種異常處理,注重提高程序運行效率。
提交內容:
1. 全部源代碼。
2. 軟件設計和使用說明書(UML類圖;實現的功能、主要技術;使用幫助文檔)
參考算法:
1. 最小生成樹算法:Prim算法、Kruskal算法。允許以下方式輸入一個圖形:繪製圖形、輸入鄰接矩陣、輸入邊及其關聯的頂點。要求在圖形方式下進行演示算法執行步驟。
2. 單源最短路算法:Dijkstra算法。允許以下方式輸入一個圖形:繪製圖形、輸入鄰接矩陣、輸入邊及其關聯的頂點。要求在圖形方式下進行演示算法執行步驟。
3. 最優編碼算法:Huffman編碼算法。允許用戶輸入一段英文文字,或者打開一個txt文檔(英文內容),據此文檔內容進行編碼。要求動態列出每個字符的出現概率統計結果以及對應編碼。
4. 其他可供演示的具有一定難度的算法,如關鍵路徑問題、有向圖的極大連通分支等。
用Java實現生成樹協議
快速生成樹協議(RSTP)STP並不是已經淘汰不用,實際上不少廠家目前還僅支持STP。STP的最大缺點就是他的收斂時間太長,對於現在網絡要求靠可靠性來說,這是不允許的,快速生成樹的目的就是加快以太網環路故障收斂的速度。1.RSTP 5種端口類型STP定義了4種不同的端口狀態,監聽(Listening),學習(Learning),阻斷(Blocking)和轉發(Forwarding),其端口狀態表現為在網絡拓撲中端口狀態混合(阻斷或轉發),在拓撲中的角色(根端口、指定端口等等)。在操作上看,阻斷狀態和監聽狀態沒有區別,都是丟棄數據幀而且不學習MAC地址,在轉髮狀態下,無法知道該端口是根端口還是指定端口。表8-20中看RSTP的端口狀態只有三種狀態,Discarding、Leaning和Forwarding。表8-20 STP和RSTP端口狀態比較RSTP有五種端口類型。根端口和指定端口這兩個角色在RSTP中被保留,阻斷端口分成備份和替換端口角色。生成樹算法(STA)使用BPDU來決定端口的角色,端口類型也是通過比較端口中保存的BPDUB來確定哪個比其他的更優先。1)根端口非根橋收到最優的BPDU配置信息的端口為根端口,即到根橋開銷最小的端口,這點和STP一樣。請注意圖8-16上方的交換機,根橋沒有根端口。按照STP的選擇根端口的原則,SW-1和SW-2和根連接的端口為根端口。2)指定端口與STP一樣,每個以太網網段段內必須有一個指定端口。假設SW-1的BID比SW-2 優先,而且SW-1的P1口端口ID比P2優先級高,那麼P1為指定端口,如圖8-17所示。 圖8-16 RSTP根端口 圖8-17 指定端口的選擇3)替換端口如果一個端口收到另外一個網橋的更好的 BPDU,但不是最好的,那麼這個端口成為替換端口,如圖8-18所示。對於SW-2來說,端口P3收到的BPDU比自己優先,自己為次優先,P3為替換端口。4)備份端口如果一個端口收到同一個網橋的更好 BPDU,那麼這個端口成為備份端。當兩個端口被一個點到點鏈路的一個環路連在一起時,或者當一個交換機有兩個或多個到共享局域網段的連接時,一個備份端口才能存在。如圖8-19所示,SW-1的P1和P2口同時接入到以太網的同一網段,P1為指定端口,P2 優先級低,則P2端口為備份端口。 圖8-18 替換端口的選擇 圖8-19 備份端口的選擇5)禁用端口在快速生成樹協議應用的網絡運行中不擔當任何角色。2.BPDU更新與變化RSTP添加標誌位,如圖8-20所示。在STP中,標誌位只有0為TC和7為TCA使用,RSTP使用其中保留的6位。另外,RSTP在BPDU指定了端口的角色和端口狀態,並且採用提議/同意的控制機制。 具體 參考 下
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/196070.html