Tôi đang cố gắng tạo ngẫu nhiên một đồ thị có hướng cho mục đích tạo ra một trò chơi giải đố tương tự như các câu đố trượt băng từ Pokemon.
Đây thực chất là những gì tôi muốn để có thể tạo ngẫu nhiên: http://bulbanews.bulbagarden.net/wiki/Crunching_the_numbers:_Graph_theory .
Tôi cần có thể giới hạn kích thước của biểu đồ theo kích thước x và y. Trong ví dụ được đưa ra trong liên kết, nó sẽ bị giới hạn ở lưới 8x4.
Vấn đề tôi gặp phải không phải là tạo ngẫu nhiên biểu đồ, mà là tạo ngẫu nhiên một biểu đồ, mà tôi có thể vạch ra một cách chính xác trong không gian 2d, vì tôi cần một cái gì đó (như một tảng đá) ở phía đối diện của một nút, để tạo ra nó trực quan có ý nghĩa khi bạn ngừng trượt. Vấn đề với điều này là đôi khi tảng đá kết thúc trong đường dẫn giữa hai nút khác hoặc có thể trên chính nút khác, khiến toàn bộ biểu đồ bị phá vỡ.
Sau khi thảo luận vấn đề với một vài người mà tôi biết, chúng tôi đã đưa ra một vài kết luận có thể dẫn đến một giải pháp.
- Bao gồm các chướng ngại vật trong lưới như một phần của biểu đồ khi xây dựng nó.
- Bắt đầu với một lưới đầy đủ và chỉ cần vẽ một đường dẫn ngẫu nhiên và xóa các khối sẽ làm cho đường dẫn đó hoạt động.
Sau đó, vấn đề sẽ chỉ ra những cái cần xóa để tránh đưa ra một con đường ngắn hơn, ngắn hơn. Chúng tôi cũng đã nghĩ rằng một thuật toán lập trình động có thể có ích, mặc dù không ai trong chúng tôi quá giỏi trong việc tạo ra các thuật toán lập trình động từ không có gì. Bất kỳ ý tưởng hoặc tài liệu tham khảo nào về vấn đề này được gọi chính thức (nếu đó là vấn đề đồ thị chính thức) sẽ hữu ích nhất.
Dưới đây là một số ví dụ về những gì tôi đã hoàn thành cho đến nay chỉ bằng cách đặt ngẫu nhiên các khối và tạo biểu đồ điều hướng từ điểm bắt đầu / kết thúc đã chọn. Ý tưởng (như được mô tả trong liên kết trước) là bạn bắt đầu tại S màu xanh lá cây và muốn đến màu xanh lá cây F. Bạn thực hiện điều này bằng cách di chuyển lên / xuống / trái / phải và bạn tiếp tục di chuyển theo hướng đã chọn cho đến khi bạn nhấn Tường. Trong những bức ảnh này, màu xám là một bức tường, màu trắng là sàn nhà và đường màu tím là chiều dài tối thiểu từ đầu đến cuối, và các đường màu đen và các chấm màu xám thể hiện các đường dẫn có thể.
Dưới đây là một số ví dụ xấu về biểu đồ được tạo ngẫu nhiên:
Dưới đây là một số ví dụ hay về biểu đồ được tạo ngẫu nhiên (hoặc điều chỉnh bằng tay):
Tôi dường như cũng nhận thấy những thử thách khó khăn hơn khi thực sự chơi trò này như một câu đố là những câu đố có rất nhiều nút độ cao dọc theo con đường tối thiểu.