ผลต่างระหว่างรุ่นของ "204512/บรรยาย 5"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 65: แถว 65:
 
:เมื่อเริ่มต้น (ทุกๆ edge ไม่มีสี)ทุกๆ เส้นเชื่อมไม่มีสี invariant เป็นจริง
 
:เมื่อเริ่มต้น (ทุกๆ edge ไม่มีสี)ทุกๆ เส้นเชื่อมไม่มีสี invariant เป็นจริง
 
:assume ว่า invariant จริงมี minimum spanning tree ตาม invariant
 
:assume ว่า invariant จริงมี minimum spanning tree ตาม invariant
'''blue rule''' ถ้า apply blue rule กับ edge e,บน cut<math>(X,</math>
+
'''blue rule''' ถ้า apply blue rule กับ edge e,บน cut<math>(X,\overline X)</math> ถ้า <math>e \in T</math> assume ว่า <math>e \notin T</math> ดังรูป
 
 
 
[[ภาพ:MST7.png]]<br />
 
[[ภาพ:MST7.png]]<br />
 +
:เนื่องจาก T เป็น Spanning tree มี path จาก u ไป v บน T <br>
 +
path นี้จะต้องข้าม <math>(X,\overline X)</math> จะมี <math>e' \in T</math> ที่ข้าม cut <math>(X,\overline X)</math><br>
 +
'''Claim''' <br>
 
[[ภาพ:MST8.png]]<br />
 
[[ภาพ:MST8.png]]<br />
 
[[ภาพ:MST9.png]]<br />
 
[[ภาพ:MST9.png]]<br />

รุ่นแก้ไขเมื่อ 03:51, 11 กรกฎาคม 2550

ทบทวน

Graph

เซตของโหนด
เซตของเส้นเชื่อม
ตัวอย่าง
MST1.png

จะกล่าวว่าเส้นเชื่อม (u,v) ติดกับโหนด u และ v
u และ v เป็นจุดปลายของเส้นเชื่อม (u,v)
degree ของโหนดใดๆ คือ จำนวนเส้นเชื่อมที่ติดกับโหนดนี้
path คือ ลำดับของโหนด ที่
สำหรับทุกๆ เรียก เป็นจุดเริ่มต้น , เป็นจุดสิ้นสุด

Thm

ถ้ากราฟ มี m edge ให้ deg(u) แทน degree ของโหนด u

Def

กราฟ G Connected ถ้าทุกๆ โหนด u มี path ไปยังทุกๆ โหนด v

เป็น connected coponent ใน G ตัว ทุกๆ โหนดใน C มี path ไปถึงทุกๆ โหนดใน C และ
ไม่มี path ไปยังโหนด v อื่นๆ ที่
Cycle คือ path ที่มีจุดเริ่มต้นเป็นจุดเดียวกับจุดสิ้นสุด ดังรูป
MST2.png
Def. tree คือ กราฟที่ Connected และไม่มี Cycle
Thm. ข้อความข้างล่างนี้ให้ G มี n node

1) G Connected
2) G ไม่มี Cycle
3) G มีเส้นเชื่อม n-1 เส้น
2 ข้อใดๆ จะ imply ข้อที่ 3 และ imply ว่า G เป็น tree

Proof (1,2-->3)

(I) ถ้า G Connected,G จะต้องมีอย่างน้อย n-1 edge
(II) ถ้า G มี edge G มี Cycle
เพราะฉะนั้น G ไม่มี Cycle , G มี edge

Spanning tree

ให้กราฟ G = (V,E) เรียก tree ว่าเป็น spanning tree ถ้า

MST3.png


ปัญหา minimum spanning tree

ให้กราฟ G = (V,E) พร้อมด้วยฟังก์ชั่นน้ำหนัก w บนเส้นเชื่อม ต้องการหา spanning tree

T ที่ผลรวมของ weight บนเส้นเชื่อมน้อยที่สุด
MST4.png


Greedy framework

ทุกๆ เส้นเชื่อมจะมี
  • ไม่มีสี(unknow)
  • สีน้ำเงิน(accept)
  • สีแดง(reject)

Invariant

จะมี minimum spanning tree ที่มีเส้นเชื่อมสีน้ำเงินทั้งหมดและไม่มีเส้นเชื่อมสีแดง

cut คือ partition ของเซตของโหนดออกเป็นสองส่วน
MST5.png

เส้นเชื่อม e ข้าม Cut ถ้าจุดปลายด้านหนึ่งของ edge อยู่ใน X อีกช่วงอยู่ใน

Blue Rule และ Red Rule

blue rule พิจารณา Cut ใดๆ ที่ไม่มีเส้นเชื่อมสีน้ำเงินข้าม cut นั้น เลือกเส้นเชื่อมที่มีน้ำหนักน้อยสุด และให้ e มีสีน้ำเงิน
red rule พิจารณา Cycle ใดๆ ที่ไม่มี edge สีแดงอยู่เลือกเส้น e ที่น้ำหนักมากสุดให้ e มีสีแดง

ตัวอย่าง
MST6.png
Thm.

สามารถทำตาม blue rule/red rule ได้จนกระทั่งทุกๆ edge มีสีและตลอดการทำงาน invariant เป็นจริง

Proof

เมื่อเริ่มต้น (ทุกๆ edge ไม่มีสี)ทุกๆ เส้นเชื่อมไม่มีสี invariant เป็นจริง
assume ว่า invariant จริงมี minimum spanning tree ตาม invariant

blue rule ถ้า apply blue rule กับ edge e,บน cut ถ้า assume ว่า ดังรูป MST7.png

เนื่องจาก T เป็น Spanning tree มี path จาก u ไป v บน T

path นี้จะต้องข้าม จะมี ที่ข้าม cut
Claim
MST8.png
MST9.png
MST10.png


Blue Forest

MST11.png


Buruvka

MST12.png
MST13.png
MST14.png


Prim's Algorithm

MST15.png


Kruskal's Alogorithm

MST16.png
MST17.png
MST18.png
MST19.png
MST20.png


Path Compress
MST21.png
MST22.png