實驗目的:1.熟悉求解最大流的方法;2.練習用matlab程式設計。
實驗原理:先找到乙個可行流,對於乙個可行流,經過標號過程得到從出發點vs到收點vt增廣鏈,經過調整過程沿增廣鏈增加可行流流量得到新的可行流,不斷重複這一過程然後直到可行流無增廣鏈,即得到最大流。具體方法為:
原有網路為g,設有一輔助圖g',其定義為v(g') = v(g),e(g')初始值(也就是容量)與e(g)相同。每次操作時搜尋出一條路徑,然後將該路徑上所有的容量減去該路徑上容量的最小值,然後對路徑上每一條邊新增或擴大反方向的容量,大小就是剛才減去的容量。一直到沒有路為止。
此時輔助圖上的正向流就是最大流。
1. 上機實驗前先編寫出程式**
2. 錄入、編輯程式
3. 調適程式
4. 執行程式
5. 記錄執行時的輸入和輸出
6. 對程式做進一步完善
程式**:
u=zeros(10);% u是容量矩陣
f=zeros(10);% f是流量矩陣,初值可以直接賦零值
u(1,2)=8;u(1,3)=15;u(1,4)=10;
u(2,4)=7;
u(3,4)=6;u(3,6)=9;
u(4,5)=6;u(4,7)=9;u(4,6)=10;
u(5,2)=4;u(5,10)=5;
u(6,10)=11;
u(7,8)=18;
u(8,9)=12;u(8,10)=7;
u(9,7)=13;u(9,10)=15;
n=length(u);
list=;
maxf(n)=1;
while (maxf(n)>0)
maxf=zeros(1,n);
t=zeros(1,n);
list=1; %list是未檢查鄰接點的標號點
record=list; %record是已標號點
maxf(1)=inf;
while (~isempty(list))&(maxf(n)==0)
flag=list(1);
list(1)=;
label1= find(u(flag,:)-f(flag,:)); % 第flag行對應第flag個節點,
%find由該節點出發的、還可以安排流量的弧
label1=setdiff(label1,record);% c = setdiff(a,b) for vectors a and b, returns the values in a that
% are not in b with no repetitions. c will be sorted.
list=union(list,label1);%c = union(a,b) for vectors a and b, returns the combined values of the
% two vectors with no repetitions. c will be sorted.
t(label1)=flag;
maxf(label1)=min(maxf(flag),u(flag,label1)-f(flag,label1));
record=union(record,label1);
label2=find(f(:,flag));
label2=label2';
label2=setdiff(label2,record);
list=union(list,label2);
t(label2)=-flag;
maxf(label2)=min(maxf(flag),f(label2,flag));
record=union(record,label2);
endif maxf(n)>0
v2=n;
v1=t(v2);
while v2~=1
if v1>0
f(v1,v2)=f(v1,v2)+maxf(n);
else
v1=abs(v1);
f(v2,v1)=f(v2,v1)-maxf(n);
endv2=v1;
v1=t(v2);
endendendf
uf =
0 6 9 10 0 0 0 0 0 0
0 0 0 6 0 0 0 0 0 0
0 0 0 0 0 9 0 0 0 0
0 0 0 0 5 2 9 0 0 0
0 0 0 0 0 0 0 0 0 5
0 0 0 0 0 0 0 0 0 11
0 0 0 0 0 0 0 9 0 0
0 0 0 0 0 0 0 0 2 7
0 0 0 0 0 0 0 0 0 2
0 0 0 0 0 0 0 0 0 0
u = 0 8 15 10 0 0 0 0 0 0
0 0 0 7 0 0 0 0 0 0
0 0 0 6 0 9 0 0 0 0
0 0 0 0 6 10 9 0 0 0
0 4 0 0 0 0 0 0 0 5
0 0 0 0 0 0 0 0 0 11
0 0 0 0 0 0 0 18 0 0
0 0 0 0 0 0 0 0 12 7
0 0 0 0 0 0 13 0 0 15
0 0 0 0 0 0 0 0 0 0
實驗總結
通過本次實驗,我掌握了運用matlab對最大流問題進行程式設計和求解的方法,學到了很多知識。
師德師風建設反思張興巨集
長豐縣城關中學張興巨集 古人云 師者,所以傳道授業解惑!學高為師,身正為范!教師的職業是光榮而神聖的,同時教師的職業又是責性很強,且任務艱鉅。教師必須具備豐富的知識很良好的職業道德。師德,人們都願意將它解釋為教師的職業道德,是一種所有為師者均應遵守的行業規範,行為準則。在平日教書育人中需要我們付出很...
如何寫教學反思張興才
玄馬小學張興才 葉瀾教授曾指出 乙個教師寫一輩子教案不可能成為名師,如果乙個教師寫三年教學反思,就有可能成為名師。乙個好的教學反思是對教育教學事件的深入剖析,傳遞給人們一種價值選擇,以期引起自己或他人的思考。所以,教學反思的寫作是提高教師素質的重要途徑。反思,是教育科研的本質,更是教師專業發展的關鍵...
五年級數學教學計畫張興
2 使學生學會用字母表示數,表示常見的數量關係,初步理解方程的含義,會解簡易方程。3 探索並掌握平行四邊形 三角形和梯形面積的計算公式,會計算它們的面積。4 能辨認從不同方位看到的物體的形狀和相對公式。5 理解中位數的意義,會求資料的中位數。6 體驗事件發生的等可能性以及遊戲規則的公平,會求一些事件...