ผลต่างระหว่างรุ่นของ "204512/บรรยาย 7"
แถว 8: | แถว 8: | ||
i) สำหรับทุกๆคู่ u,v : <math>f(u,v) \le cap(u,v)</math> [Capacity Constraint]<br> | i) สำหรับทุกๆคู่ u,v : <math>f(u,v) \le cap(u,v)</math> [Capacity Constraint]<br> | ||
ii)สำหรับทุกๆ u,v : f(u,v) = -f(u,v) [Skew Symmetry]<br> | ii)สำหรับทุกๆ u,v : f(u,v) = -f(u,v) [Skew Symmetry]<br> | ||
− | iii)สำหรับทุกๆ u ∉ {s,t}, | + | iii)สำหรับทุกๆ u ∉ {s,t},∑f(u,v)=0 [Flow conservation Constraint]<br> |
− | ขนาดของ flow f ,|f|, คือ<br> | + | <u>ขนาดของ flow f</u> ,|f|, คือ<br> |
− | + | ∑f(s,v)<br> | |
<br> | <br> | ||
มี Flow s-t<br> | มี Flow s-t<br> | ||
− | จะเรียก (x, | + | จะเรียก (x,\bar{x})ว่าเป็น s-t cut ถ้า s ∈ x,t ∈ \bar{x} และ \bar{x}=v-x<br> |
− | สำหรับ cut(x, | + | สำหรับ cut(x,\bar{x}),f(x,\bar{x})= ∑∑f(u,v)<br> |
<br> | <br> | ||
− | '''Lemma''' : สำหรับทุกๆ s-t cut ( | + | '''<u>Lemma</u>''' : สำหรับทุกๆ s-t cut (x,\bar{x}),f(x,\bar{x})=|f|<br> |
− | '''Proof''' : | + | '''<u>Proof</u>''' : f(x,\bar{x}) = ∑∑f(u,v) <br> |
+ | :::= ∑∑f(u,v)-∑∑f(u,v)<br> | ||
+ | :::= ∑f(s,v)=|f|<br> | ||
+ | <br> | ||
flow ที่หน้าตัดใดๆ เท่ากับ Flow ที่ออกจาก soure นั้นๆ<br> | flow ที่หน้าตัดใดๆ เท่ากับ Flow ที่ออกจาก soure นั้นๆ<br> | ||
<br> | <br> | ||
− | สำหรับ cut () ใด ๆ ให้ | + | สำหรับ cut (x,\bar{x}) ใด ๆ ให้ cap(x,\bar{x}) = ∑∑cap(u,v)<br> |
<br> | <br> | ||
− | '''Lemma''' : สำหรับ s-t cut()ใดๆ และ flow f ใดๆ <br> | + | '''<u>Lemma</u>''' : สำหรับ s-t cut (x,\bar{x})ใดๆ และ flow f ใดๆ <br> |
− | ::|f| = <math>f(x, | + | ::|f| = <math>f(x,\bar{x})\le cap(x,\bar{x})</math><br> |
− | '''Proof''' : ลองคิดเอง???<br> | + | '''<u>Proof</u>''' : ลองคิดเอง???<br> |
− | สำหรับ flow f , capacity บนเส้นเชื่อม (u,v) ใน Residual graph | + | สำหรับ flow f , capacity บนเส้นเชื่อม (u,v) ใน Residual graph R<sub>f</sub> ของ f เท่ากับ <br> |
− | + | ::cap(u,v)-f(u,v)≡ r<sub>f</sub>(u,v)<br> | |
− | ให้ | + | ให้ R<sub>f</sub> มีเฉพาะเส้นเชื่อมที่มี capacity เป็นบวก <br> |
flow f เป็น maximum flow ถ้า |f| มากที่สุด<br> | flow f เป็น maximum flow ถ้า |f| มากที่สุด<br> | ||
− | '''Lemma''' : ถ้า f* เป็น maximum flow, f เป็น flow ใดๆ แล้ว f'=f*-f จะเป็น flow ใน | + | '''<u>Lemma</u>''' : ถ้า f* เป็น maximum flow, f เป็น flow ใดๆ แล้ว <br> |
− | '''Proof''' : ตรวจสอบ capacity constraint พิจารณา (u,v)<br> | + | :::f'=f*-f จะเป็น flow ใน R<sub>f</sub> เมื่อ f'(x,y)=(f*-f)(x,y)=f*(x,y)-f(x,y)<br> |
− | :::f'(u,v)=f*(u,v)-f(u,v)<=cap(u,v)-f(u,v) = | + | '''<u>Proof</u>''' : check : capaciy constraint ∀ ∪ v , f(u,v)\le cap(u,v)<br> |
+ | :::skew symmetry ∀ ∪ v , f(u,v)= - f(v,u)<br> | ||
+ | :::conservation ∀ v ∉ {s,t}, ∑f(v,w)=ø<br> | ||
+ | |||
+ | :ตรวจสอบ capacity constraint พิจารณา (u,v)<br> | ||
+ | :::f'(u,v)=f*(u,v)-f(u,v)<=cap(u,v)-f(u,v) = r<sub>f</sub>(u,v)<br> | ||
+ | |||
+ | ===Flow Augmenting Step=== | ||
+ | |||
+ | เรียก path ใน R<sub>f</sub> จาก s ไป t ว่าเป็น augmenting path <br> | ||
+ | :1. f <- ø | ||
+ | :2. คำนวณ R<sub>f</sub> | ||
+ | :3. หา augmenting path P ∈ R<sub>f</sub> | ||
+ | :4. ถ้าหาไม่ได้ จบ | ||
+ | :5. ให้ C = min r<sub>f</sub>(e) | ||
+ | :6. ปรับค่า f ด้วย flow บน path p ที่มีขนาด C | ||
+ | :7. กลับไป step2 | ||
==Flow Augmenting Step== | ==Flow Augmenting Step== |
รุ่นแก้ไขเมื่อ 04:31, 27 กรกฎาคม 2550
Network Flows
........
ให้กราฟมีทิศทาง
ฟังก์ชันความจุ cap : VxV -> R+ และ s,t ∈ V
ฟังก์ชัน f : จะเรียกว่าเป็น flow
ถ้า
i) สำหรับทุกๆคู่ u,v : [Capacity Constraint]
ii)สำหรับทุกๆ u,v : f(u,v) = -f(u,v) [Skew Symmetry]
iii)สำหรับทุกๆ u ∉ {s,t},∑f(u,v)=0 [Flow conservation Constraint]
ขนาดของ flow f ,|f|, คือ
∑f(s,v)
มี Flow s-t
จะเรียก (x,\bar{x})ว่าเป็น s-t cut ถ้า s ∈ x,t ∈ \bar{x} และ \bar{x}=v-x
สำหรับ cut(x,\bar{x}),f(x,\bar{x})= ∑∑f(u,v)
Lemma : สำหรับทุกๆ s-t cut (x,\bar{x}),f(x,\bar{x})=|f|
Proof : f(x,\bar{x}) = ∑∑f(u,v)
- = ∑∑f(u,v)-∑∑f(u,v)
- = ∑f(s,v)=|f|
- = ∑∑f(u,v)-∑∑f(u,v)
flow ที่หน้าตัดใดๆ เท่ากับ Flow ที่ออกจาก soure นั้นๆ
สำหรับ cut (x,\bar{x}) ใด ๆ ให้ cap(x,\bar{x}) = ∑∑cap(u,v)
Lemma : สำหรับ s-t cut (x,\bar{x})ใดๆ และ flow f ใดๆ
- |f| =
- |f| =
Proof : ลองคิดเอง???
สำหรับ flow f , capacity บนเส้นเชื่อม (u,v) ใน Residual graph Rf ของ f เท่ากับ
- cap(u,v)-f(u,v)≡ rf(u,v)
- cap(u,v)-f(u,v)≡ rf(u,v)
ให้ Rf มีเฉพาะเส้นเชื่อมที่มี capacity เป็นบวก
flow f เป็น maximum flow ถ้า |f| มากที่สุด
Lemma : ถ้า f* เป็น maximum flow, f เป็น flow ใดๆ แล้ว
- f'=f*-f จะเป็น flow ใน Rf เมื่อ f'(x,y)=(f*-f)(x,y)=f*(x,y)-f(x,y)
- f'=f*-f จะเป็น flow ใน Rf เมื่อ f'(x,y)=(f*-f)(x,y)=f*(x,y)-f(x,y)
Proof : check : capaciy constraint ∀ ∪ v , f(u,v)\le cap(u,v)
- skew symmetry ∀ ∪ v , f(u,v)= - f(v,u)
- conservation ∀ v ∉ {s,t}, ∑f(v,w)=ø
- skew symmetry ∀ ∪ v , f(u,v)= - f(v,u)
- ตรวจสอบ capacity constraint พิจารณา (u,v)
- f'(u,v)=f*(u,v)-f(u,v)<=cap(u,v)-f(u,v) = rf(u,v)
- f'(u,v)=f*(u,v)-f(u,v)<=cap(u,v)-f(u,v) = rf(u,v)
Flow Augmenting Step
เรียก path ใน Rf จาก s ไป t ว่าเป็น augmenting path
- 1. f <- ø
- 2. คำนวณ Rf
- 3. หา augmenting path P ∈ Rf
- 4. ถ้าหาไม่ได้ จบ
- 5. ให้ C = min rf(e)
- 6. ปรับค่า f ด้วย flow บน path p ที่มีขนาด C
- 7. กลับไป step2
Flow Augmenting Step
เรียก path ใน Rf จาก s ไป t ว่าเป็น augmenting path
- 1. f<-0
- 2. คำนวณ Rf
- 3. หา augmenting path ...
- 4. ถ้าหาไม่ได้ จบ
- 5. ให้ C = ....
- 6. ปรับค่า f ด้วย flow บน path p ที่มีขนาด C
- 7. กลับไป step2