ผลต่างระหว่างรุ่นของ "418531 ภาคต้น 2552/โจทย์ปัญหาอัลกอริทึมเกี่ยวกับกราฟ/เฉลยข้อ 4.3"
ไปยังการนำทาง
ไปยังการค้นหา
Cardcaptor (คุย | มีส่วนร่วม) (หน้าที่ถูกสร้างด้วย 'ให้ <math>u \,</math> และ <math>v \,</math> เป็น vertex ใดๆ ในกราฟแล้ว เราจะได…') |
Cardcaptor (คุย | มีส่วนร่วม) |
||
(ไม่แสดง 4 รุ่นระหว่างกลางโดยผู้ใช้คนเดียวกัน) | |||
แถว 1: | แถว 1: | ||
ให้ <math>u \,</math> และ <math>v \,</math> เป็น vertex ใดๆ ในกราฟแล้ว เราจะได้ว่ามีความเป็นไปได้สองกรณีด้วยกัน คือ | ให้ <math>u \,</math> และ <math>v \,</math> เป็น vertex ใดๆ ในกราฟแล้ว เราจะได้ว่ามีความเป็นไปได้สองกรณีด้วยกัน คือ | ||
− | * | + | * DFS(u) ถูกเรียกให้ทำงานก่อน DFS(v) |
− | * | + | * DFS(v) ถูกเรียกให้ทำงานก่อน DFS(u) |
− | + | พิจารณากรณีที่ DFS(u) ถูกเรียกให้ทำงานก่อน DFS(v) ในกรณีนี้เราจะได้ว่า <math>\mathrm{pre}[u] < \mathrm{pre}[v] \,</math> และในกรณีนี้มีความเป็นไปได้สองกรณีด้วยกันคือ | |
− | + | # <math>\mathrm{post}[u] < \mathrm{pre}[v] \,</math> | |
+ | # <math>\mathrm{post}[u] > \mathrm{pre}[v] \,</math> | ||
+ | |||
+ | ในกรณีที่ 1 เราได้ว่า <math>\mathrm{pre}[u] < \mathrm{post}[u] < \mathrm{pre}[v] < \mathrm{post}[v] \,</math> | ||
+ | ซึ่งหมายความว่าช่วง <math>[\mathrm{pre}[u], \mathrm{post}[u]] \,</math> และช่วง <math>[\mathrm{pre}[v], \mathrm{post}[v]] \,</math> | ||
+ | ไม่มีสมาชิกร่วมกันเลย ซึ่งตรงกับข้อความหนึ่งในสามข้อในโจทย์ | ||
+ | |||
+ | ในกรณีที่ 2 เราได้ว่า <math>\mathrm{pre}[u] < \mathrm{pre}[v] < \mathrm{post}[u]\,</math> หมายความว่า DFS(v) ถูกเรียกให้ทำงานระหว่าง DFS(u) กำลังทำงานอยู่ | ||
+ | ฉะนั้น DFS(v) จะต้องทำงานเสร็จก่อน DFS(u) จะทำงานเสร็จ ด้วยเหตุนี้เราจะได้ว่า <math>\mathrm{post}[v] < \mathrm{post}[u] \,</math> กล่าวคือ | ||
+ | <math>\mathrm{pre}[u] < \mathrm{pre}[v] < \mathrm{post}[v] < \mathrm{post}[u] \,</math> ซึ่งตรงกับข้อความหนึ่งในสามข้อในโจทย์ | ||
+ | |||
+ | เราสามารถพิสูจน์กรณีที่ DFS(v) ถูกเรียกให้ทำงานก่อน DFS(u) ได้โดยการใช้เหตุผลแบบเดียวกับข้างบน เพียงแต่สลับบทบาทของ <math>u \,</math> กับ <math>v \,</math> เท่านั้น |
รุ่นแก้ไขปัจจุบันเมื่อ 13:43, 16 กันยายน 2552
ให้ และ เป็น vertex ใดๆ ในกราฟแล้ว เราจะได้ว่ามีความเป็นไปได้สองกรณีด้วยกัน คือ
- DFS(u) ถูกเรียกให้ทำงานก่อน DFS(v)
- DFS(v) ถูกเรียกให้ทำงานก่อน DFS(u)
พิจารณากรณีที่ DFS(u) ถูกเรียกให้ทำงานก่อน DFS(v) ในกรณีนี้เราจะได้ว่า และในกรณีนี้มีความเป็นไปได้สองกรณีด้วยกันคือ
ในกรณีที่ 1 เราได้ว่า ซึ่งหมายความว่าช่วง และช่วง ไม่มีสมาชิกร่วมกันเลย ซึ่งตรงกับข้อความหนึ่งในสามข้อในโจทย์
ในกรณีที่ 2 เราได้ว่า หมายความว่า DFS(v) ถูกเรียกให้ทำงานระหว่าง DFS(u) กำลังทำงานอยู่ ฉะนั้น DFS(v) จะต้องทำงานเสร็จก่อน DFS(u) จะทำงานเสร็จ ด้วยเหตุนี้เราจะได้ว่า กล่าวคือ ซึ่งตรงกับข้อความหนึ่งในสามข้อในโจทย์
เราสามารถพิสูจน์กรณีที่ DFS(v) ถูกเรียกให้ทำงานก่อน DFS(u) ได้โดยการใช้เหตุผลแบบเดียวกับข้างบน เพียงแต่สลับบทบาทของ กับ เท่านั้น