Miklix

ตัวสร้างเขาวงกตต้นไม้ที่เติบโต

ที่ตีพิมพ์: 16 กุมภาพันธ์ 2025 เวลา 21 นาฬิกา 38 นาที 15 วินาที UTC
ปรับปรุงล่าสุด : 6 มีนาคม 2025 เวลา 9 นาฬิกา 57 นาที 41 วินาที UTC

เครื่องกําเนิดเขาวงกตโดยใช้อัลกอริทึม Growing Tree เพื่อสร้างเขาวงกตที่สมบูรณ์แบบ อัลกอริทึมนี้มีแนวโน้มที่จะสร้างเขาวงกตที่คล้ายกับอัลกอริทึม Hunt and Kill แต่มีวิธีแก้ปัญหาทั่วไปที่ค่อนข้างแตกต่างออกไป

หน้าเพจนี้ได้รับการแปลจากเครื่องคอมพิวเตอร์จากภาษาอังกฤษ เพื่อให้ทุกคนเข้าถึงได้มากที่สุด น่าเสียดายที่การแปลด้วยเครื่องยังไม่ถือเป็นเทคโนโลยีที่สมบูรณ์แบบ จึงอาจเกิดข้อผิดพลาดได้ หากต้องการ คุณสามารถดูเวอร์ชันภาษาอังกฤษต้นฉบับได้ที่นี่:

Growing Tree Algorithm Maze Generator

อัลกอริทึม Growing Tree นั้นน่าสนใจ เพราะสามารถเลียนแบบพฤติกรรมของอัลกอริทึมอื่นๆ ได้หลายตัว ขึ้นอยู่กับว่าเซลล์ถัดไปถูกเลือกอย่างไรในระหว่างการสร้าง การใช้งานในหน้านี้ใช้วิธีการที่เหมือนคิวที่เน้นความกว้างก่อน

เขาวงกตที่สมบูรณ์แบบคือเขาวงกตที่มีเส้นทางเดียวจากจุดใดก็ได้ในเขาวงกตไปยังจุดใดก็ได้ นั่นหมายความว่าคุณไม่สามารถวนไปวนมาได้ แต่บ่อยครั้งที่คุณจะเจอทางตัน ซึ่งบังคับให้คุณต้องหันหลังกลับและเดินกลับไป

แผนที่เขาวงกตที่สร้างขึ้นที่นี่มีเวอร์ชันเริ่มต้นโดยไม่มีตำแหน่งเริ่มต้นและจุดสิ้นสุด ดังนั้นคุณจึงตัดสินใจเองได้: จะมีทางออกจากจุดใดก็ได้ในเขาวงกตไปยังจุดอื่นๆ หากคุณต้องการแรงบันดาลใจ คุณสามารถเปิดใช้งานตำแหน่งเริ่มต้นและจุดสิ้นสุดที่แนะนำได้ และดูทางออกระหว่างทั้งสองตำแหน่งได้ด้วย


สร้างเขาวงกตใหม่








เกี่ยวกับอัลกอริทึมต้นไม้ที่กําลังเติบโต

อัลกอริทึม Growing Tree เป็นวิธีที่ยืดหยุ่นและทรงพลังในการสร้างเขาวงกตที่สมบูรณ์แบบ อัลกอริทึมนี้น่าสนใจเพราะสามารถเลียนแบบพฤติกรรมของอัลกอริธึมการสร้างเขาวงกตอื่นๆ เช่น อัลกอริทึมของ Prim การย้อนกลับแบบเรียกซ้ํา และการแบ่งแบบเรียกซ้ํา ขึ้นอยู่กับว่าคุณเลือกเซลล์ถัดไปที่จะประมวลผลอย่างไร

อัลกอริทึมต้นไม้ที่กําลังเติบโตทํางานอย่างไร

ขั้นตอนที่ 1: การเริ่มต้น

  • เริ่มต้นด้วยตารางของเซลล์ที่ยังไม่ได้เยี่ยมชม
  • เลือกเซลล์เริ่มต้นแบบสุ่มและเพิ่มลงในรายการ

ขั้นตอนที่ 2: Maze Generation Loop

  • ในขณะที่รายการเซลล์ไม่ว่างเปล่า:
    • เลือกเซลล์จากรายการตามกลยุทธ์เฉพาะ (อธิบายด้านล่าง)
    • แกะสลักทางเดินจากเซลล์ที่เลือกไปยังเพื่อนบ้านที่ยังไม่ได้เยี่ยมชม (เลือกแบบสุ่ม)
    • เพิ่มเพื่อนบ้านในรายการเนื่องจากตอนนี้เป็นส่วนหนึ่งของเขาวงกต
    • ถ้าเซลล์ที่เลือกไม่มีเพื่อนบ้านที่ยังไม่ได้เยี่ยมชม ให้ลบเซลล์นั้นออกจากรายการ

ขั้นตอนที่ 3: การยกเลิก

  • อัลกอริทึมจะเสร็จสิ้นเมื่อไม่มีเซลล์อีกต่อไปในรายการ ซึ่งหมายความว่าเขาวงกตทั้งหมดถูกแกะสลักแล้ว

กลยุทธ์การเลือกเซลล์ (ความยืดหยุ่นของอัลกอริทึม)

คุณลักษณะที่กําหนดของอัลกอริทึม Growing Tree คือวิธีที่คุณเลือกเซลล์ที่จะประมวลผลต่อไป ตัวเลือกนี้ส่งผลต่อรูปลักษณ์ของเขาวงกตอย่างมาก:

เซลล์ใหม่ล่าสุด (พฤติกรรมเหมือนสแต็ก) – Recursive Backtracker:

  • เลือกเซลล์ที่เพิ่มล่าสุดเสมอ
  • สร้างทางเดินที่ยาวและคดเคี้ยวที่มีทางตันมากมาย (เช่น เขาวงกตการค้นหาที่เน้นความลึกเป็นอันดับแรก)
  • เขาวงกตมักจะมีทางเดินยาวและแก้ง่าย

เซลล์สุ่ม (อัลกอริทึมของ Random Prim):

  • เลือกเซลล์แบบสุ่มจากรายการในแต่ละครั้ง
  • สร้างเขาวงกตที่กระจายอย่างสม่ําเสมอมากขึ้นด้วยเส้นทางที่ซับซ้อนและพันกัน
  • ทางเดินยาวน้อยลงและแตกแขนงมากขึ้น

เซลล์ที่เก่าที่สุด (พฤติกรรมเหมือนคิว):

  • เลือกเซลล์ที่เก่าที่สุดในรายการเสมอ
  • สร้างเขาวงกตที่มีการแพร่กระจายที่สม่ําเสมอมากขึ้น เช่น รูปแบบการค้นหาที่เน้นความกว้างเป็นอันดับแรก
  • ทางเดินสั้นและเป็นพุ่มพร้อมการเชื่อมต่อที่หนาแน่น
  • (นี่คือเวอร์ชันที่นําไปใช้ที่นี่)

แนวทางไฮบริด:

รวมกลยุทธ์สําหรับลักษณะเขาวงกตที่หลากหลาย เช่น:

  • ใหม่ที่สุด 90%, สุ่ม 10%: ส่วนใหญ่ดูเหมือนเขาวงกตย้อนกลับแบบเรียกซ้ํา แต่มีกิ่งก้านเป็นครั้งคราวที่แยกทางเดินยาว
  • ใหม่ที่สุด 50%, เก่าที่สุด 50%: สร้างสมดุลระหว่างทางเดินยาวกับการเจริญเติบโตเป็นพุ่มไม้

แชร์บนบลูสกายแชร์บนเฟสบุ๊คแชร์บน LinkedInแชร์บน Tumblrแชร์บน Xแชร์บน LinkedInปักหมุดบน Pinterest

มิคเคล บัง คริสเตนเซ่น

เกี่ยวกับผู้เขียน

มิคเคล บัง คริสเตนเซ่น
ไมเคิล คือผู้สร้างและเจ้าของเว็บไซต์ miklix.com เขามีประสบการณ์เป็นโปรแกรมเมอร์/นักพัฒนาซอฟต์แวร์คอมพิวเตอร์มืออาชีพมากว่า 20 ปี และปัจจุบันทำงานเต็มเวลาให้กับบริษัทไอทีขนาดใหญ่แห่งหนึ่งในยุโรป เมื่อไม่ได้เขียนบล็อก เขาจะใช้เวลาว่างไปกับความสนใจ งานอดิเรก และกิจกรรมต่างๆ มากมาย ซึ่งในระดับหนึ่งอาจสะท้อนให้เห็นได้จากหัวข้อต่างๆ มากมายที่กล่าวถึงในเว็บไซต์นี้