資訊133張興

2022-12-04 07:03:05 字數 3414 閱讀 6245

實驗目的: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 體驗事件發生的等可能性以及遊戲規則的公平,會求一些事件...