ผลต่างระหว่างรุ่นของ "418531 ภาคต้น 2552/โจทย์ปัญหาอัลกอริทึมเกี่ยวกับกราฟ/เฉลยข้อ 4.3"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
 
แถว 1: แถว 1:
 
ให้ <math>u \,</math> และ <math>v \,</math> เป็น vertex ใดๆ ในกราฟแล้ว เราจะได้ว่ามีความเป็นไปได้สองกรณีด้วยกัน คือ
 
ให้ <math>u \,</math> และ <math>v \,</math> เป็น vertex ใดๆ ในกราฟแล้ว เราจะได้ว่ามีความเป็นไปได้สองกรณีด้วยกัน คือ
  
* DFSALL(u) ถูกเรียกให้ทำงานก่อน DFSALL(v)
+
* DFS(u) ถูกเรียกให้ทำงานก่อน DFS(v)
* DFSALL(v) ถูกเรียกให้ทำงานก่อน DFSALL(u)
+
* DFS(v) ถูกเรียกให้ทำงานก่อน DFS(u)
  
พิจารณากรณีที่ DFSALL(u) ถูกเรียกให้ทำงานก่อน DFSALL(v) ในกรณีนี้เราจะได้ว่า <math>\mathrm{pre}[u] < \mathrm{pre}[v] \,</math> และในกรณีนี้มีความเป็นไปได้สองกรณีด้วยกันคือ
+
พิจารณากรณีที่ 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>  
แถว 13: แถว 13:
 
ไม่มีสมาชิกร่วมกันเลย ซึ่งตรงกับข้อความหนึ่งในสามข้อในโจทย์
 
ไม่มีสมาชิกร่วมกันเลย ซึ่งตรงกับข้อความหนึ่งในสามข้อในโจทย์
  
ในกรณีที่ 2 เราได้ว่า <math>\mathrm{pre}[u] < \mathrm{pre}[v] < \mathrm{post}[u]\,</math> หมายความว่า DFSALL(v) ถูกเรียกให้ทำงานระหว่าง DFSALL(u) กำลังทำงานอยู่
+
ในกรณีที่ 2 เราได้ว่า <math>\mathrm{pre}[u] < \mathrm{pre}[v] < \mathrm{post}[u]\,</math> หมายความว่า DFS(v) ถูกเรียกให้ทำงานระหว่าง DFS(u) กำลังทำงานอยู่
ฉะนั้น DFSALL(v) จะต้องทำงานเสร็จก่อน DFSALL(u) จะทำงานเสร็จ ด้วยเหตุนี้เราจะได้ว่า <math>\mathrm{post}[v] < \mathrm{post}[u] \,</math> กล่าวคือ  
+
ฉะนั้น 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> ซึ่งตรงกับข้อความหนึ่งในสามข้อในโจทย์
 
<math>\mathrm{pre}[u] < \mathrm{pre}[v] < \mathrm{post}[v] < \mathrm{post}[u] \,</math> ซึ่งตรงกับข้อความหนึ่งในสามข้อในโจทย์
  
เราสามารถพิสูจน์กรณีที่ DFSALL(v) ถูกเรียกให้ทำงานก่อน DFSALL(u) ได้โดยการใช้เหตุผลแบบเดียวกับข้างบน เพียงแต่สลับบทบาทของ <math>u \,</math> กับ <math>v \,</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) ได้โดยการใช้เหตุผลแบบเดียวกับข้างบน เพียงแต่สลับบทบาทของ กับ เท่านั้น