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

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
 
แถว 19: แถว 19:
 
}
 
}
 
</geshi>
 
</geshi>
 +
 +
การหาค่า <math>z[u] \,</math> ของ vertex <math>u \,</math> ทั้งหมดทำได้โดยการรัน <math>\mathrm{DFS}(r) \,</math> ซึ่งทำงานในเวลา <math>O(|V| + |E|) \,</math> ตามต้องการ

รุ่นแก้ไขปัจจุบันเมื่อ 14:02, 16 กันยายน 2552

สมมติว่า เป็น 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 ทั้งหมดทำได้โดยการรัน ซึ่งทำงานในเวลา ตามต้องการ