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

จาก Theory Wiki
รุ่นแก้ไขเมื่อ 14:02, 16 กันยายน 2552 โดย Cardcaptor (คุย | มีส่วนร่วม)
(ต่าง) ←รุ่นแก้ไขก่อนหน้า | รุ่นแก้ไขล่าสุด (ต่าง) | รุ่นแก้ไขถัดไป→ (ต่าง)
ไปยังการนำทาง ไปยังการค้นหา

สมมติว่า เป็น vertex และให้ เป็นลูกของ เราจะได้ว่า

ฉะนั้นเราสามารถหาค่า สำหรับทุก vertex โดยการปรับปรุง ใหม่ เพื่อให้หลังจาก ทำงานเสร็จแล้ว จะมีค่าถูกต้อง ดังต่อไปนี้

<geshi lang="c"> DFS(u) {

   explored[u] = 1
   z[u] = x[u]
   
   for i = 1 to d[u] do
   {
       v = a[u][i]
       if explored[v] = 0 then
           DFS(v)
       if z[v] > z[u] then
           z[u] = z[v]
   }    

} </geshi>

การหาค่า ของ vertex ทั้งหมดทำได้โดยการรัน ซึ่งทำงานในเวลา ตามต้องการ