คำถามติดแท็ก graphs

3
ลดจำนวนขอบของกราฟทำให้เชื่อมต่อ
ฉันกำลังออกแบบเกมที่มีคุกใต้ดินที่สร้างแบบสุ่ม ฉันต้องการดูสิ่งนี้เป็นกราฟที่เชื่อมต่อและไม่มีทิศทางซึ่งโหนดเป็นห้องและขอบเป็นประตูหรือทางเดิน จากนั้นฉันเลือกโหนด "ด้าน" เป็นทางเข้าดันเจี้ยนฉันคำนวณระยะทางระหว่างทางเข้านี้และโหนดอื่น ๆ ทั้งหมดและตัดสินใจว่าหนึ่งในโหนดที่ไกลที่สุดคือ "เป้าหมาย" ของดันเจี้ยน (ที่ตั้งของสมบัติเจ้านาย เจ้าหญิง ฯลฯ ) ฉันเห็น 2 วิธีในการสร้างภูมิประเทศของดันเจี้ยนสุดท้าย: สร้างกราฟสุ่มครั้งแรกจากนั้นลองเติมโลก 2d ด้วยห้องพักในสถานที่สุ่มโดยคำนึงถึงการเชื่อมต่อที่ขอบ ฉันคิดว่านี่อาจเป็นเรื่องยากเพราะการสร้างห้องอาจ "ล็อค" พยายามที่จะติดตั้งห้องในที่ที่เป็นไปไม่ได้ สร้างห้องแรกโดยวางแบบสุ่มในตำแหน่งที่ต้องการจากนั้นจับคู่ผลลัพธ์กับโหนดและขอบ ฉันตัดสินใจที่จะลองสิ่งนี้ ความคิดของฉันประกอบด้วย: ก่อนอื่นให้สร้างห้องขนาดใหญ่ที่มีห้องใต้ดินทั้งหมด วางผนังด้านในห้องใหญ่ที่ตำแหน่งสุ่มแบ่งห้องใหญ่เป็นห้องเล็ก 2 ห้องที่แตกต่างกัน จากนั้นฉันก็แบ่งห้องแต่ละห้องออกเป็น 2 จนกว่าจะมีขนาดเล็กเกินไปหรือจำนวนห้องทั้งหมดถึงจำนวนสูงสุด (หรือเงื่อนไขอื่น ๆ ) ห้องใหม่แต่ละห้องเป็นโหนด เมื่อเสร็จแล้วฉันจะตรวจสอบแต่ละห้องและค้นหาห้องอื่นที่อยู่ติดกันโดยทำเครื่องหมาย 2 โหนดว่าเชื่อมต่อกันด้วยขอบ ด้วยวิธีนี้ฉันจึงมั่นใจได้ว่าห้องพักทุกห้องมีตำแหน่งที่เป็นไปได้ในโลก 2D และแมปอย่างถูกต้องโดยกราฟที่เชื่อมต่อ ปัญหาของฉันคือมีประตูและทางเดินเชื่อมต่อห้องมากเกินไป ดังนั้นฉันต้องการอัลกอริทึมที่ลดจำนวนขอบของกราฟที่ไม่ได้เชื่อมต่อที่ไม่ได้เชื่อมต่อแต่ให้เชื่อมต่อกับมัน (โหนดทั้งหมดสามารถเข้าถึงได้) ในตอนท้าย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.