ความแตกต่างระหว่าง BFS และ DFS ความแตกต่างระหว่าง

Anonim

BFS กับ DFS

Breadth First Search (หรือที่เรียกว่า BFS) เป็นวิธีการค้นหาที่ใช้เพื่อขยายโหนดทั้งหมดของ a กราฟเฉพาะ มันสำเร็จงานนี้โดยการค้นหาทุกโซลูชันเดียวเพื่อตรวจสอบและขยายโหนดเหล่านี้ (หรือการรวมกันของลำดับในนั้น) ดังนั้น BFS จึงไม่ใช้อัลกอริธึม heuristic (หรืออัลกอริทึมที่ค้นหาโซลูชันผ่านหลาย ๆ สถานการณ์) หลังจากได้รับโหนดแล้วจะมีการเพิ่มคิวที่เรียกว่า First In, First Out คิว โหนดเหล่านั้นที่ยังไม่ได้สำรวจคือ "เก็บ" ในคอนเทนเนอร์ที่มีเครื่องหมาย 'เปิด' เมื่อสำรวจพวกเขาจะถูกส่งไปยังภาชนะที่มีเครื่องหมาย 'ปิด'

(หรือที่เรียกว่า DFS) คือวิธีการค้นหาที่เจาะลึกเข้าไปในโหนดย่อยของการค้นหาจนกว่าจะถึงเป้าหมาย (หรือจนกว่าจะมีโหนดใด ๆ โดยไม่มีการเรียงสับเปลี่ยนอื่น ๆ หรือ ' เด็ก) หลังจากพบเป้าหมายหนึ่งแล้วการค้นหากลับไปยังโหนดก่อนหน้าซึ่งใช้วิธีแก้ปัญหาแล้วทำซ้ำขั้นตอนจนกว่าจะค้นหาโหนดทั้งหมด ดังนั้นโหนดจึงยังคงถูกนำมาใช้เพื่อการสำรวจต่อไปซึ่งเรียกว่าการดำเนินการที่ไม่ใช่แบบทับซ้อน

คุณลักษณะของ BFS คือความซับซ้อนของพื้นที่และเวลาความสมบูรณ์ความสมบูรณ์และความสมบูรณ์ ความซับซ้อนของพื้นที่หมายถึงสัดส่วนของจำนวนโหนดในระดับที่ลึกที่สุดของการค้นหา ความซับซ้อนของเวลาหมายถึงจำนวนเวลาที่แท้จริงของ 'เวลา' ที่ใช้สำหรับการพิจารณาเส้นทางทุกโหนดจะใช้เวลาในการค้นหา ความครบถ้วนเป็นหลักการค้นหาที่พบโซลูชันในกราฟโดยไม่คำนึงถึงชนิดของกราฟ หลักฐานของความสมบูรณ์คือระดับที่ตื้นที่สุดที่เป้าหมายพบได้ในโหนดที่ความลึกแน่นอน สุดท้าย optimality หมายถึง BFS ที่ไม่ได้ถ่วงน้ำหนัก - นั่นคือกราฟที่ใช้สำหรับค่าใช้จ่ายต่อหน่วย

DFS เป็นผลผลิตที่เป็นธรรมชาติมากที่สุดโดยใช้ต้นไม้ทอดซึ่งเป็นต้นไม้ที่สร้างขึ้นจากจุดยอดทั้งหมดและขอบบางส่วนในกราฟที่ไม่ได้รับการชี้แนะ ในรูปแบบนี้กราฟจะแบ่งออกเป็นสามชั้น: ขอบไปข้างหน้าชี้จากโหนดไปยังโหนดลูก ขอบหลังชี้จากโหนดไปยังโหนดก่อนหน้า และข้ามขอบซึ่งไม่ได้ทำอย่างใดอย่างหนึ่งเหล่านี้

สรุป:

1. BFS ค้นหาทุกๆโซลูชันเดียวในกราฟเพื่อขยายโหนด DFS โพรงลึกภายในโหนดลูกจนกว่าเป้าหมายจะถึง

2 คุณลักษณะของ BFS คือความซับซ้อนของพื้นที่และเวลาความสมบูรณ์หลักฐานของความสมบูรณ์และ optimality; ผลลัพธ์ที่เป็นธรรมชาติที่สุดสำหรับ DFS เป็นโครงแบบ spanning tree ที่มีสามคลาส: ขอบข้างขอบด้านหลังและขอบด้านข้าง