1樓:匿名使用者
問題分析
1、【隨機生成點】:直接用rand函式生成點的座標;
2、【點與點隨機連成邊】:用rand函式生成n*n矩陣,大於某設定門限值(例如0.8)則連邊;
3、【計算任意兩點間的最短路徑】,分兩種做法:
(1)隨機取兩點,計算最短路徑,用graphshortestpath函式;
(2)把任意兩點間的最短路徑全部計算出來,形成一個矩陣,用graphallshortestpaths函式。
4、【計算出最小生成樹】:用graphminspantree函式。
其中,graphshortestpath、graphallshortestpaths、graphminspantree均為生物資訊工具箱(bioinformatics toolbox)中的函式。
參考**
匆忙間編寫了一段**,供參考。
% 隨機生成點的數量
n = 10;
% 生成點的座標
x = rand(n, 1); y = rand(n, 1);
% 隨機生成連線關係(隨機數大於門限值為有連線)
l = rand(n, n) > 0.8;
% 計算各節點距離(保留兩位小數)
d = round(squareform(pdist([x y]))*100)/100;
% 用稀疏矩陣表示圖
dg = sparse(d.*l);
% 轉換為無向圖
ug = tril(dg + dg');
% 顯示圖
view(biograph(ug,,'showarrows','off','showweights','on'));
% 計算最小生成樹
st = graphminspantree(ug);
view(biograph(st,,'showarrows','off','showweights','on'))
% 計算所有節點間的最小路徑(兩兩對應)
dist = graphallshortestpaths(ug,'directed',false);
disp(num2str(dist,' %.2f'))
% 計算任意(隨機選擇)兩個節點間的最小路徑
i = ceil(rand*n); j = ceil(rand*n);
[dist,path,pred] = graphshortestpath(ug,i,j,'directed',false);
% 突出顯示最小路徑
h = view(biograph(ug,,'showarrows','off','showweights','on'));
set(h.nodes(path),'color',[1 0.4 0.4])
fowedges = getedgesbynodeid(h,get(h.nodes(path),'id'));
revedges = getedgesbynodeid(h,get(h.nodes(fliplr(path)),'id'));
edges = [fowedges;revedges];
set(edges,'linecolor',[1 0 0])
set(edges,'linewidth',1.5)
執行結果
1、隨機生成的無向圖:
2、最小生成樹:
3、隨機選擇兩節點,計算最小路徑(節點6和9之間):
4、任意節點間的最小路徑:
0.00 0.70 1.38 1.37 0.69 0.75 0.57 0.06 0.14 0.29
0.70 0.00 1.72 1.52 0.85 1.09 0.85 0.64 0.84 0.44
1.38 1.72 0.00 2.47 1.65 0.63 0.87 1.42 1.42 1.39
1.37 1.52 2.47 0.00 1.49 1.84 1.60 1.31 1.51 1.08
0.69 0.85 1.65 1.49 0.00 1.02 0.78 0.64 0.83 0.41
0.75 1.09 0.63 1.84 1.02 0.00 0.24 0.79 0.79 0.76
0.57 0.85 0.87 1.60 0.78 0.24 0.00 0.55 0.55 0.52
0.06 0.64 1.42 1.31 0.64 0.79 0.55 0.00 0.20 0.23
0.14 0.84 1.42 1.51 0.83 0.79 0.55 0.20 0.00 0.43
0.29 0.44 1.39 1.08 0.41 0.76 0.52 0.23 0.43 0.00
2樓:思孕
如果 說清楚點 我搞得定!
用matlab在平面上 隨機產生幾個點(用座標表示)怎麼程式設計?
3樓:匿名使用者
基本思想:
隨機產生x的座標(向量形式)
隨機產生y的座標(向量形式)
在一平面上使用plot函式畫出這些點
例子:在0到1的平面內隨機產生10個點,並畫出來x=rand(1,10)
y=rand(1,10)
plot(x,y,'*')
4樓:
記得有個rand函式吧,
直接產生一個那麼大的隨機陣列不就行了
課堂作業語文六年級上冊22課,課堂作業語文六年級上冊第21 22課
百小度 21 老人與海鷗 那是一個普通的冬日。我和朋友相約來到翠湖時,海鷗正飛得熱鬧。在喂海鷗的人群中很容易認出那位老人。他背已經駝了,穿一身褪 tu 色的過時布衣,背一個褪色的藍布包,連裝鳥食的大塑料袋也用得褪了色。朋友告訴我,這位老人每天步行二十餘里,從城郊趕到翠湖,只為了給海鷗送餐,跟海鷗相伴...
八年級上冊英語(第一課堂)課堂作業答案
要什麼答案啊。自己寫,用答案抄會一點效果都沒有的。想要有好成績就自己寫,我告訴你平時什麼都不用幹。就上課認真聽講,下課做好作業,就可以取得好成績,我自己的經驗,我現在第一名!還是要看老師改不改啊,老師不給你對答案 那你錯的題就永遠錯著 也一樣沒用。其實答案只要用得對就還好 而且有些題你覺得沒必要花時...
人教版數學六年級下課堂作業本答案
這些題我已經做過了,答案肯定對 1 1 每本的頁數 和 裝訂的本數 裝訂的本書 隨著每本的頁數 的變化而變化 裝訂的本數 每本的頁數 反而增加 2 練習本總量 每本的頁數 裝訂的本數 反比例 3 反,反,正,不成,工總,工時,工效 第4題隨你怎麼寫 自己打的,要採用啊 凌妖沐 1 1 每本的頁數 和...