ฉันพยายามที่จะสร้างกราฟกำกับแบบสุ่มเพื่อจุดประสงค์ในการสร้างเกมไขปริศนาคล้ายกับปริศนาเลื่อนน้ำแข็งจากโปเกมอน
นี้เป็นหลักสิ่งที่ฉันต้องการที่จะสามารถสร้างแบบสุ่ม: http://bulbanews.bulbagarden.net/wiki/Crunching_the_numbers:_Graph_theory
ฉันต้องสามารถ จำกัด ขนาดของกราฟในมิติ x และ y ได้ ในตัวอย่างที่ให้ไว้ในลิงค์มันจะถูก จำกัด ไว้ที่ตาราง 8x4
ปัญหาที่ฉันพบคือการสร้างกราฟแบบสุ่ม แต่สร้างกราฟแบบสุ่มซึ่งฉันสามารถแมปพื้นที่ในพื้นที่ 2 มิติได้อย่างเหมาะสมเนื่องจากฉันต้องการบางสิ่ง (เช่นก้อนหิน) ที่อยู่ฝั่งตรงข้ามของโหนดเพื่อทำให้เกิด มองเห็นได้ชัดเจนเมื่อคุณหยุดเลื่อน ปัญหาเกี่ยวกับเรื่องนี้คือบางครั้งก้อนหินจะสิ้นสุดลงในเส้นทางระหว่างสองโหนดอื่น ๆ หรืออาจเกิดขึ้นกับโหนดอื่นเองซึ่งทำให้กราฟทั้งหมดแตกหัก
หลังจากพูดคุยปัญหากับคนไม่กี่คนที่ฉันรู้จักเรามาถึงข้อสรุปที่อาจนำไปสู่การแก้ปัญหา
- รวมถึงอุปสรรคในตารางเป็นส่วนหนึ่งของกราฟเมื่อสร้างมัน
- เริ่มต้นด้วยกริดที่เต็มไปอย่างสมบูรณ์และเพียงแค่วาดเส้นทางสุ่มและลบบล็อกที่จะทำให้เส้นทางนั้นทำงาน
จากนั้นปัญหาก็จะกลายเป็นสิ่งที่คนที่จะลบเพื่อหลีกเลี่ยงการแนะนำเส้นทางเพิ่มเติมที่สั้นกว่า เรายังคิดว่าอัลกอริทึมการเขียนโปรแกรมแบบไดนามิกอาจเป็นประโยชน์แม้ว่าเราไม่มีใครมีฝีมือเกินไปในการสร้างอัลกอริทึมการเขียนโปรแกรมแบบไดนามิกจากอะไร แนวคิดหรือการอ้างอิงใด ๆ เกี่ยวกับปัญหาที่เรียกว่าเป็นทางการ (หากเป็นปัญหากราฟอย่างเป็นทางการ) จะเป็นประโยชน์มากที่สุด
นี่คือตัวอย่างบางส่วนของสิ่งที่ฉันประสบความสำเร็จจนถึงเพียงแค่วางบล็อกแบบสุ่มและสร้างกราฟการนำทางจากจุดเริ่มต้น / สิ้นสุดที่เลือก แนวคิด (ตามที่อธิบายไว้ในลิงค์ก่อนหน้า) คือคุณเริ่มที่สีเขียว S และต้องการไปที่สีเขียว F. คุณทำสิ่งนี้โดยเลื่อนขึ้น / ลง / ซ้าย / ขวาและคุณดำเนินการต่อในทิศทางที่เลือกจนกว่าคุณจะตี ผนัง. ในภาพเหล่านี้สีเทาเป็นผนังสีขาวเป็นพื้นและเส้นสีม่วงคือความยาวต่ำสุดตั้งแต่ต้นจนจบและเส้นสีดำและจุดสีเทาแสดงถึงเส้นทางที่เป็นไปได้
นี่คือตัวอย่างที่ไม่ดีของกราฟที่สร้างแบบสุ่ม:
นี่คือตัวอย่างที่ดีของกราฟที่สร้างขึ้นแบบสุ่ม (หรือ tweaked ด้วยมือ):
ฉันก็ดูเหมือนจะสังเกตเห็นสิ่งที่ท้าทายมากขึ้นเมื่อเล่นเกมนี้จริง ๆ เพราะตัวต่อเป็นปริศนาที่มีโหนดระดับสูงจำนวนมากตามเส้นทางขั้นต่ำ