องค์ประกอบเดียวของการค้นหาความลึกครั้งแรกที่คุณปรับแต่งคือลำดับการตรวจสอบเด็ก รุ่นปกติจะดำเนินการตามลำดับโดยพลการนั่นคือตามลำดับที่เก็บลูกไว้
ทางเลือกเดียวที่เป็นไปได้ (ไปยังเส้นทางที่สั้นที่สุด) ที่ฉันสามารถทำได้คือวิธีโลภที่มองเด็กตามลำดับระยะทางจากโหนดปัจจุบัน (จากเล็กไปใหญ่) มันง่ายที่จะสร้างตัวอย่างของกฎสำหรับกฎนี้:
[ แหล่งที่มา ]
ตอนนี้ไม่มีข้อพิสูจน์ว่าไม่มีกลยุทธ์ในการเลือกลูกคนถัดไปที่จะทำการสอบสวนซึ่งจะทำให้ DFS ค้นหาเส้นทางที่สั้นที่สุด
อย่างไรก็ตามไม่ว่ากฎจะเป็นอย่างไรคุณสามารถสร้างกราฟที่มี DFS ส่งไปยังทางอ้อมที่โหนดแรกนานเหมือนที่ฉันทำกับกฎโลภ ขอบกำหนดและน้ำหนักเช่นว่า Chooses กฎในการเยี่ยมชมแรกและกำหนดมากขึ้นน้ำหนักมากกว่าหนึ่งของt) ดังนั้นจึงเป็นไปได้ที่ DFS ไม่สามารถหาเส้นทางที่สั้นที่สุด (ในกราฟทั่วไป)( s , a ) a ( a , b ) ( s , t )(s,t)(s,a)a(a,b)(s,t)
โปรดทราบว่าเนื่องจากคุณสามารถแสดงกราฟถ่วงน้ำหนักทุกจำนวน (บวก - จำนวนเต็ม) เป็นกราฟที่ไม่ถ่วงน้ำหนัก - เพียงแค่แทนที่ขอบด้วยค่าใช้จ่ายด้วยสายโซ่ที่มีโหนด - ตัวอย่างเดียวกันจัดการกับ DFS บนกราฟที่ไม่ถ่วง ที่นี่สถานการณ์เป็นจริงยิ่งเยือกเย็น: ไม่มีน้ำหนัก DFS สามารถใช้อะไรในการพิจารณาเด็กคนต่อไปที่จะเยี่ยมชมc - 1cc−1
- ตราบเท่าที่กฎนั้นถูกกำหนดไว้แล้ว ถ้ามันไม่ได้ก็สามารถไม่ชัดเจนเสมอหาเส้นทางที่สั้นที่สุด