ผลต่างระหว่างรุ่นของ "204512/บรรยาย 5"
ไปยังการนำทาง
ไปยังการค้นหา
Noonsri (คุย | มีส่วนร่วม) |
Noonsri (คุย | มีส่วนร่วม) |
||
แถว 70: | แถว 70: | ||
path นี้จะต้องข้าม <math>(X,\overline X)</math> จะมี <math>e' \in T</math> ที่ข้าม cut <math>(X,\overline X)</math><br> | path นี้จะต้องข้าม <math>(X,\overline X)</math> จะมี <math>e' \in T</math> ที่ข้าม cut <math>(X,\overline X)</math><br> | ||
'''Claim''' <br> | '''Claim''' <br> | ||
+ | :ให้ <math>T = T \cup \{ e\} - \{ e'\}</math> T' เป็น Minimum Spanning Tree<br> | ||
+ | '''Proof'''<br> | ||
+ | :1)T' ไม่มี Cycle T' เป็น tree และวิ่งผ่านทุกโหนดในกราฟ | ||
+ | :2)T' Connected เป็น tree และวิ่งผ่านทุกโหนดในกราฟ | ||
+ | :เราทราบว่า e มีน้ำหนักน้อยสุดใน cut<math>(X,\overline X)</math> | ||
+ | :น้ำหนัก <math>e \le </math> น้ำหนักของ e' imply ว่า น้ำหนักของ <math>T' \le </math>น้ำหนักของ T | ||
+ | :นั่นคือ invariant ยังจริงอยู่หลังทำ Blue rule<br> | ||
[[ภาพ:MST8.png]]<br /> | [[ภาพ:MST8.png]]<br /> | ||
+ | '''Red rule'''<br> | ||
+ | :ให้ทำ red rule ให้ edge <math>e \in (u,v)</math> เป็นสีแดงบน Cycle C | ||
+ | :ถ้า <math>e \notin T</math> assume <math>e \in T'</math> ดังรูป | ||
[[ภาพ:MST9.png]]<br /> | [[ภาพ:MST9.png]]<br /> | ||
[[ภาพ:MST10.png]]<br /> | [[ภาพ:MST10.png]]<br /> |
รุ่นแก้ไขเมื่อ 04:13, 11 กรกฎาคม 2550
เนื้อหา
ทบทวน
Graph
เซตของโหนด
เซตของเส้นเชื่อม
ตัวอย่าง
- จะกล่าวว่าเส้นเชื่อม (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 ที่มีจุดเริ่มต้นเป็นจุดเดียวกับจุดสิ้นสุด ดังรูป
Def. tree คือ กราฟที่ Connected และไม่มี Cycle
Thm. ข้อความข้างล่างนี้ให้ G มี n node
- 1) G Connected
- 2) G ไม่มี Cycle
- 3) G มีเส้นเชื่อม n-1 เส้น
- 2 ข้อใดๆ จะ imply ข้อที่ 3 และ imply ว่า G เป็น tree
- 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 ถ้า
ปัญหา minimum spanning tree
- ให้กราฟ G = (V,E) พร้อมด้วยฟังก์ชั่นน้ำหนัก w บนเส้นเชื่อม ต้องการหา spanning tree
T ที่ผลรวมของ weight บนเส้นเชื่อมน้อยที่สุด
Greedy framework
- ทุกๆ เส้นเชื่อมจะมี
- ไม่มีสี(unknow)
- สีน้ำเงิน(accept)
- สีแดง(reject)
Invariant
- จะมี minimum spanning tree ที่มีเส้นเชื่อมสีน้ำเงินทั้งหมดและไม่มีเส้นเชื่อมสีแดง
cut คือ partition ของเซตของโหนดออกเป็นสองส่วน
- เส้นเชื่อม e ข้าม Cut ถ้าจุดปลายด้านหนึ่งของ edge อยู่ใน X อีกช่วงอยู่ใน
Blue Rule และ Red Rule
- blue rule พิจารณา Cut ใดๆ ที่ไม่มีเส้นเชื่อมสีน้ำเงินข้าม cut นั้น เลือกเส้นเชื่อมที่มีน้ำหนักน้อยสุด และให้ e มีสีน้ำเงิน
- red rule พิจารณา Cycle ใดๆ ที่ไม่มี edge สีแดงอยู่เลือกเส้น e ที่น้ำหนักมากสุดให้ e มีสีแดง
- สามารถทำตาม blue rule/red rule ได้จนกระทั่งทุกๆ edge มีสีและตลอดการทำงาน invariant เป็นจริง
Proof
- เมื่อเริ่มต้น (ทุกๆ edge ไม่มีสี)ทุกๆ เส้นเชื่อมไม่มีสี invariant เป็นจริง
- assume ว่า invariant จริงมี minimum spanning tree ตาม invariant
blue rule ถ้า apply blue rule กับ edge e,บน cut ถ้า assume ว่า ดังรูป
- เนื่องจาก T เป็น Spanning tree มี path จาก u ไป v บน T
path นี้จะต้องข้าม จะมี ที่ข้าม cut
Claim
- ให้ T' เป็น Minimum Spanning Tree
Proof
- 1)T' ไม่มี Cycle T' เป็น tree และวิ่งผ่านทุกโหนดในกราฟ
- 2)T' Connected เป็น tree และวิ่งผ่านทุกโหนดในกราฟ
- เราทราบว่า e มีน้ำหนักน้อยสุดใน cut
- น้ำหนัก น้ำหนักของ e' imply ว่า น้ำหนักของ น้ำหนักของ T
- นั่นคือ invariant ยังจริงอยู่หลังทำ Blue rule
- ให้ทำ red rule ให้ edge เป็นสีแดงบน Cycle C
- ถ้า assume ดังรูป